EcoRenovator  

Go Back   EcoRenovator > Improvements > Appliances & Gadgets
Advanced Search
 


Blog 60+ Home Energy Saving Tips Recent Posts


Reply
 
Thread Tools Display Modes
Old 01-05-15, 08:00 AM   #71
SDMCF
Apprentice EcoRenovator
 
Join Date: Jul 2014
Location: Finland
Posts: 125
Thanks: 5
Thanked 35 Times in 34 Posts
Default

With my limited knowledge I don't see anything wrong with your use of those pins for the sensors or for the LCD but using them for both purposes at the same time sets off alarm bells to me. Have you seen anything documented to say it is possible to share the pins in that way? It looks unlikely to me and I would avoid it if at all possible.

SDMCF is offline   Reply With Quote
Old 01-05-15, 08:11 AM   #72
nkuck
Lurking Renovator
 
Join Date: Dec 2014
Location: USA
Posts: 13
Thanks: 1
Thanked 0 Times in 0 Posts
Default

I agree that what I am doing is not correct, but I don't know how to write the sketch properly and to wire it so that the lcd pins use the digital pins on the Arduino and the analog pins on the Arduino are just used for the LM34 temp sensors. I need to do more research. Thanks.
nkuck is offline   Reply With Quote
Old 01-05-15, 10:28 AM   #73
Daox
Administrator
 
Daox's Avatar
 
Join Date: Aug 2008
Location: Germantown, WI
Posts: 5,525
Thanks: 1,162
Thanked 374 Times in 305 Posts
Default

As long as you're not physically wiring the pins together, the arduino software is smart enough to differentiate the digital pins from the analog pins. That shouldn't cause any issues. If you want to test it, just comment out your LCD code and disconnect the LCD.

Do you have a link to the relay shield you're using? Are there any known issues with it?
__________________
Current project -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.



To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
&
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
Daox is offline   Reply With Quote
Old 01-05-15, 11:07 AM   #74
SDMCF
Apprentice EcoRenovator
 
Join Date: Jul 2014
Location: Finland
Posts: 125
Thanks: 5
Thanked 35 Times in 34 Posts
Default

Quote:
Originally Posted by Daox View Post
As long as you're not physically wiring the pins together...
The issue as I see it is not that he is wiring different pins together but that he is connecting 2 things (sensor and LCD) to the same pin. I would be very surprised if that can ever be reliable without some sort of multiplexing setup.

Agree about commenting out and disconnecting the LCD as a quick test.
SDMCF is offline   Reply With Quote
Old 01-05-15, 10:46 PM   #75
jeff5may
Supreme EcoRenovator
 
Join Date: Jan 2010
Location: elizabethtown, ky, USA
Posts: 2,431
Thanks: 431
Thanked 619 Times in 517 Posts
Send a message via Yahoo to jeff5may
Default

in post number 66, you define your sensor pins here:

Code:
int SsensorPin = 4; // the pin to read solar panel temperature
int TsensorPin = 5; // the pin to read water tank temperature
just comment out those lines and insert:
Code:
#define SsensorPin 1//Arduino analog pin where the Sensor1 is connected
#define TsensorPin 2//Arduino analog pin where the Sensor2 is connected
then change your analog sensors to pin a1 and a2 on the arduino board
if you want to keep them connected to the same pins, just change the 1 and 2 to 4 and 5. it should work better then.
defining pin locations as variable integers is risky business. you want to define them as constants to prevent murphy's law.

Last edited by jeff5may; 01-05-15 at 10:49 PM..
jeff5may is offline   Reply With Quote
Old 01-06-15, 09:15 AM   #76
nkuck
Lurking Renovator
 
Join Date: Dec 2014
Location: USA
Posts: 13
Thanks: 1
Thanked 0 Times in 0 Posts
Default

Thanks for the response. It does seem to add stability, but I am not sure why the #define function works better than the int function. I will dig in!
nkuck is offline   Reply With Quote
Old 05-18-15, 01:56 PM   #77
Daox
Administrator
 
