Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] 2 degree problem with +0.1% constant temperature oven

Status
Not open for further replies.

amjadali56

Full Member level 3
Joined
Sep 17, 2007
Messages
151
Helped
39
Reputation
78
Reaction score
36
Trophy points
1,328
Location
Earth
Activity points
2,032
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?

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); 



}
 

FvM

Super Moderator
Staff member
Joined
Jan 22, 2008
Messages
49,160
Helped
14,393
Reputation
29,050
Reaction score
13,144
Trophy points
1,393
Location
Bochum, Germany
Activity points
283,322
Re: 2 Degree problem with +0.1% constant temperature oven

You have designed an on-off controller which will never be able to keep the actual temperature within a small error band.

You need proportional heater power control (e.g. using PWM) and a PI or PID controller.
 

amjadali56

Full Member level 3
Joined
Sep 17, 2007
Messages
151
Helped
39
Reputation
78
Reaction score
36
Trophy points
1,328
Location
Earth
Activity points
2,032
Re: 2 Degree problem with +0.1% constant temperature oven

You have designed an on-off controller which will never be able to keep the actual temperature within a small error band.

You need proportional heater power control (e.g. using PWM) and a PI or PID controller.

should i use arduino PID lib? how to calculate/compensate Stored Thermal energy in NiCr Road?
can i use 2 different sensor for more accuracy?
 

FvM

Super Moderator
Staff member
Joined
Jan 22, 2008
Messages
49,160
Helped
14,393
Reputation
29,050
Reaction score
13,144
Trophy points
1,393
Location
Bochum, Germany
Activity points
283,322
Re: 2 Degree problem with +0.1% constant temperature oven

should i use arduino PID lib?
Or any other PID library available to you.

how to calculate/compensate Stored Thermal energy in NiCr Road?
Not necessary when using a PID controller. Internal states, e.g. stored energy would be used in case of a state space based controller which might be applied to hard to control complex processes. To allow me an ignorant guess, it's completely over your head.

can i use 2 different sensor for more accuracy?
To achieve what, particularly? Two sensors could be used to implement a cascaded controller, e.g. an inner controller for the heater temperature and an outer controller for the actual target. Might be reasonable if the heater can't be precisely controlled by just the manipulated value, e.g. in case of a gas burner. An electric heater as a well known characteristic and don't need this stuff.

Your first post clarifies that managing the basic control theory (single loop PI or PID) is your next step.
 

KlausST

Super Moderator
Staff member
Joined
Apr 17, 2014
Messages
20,823
Helped
4,499
Reputation
9,010
Reaction score
4,565
Trophy points
1,393
Activity points
137,476
Re: 2 Degree problem with +0.1% constant temperature oven

Hi,

I agree with FvM.

The differential part makes to decrease the heating energy (rod temperature) BEFORE your oven reaches the setpoint temperature (50°C).

Example: from room temperature to 45°C the rod has full heating power = 100%. And maybe at 48°C it decreases the heating power to 50%.
The higher the rise rate and the closer the oven temperature is at the setpoint temperature the more it decreases the power.
This compensates for the stored heating energy in the rods.
***

The integral part eliminates regulation offset caused by the proportional regulation part.
***

Klaus
 

andre_luis

Super Moderator
Staff member
Joined
Nov 7, 2006
Messages
9,308
Helped
1,166
Reputation
2,351
Reaction score
1,152
Trophy points
1,403
Location
Brazil
Activity points
54,235
Re: 2 Degree problem with +0.1% constant temperature oven

or there is another way to do it?

An immediate workaround to reduce the oven temperature deviation could be achieved by splitting the heating ellement into 2 parts or more, controlling them independently. This way you would be able to quickly rise the temperature at the beggining of the process heating both, but after certain threshold performing the steady control by driving less power with just one of them, therefore having a smaller temperature "ripple". The suited scenario would be having different power heating values, one for hard control, and other for fine control.
 

amjadali56

Full Member level 3
Joined
Sep 17, 2007
Messages
151
Helped
39
Reputation
78
Reaction score
36
Trophy points
1,328
Location
Earth
Activity points
2,032
Re: 2 Degree problem with +0.1% constant temperature oven

An immediate workaround to reduce the oven temperature deviation could be achieved by splitting the heating ellement into 2 parts or more, controlling them independently. This way you would be able to quickly rise the temperature at the beggining of the process heating both, but after certain threshold performing the steady control by driving less power with just one of them, therefore having a smaller temperature "ripple". The suited scenario would be having different power heating values, one for hard control, and other for fine control.

Thanks andre. it lowered it to +-1C which may work around I think. i am also thinking of using traic.... thanks

- - - Updated - - -

Or any other PID library available to you.


Not necessary when using a PID controller. Internal states, e.g. stored energy would be used in case of a state space based controller which might be applied to hard to control complex processes. To allow me an ignorant guess, it's completely over your head.


To achieve what, particularly? Two sensors could be used to implement a cascaded controller, e.g. an inner controller for the heater temperature and an outer controller for the actual target. Might be reasonable if the heater can't be precisely controlled by just the manipulated value, e.g. in case of a gas burner. An electric heater as a well known characteristic and don't need this stuff.

Your first post clarifies that managing the basic control theory (single loop PI or PID) is your next step.

thanks for your keen interest and support!
only on thing to consider I am Botanist (my recent research is on an unknown plant for which this oven is needed) :cool: not electronic Engineer:wink: .... any thing about electronic which I know, learned it from this forum from beginning point zero to this stage since my membership. so that's true that PID is way head of me:bang:
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top