CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to support@ccsinfo.com

Help needed on temperature algorithm

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
freesat



Joined: 08 Feb 2011
Posts: 32

View user's profile Send private message

Help needed on temperature algorithm
PostPosted: Fri Dec 16, 2011 4:08 pm     Reply with quote

Hi Guys.. i want some help.

I will build a pwm temperature controller to keep temp starting in ambient temperature and stay on 75ºc. When temperature is low, I want to put 100% and decrease to necessary duty when is coming at 75ºc, but not with a fixed pwm table or code.

1-My hardware is ready, with analog LM35 on AN1, Triac PWM on RB4, and Zero Crossing on RB0.
2-Analog read is ready too, value in Celsius already on var named "temp".
3-Zero Crossing and PWM is ready, working.

I need an idea on how to compare analog read temp, and put it on duty cycle.


symbolic code...
Code:

if ( temp < 65 ) { dutty = 100% }
else {
  if ( temp == 66 ) { dutty = 80% }
  if ( temp == 67 ) { dutty = 70% }
  if ( temp == 68 ) { dutty = 65% }
  if ( temp == 69 ) { dutty = 60% }
  if ( temp == 70 ) { dutty = 55% }
  if ( temp == 71 ) { dutty = 50% }
  if ( temp == 72 ) { dutty = 45% }
  if ( temp == 73 ) { dutty = 40% }
  if ( temp == 74 ) { dutty = 35% }
  if ( temp == 75 ) { dutty = 30% }  /* on this example 30% is ok to keep temperature on 75ºc */
}


What is the best algorithm to do this without use fixed code or tables? any help will be apreciated.

Thanks

Rocha
temtronic



Joined: 01 Jul 2010
Posts: 9164
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Fri Dec 16, 2011 4:24 pm     Reply with quote

There is no 'best' algoritm, really. I'd try what you have a see 'how it works' in the real world. Temperature controllers are generally slow devices,taking minutes to hours to get whatever it is to the right temperature.They also tend to cool down slowly as well.
It depends upon the mass of the object,difference in ambient vs. desired,and 'tightness' of control( 1*C or .01*C).What algorithm works for me in my solar panels might be ok for you or could just as easily be to 'slow' and 'rough' for your purpose.
I'd suggest testing a 100% until at the setpoint,turn off,let cool, recording time vs. temp. Repeat 3 times, average stuff out, then say test 100% on until say within 10* or setpoint, ramp back to 75%, recording all the data. It'll give you a 'feel' for the response of the heater,controller,etc.
You may be suprised that a simpler 2 or 3 'step' approach may be fine for your application.
It's all in the real world testing, gathering data and seeing how the 'system' responds.
Mike Walne



Joined: 19 Feb 2004
Posts: 1785
Location: Boston Spa UK

View user's profile Send private message

PWM code
PostPosted: Sat Dec 17, 2011 4:03 am     Reply with quote

Your table reduces very approximately to

dutty = (81 - temp) * 5%

You may then need to restrict dutty to the range 0% to 100%.

Like temtronic says, give it a try.

Once you've got a feel for what happens you can adjust accordingly.

Your proposal looks like the P part of a PID control. It can work quite well for some systems. You manipulate the formula to get tighter control.

Mike
FvM



Joined: 27 Aug 2008
Posts: 2337
Location: Germany

View user's profile Send private message

PostPosted: Sat Dec 17, 2011 4:41 am     Reply with quote

The formula shown by Mike represents your table except for the gain increment above 70% d.c, as said it's a P controller. The P gain (now 0.05/degree) has to be adjusted for stable control system behaviour. If you increase it above a certain limit value, the temperature and duty cycle will show continuous oscillations, at worst swing over 0 to 100% duty cycle permanently.

The main disadvantage of a pure P controller is the offset between actual value and setpoint, varying with heating power demand. Many simple technical controllers are P controllers, like the mechanical thermostatic valves at a radiator or a temperature controlled mixer tap.

Electronical controllers are mostly of the PI or PID type. For temperature controllers without specific requirements, I would refer to PI. A PI controller adds an integral term that cancels the offset.
gpsmikey



Joined: 16 Nov 2010
Posts: 588
Location: Kirkland, WA

View user's profile Send private message

PostPosted: Mon Dec 19, 2011 1:43 pm     Reply with quote

If you have not played with PID controllers before, you may want to investigate this link:
http://en.wikipedia.org/wiki/PID_controller
for a basic understanding of what they are and how they work. I created one a while ago that was a PI controller (and limited the "I" contribution until it got up into the control range to avoid the "integral windup" problem).

mikey
_________________
mikey
-- you can't have too many gadgets or too much disk space !
old engineering saying: 1+1 = 3 for sufficiently large values of 1 or small values of 3
freesat



Joined: 08 Feb 2011
Posts: 32

View user's profile Send private message

PostPosted: Wed Dec 28, 2011 2:14 pm     Reply with quote

I want to say thanks.

The answers helped me a lot!

Now, my temperature controler is working perfectly.

Thanks...
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group