amjadali56
Full Member level 3
2 Degree problem with +0.1% constant temperature oven
Hello there!
i am building a 40°C to 100°C +1% oven for drying organic material at a constant Temperature.
Oven consist of 4 Heating Nichrome (NiCr) Rods.
A 10K thermistor (replaced with LM35).
ATMega328 & LCD. MCU read the temp and cutoff supply to rods at set value.
my problem is when i Set my temp say at 50°C it cutoff the heating rods at 50°C but the rods still Radiate its Stored Thermal energy and i get temp at 52 or 53°C which is intolerable.
i need a constant +1% temp.
what should i do,
should i use a different type of temp sensor?
do i need more then one sensor?
or there is another way to do it?
Hello there!
i am building a 40°C to 100°C +1% oven for drying organic material at a constant Temperature.
Oven consist of 4 Heating Nichrome (NiCr) Rods.
A 10K thermistor (replaced with LM35).
ATMega328 & LCD. MCU read the temp and cutoff supply to rods at set value.
my problem is when i Set my temp say at 50°C it cutoff the heating rods at 50°C but the rods still Radiate its Stored Thermal energy and i get temp at 52 or 53°C which is intolerable.
i need a constant +1% temp.
what should i do,
should i use a different type of temp sensor?
do i need more then one sensor?
or there is another way to do it?
Code:
#include <EEPROM.h>
#include <LiquidCrystal.h>
int tempPin = A0; // make variables// thermistor is at A0
int led =13;
int tempf;
float temp;
float settemp;
int swtu = 7;
int swtd = 6;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
byte customChar[8] = {
0b00100,
0b01110,
0b11111,
0b00000,
0b00000,
0b11111,
0b01110,
0b00100
};
byte customChar1[8] = {
0b01100,
0b01110,
0b01100,
0b01110,
0b01100,
0b11110,
0b11110,
0b11110
};
byte customChar2[8] = {
0b01010,
0b01010,
0b11111,
0b11111,
0b01110,
0b00100,
0b00100,
0b00000
};
void setup() {
pinMode (led,1);
Serial.begin (9600);
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("GC Buner ");
lcd.clear();
EEPROM.read (1);
}
void loop() {
lcd.createChar(0, customChar);
lcd.createChar(1, customChar1);
lcd.createChar(2, customChar2);
int tvalue = analogRead(tempPin);
float temp = (tvalue / 6.388888888889);
temp=(temp - 32)* 0.55555;
lcd.setCursor (0,0);
lcd.print("Temp= ");
lcd.print (temp);
//lcd.setCursor (0,8);
lcd.write(0b11011111);
lcd.print("C");
Serial.println (temp);
settemp = EEPROM.read(1);
delay (250);
if
(digitalRead(swtu)== 1 )
{
settemp ++ ;
}
else{ }
if
(digitalRead (swtd) == 1)
{
(settemp --);
}
else { }
if (temp > settemp)
{
digitalWrite (led, 1);
lcd.setCursor (14,1);
lcd.write((uint8_t)2);
///delay (750);
// lcd.setCursor (14,1);
//lcd.print (" ");
//delay (750);
}
else
{
digitalWrite (led,0);
}
lcd.setCursor (0,1);
lcd.print ("Set = ");
lcd.print (settemp);
lcd.write(0b11011111);
lcd.print("C");
Serial.println(settemp);
EEPROM.write (1,settemp);
lcd.setCursor (15,0);
lcd.write((uint8_t)1);
lcd.setCursor (15,1);
lcd.write((uint8_t)0);
delay (250);
}