Daox's Avatar
 
Join Date: Aug 2008
Location: Germantown, WI
Posts: 5,525
Thanks: 1,162
Thanked 374 Times in 305 Posts
Default

I found a small inaccuracy with the code today. I wasn't resetting the variable that is used to hold the sensor readings. So, for example, on the first run through it starts as 0, takes 10 readings, averages them to eliminate any noise over the lines. The second time through it reads that averaged number going into it, then adds 10 more values, then averages them. This definitely throws the true readings off. However, since its a differential controller, its not horribly important because both sensors will be off relatively the same amount. However, it is fixed now.

I've been having some issues with the attic fan not turning off like it should, so I've been troubleshooting. Here is the latest code.

Code:
/* Thermal Differential Controller

  The program monitors two temperature sensors and
  activates a relay when one sensor is warmer than
  the other.
*/

// Pin declaration
const int SsensorPin = 4;  // the pin to input heat source temperature
const int TsensorPin = 5;  // the pin to input sink temperature
const int RelayPin = 2;  // the pin to operate the relay
const int ledPin = 13;  // led pin (verify load power on condition)

// Variable declaration
int Ssensor = 0;  // variable to store the value of the heat source temperature
int SensorOnDiff = 0;  // variable to store the Ssensor value plus on differential (OnDiff)
int SensorOffDiff = 0;  // variable to store the Ssensor value plus off differential (OffDiff)
int Tsensor = 0;  // variable to store the value of the heat sink temperature
int SensorReadings = 15;  // number of sensor readings to take
int Counter = 0;  // sensor readings loop counter
int OnDiff = 6;  // temperature difference that must exist between heat and sink sensors before relay enables (degrees C)
int OffDiff = 2;  // temperature difference that must exist between heat and sink sensors before relay disables (degrees C)


void setup()
{
	pinMode(SsensorPin, INPUT);
	pinMode(TsensorPin, INPUT);
	pinMode(RelayPin, OUTPUT);
	pinMode(ledPin, OUTPUT);

	// Serial.begin(9600);

	digitalWrite(RelayPin, LOW);
}

void loop()
{

	// reset sensor variables and counter
	Ssensor = 0;
	Tsensor = 0;
	Counter = 0;
	
	// read sensor inputs and assign to variables
	while(Counter < SensorReadings)
	{
		Ssensor += analogRead(SsensorPin) / 2;
		Tsensor += analogRead(TsensorPin) / 2;
		Counter++;
		digitalWrite(ledPin, HIGH);
		delay(100);
		digitalWrite(ledPin, LOW);
		delay(100);
	}

	// smooth & calculate average temp from sensor inputs
	Ssensor = Ssensor / SensorReadings;
	Tsensor = Tsensor / SensorReadings;

	// add temperature difference to Ssensor value
	SensorOnDiff = Ssensor - OnDiff;
	SensorOffDiff = Ssensor - OffDiff;

	// if heat source is warmer than heat sink sensor, enable relay
	if (SensorOnDiff > Tsensor)
	{
		digitalWrite(RelayPin, HIGH);
		digitalWrite(ledPin, HIGH);
		delay(300000);
	}

	// if heat source sensor is cooler than heat sink sensor, disable relay
	if (SensorOffDiff < Tsensor)
	{
		digitalWrite(RelayPin, LOW);
		digitalWrite(ledPin, LOW);
		delay(1000);
	}

	// send temperature signals back to computer
	/*
	Serial.print(Ssensor);
	Serial.print(", ");
	Serial.println(Tsensor);
	*/
}

__________________
Current project -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.



To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
&
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
Daox is offline   Reply With Quote
The Following User Says Thank You to Daox For This Useful Post:
nkuck (05-18-15)
Reply


Tags
arduino, controller, differential, thermal


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -5. The time now is 07:39 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Ad Management by RedTyger
Inactive Reminders By Icora Web Design