Go Down

Topic: Controlling the Intensity of a Heater Element during a PID loop (Read 2526 times) previous topic - next topic

BigPapa

Hello all,

I'm new to Arduino, but have worked with Basic Stamps and some MikroBasic programs. I'm looking forward to sitting down and learning everything. I just don't have time for this one...

I've just ordered a Uno and LCD/button shield from adafruit for a project I need finished right away...

The task is to heat a big tub of solidified oil to get it to melt slowly for further packaging. If it is heated too fast, the product around the heater element burns and spoils the whole batch.

I'm basing this on the Sous-vide project, it seems like it has everything I need (almost)
http://learn.adafruit.com/sous-vide-powered-by-arduino-the-sous-viduino/the-whole-enchilada

The only problem is that it looks like it will bring it up to the setpoint temperature, but with no regard on how fast it does this.

Can someone advise how you would limit the intensity of the heater in this sketch?

In a perfect world I'd like to have a pot that would increase/decrease the duty cycle inside the PID loop - thus slowing the heating cycle.

I will be using an SSR and not a mechanical relay if that helps/matters.


Nick Gammon

Are you sure? The PID (proportional, integral, differential) algorithm is designed to manage the rate of change. With correct tuning you should be able to get it to go to your set point with a controlled rate of change. I would test on small quantities first, of course (eg. no oil at all).
Please post technical questions on the forum, not by personal message. Thanks!

More info:
http://www.gammon.com.au/electronics

PeterH

You can either design your controller to limit the rate-of-change of temperature it can achieve by limiting its control authority, or (IMO better) have the PID algorithm control to a target value which you adjust over time to define whatever temperature profiles you want. This is perfectly normal use of a PID.
I only provide help via the forum - please do not contact me for private consultancy.

retrolefty

The PID controller should have it's normal optimum tuning for fastest response with the smallest overshoot as classic control would have. How you manage the slow rise in temperature is to use setpoint management such that you have the program slowly ramp up the setpoint value from the starting temperature to the end desired temperature over the desired time frame involved. In other words the PID turning is independent of how fast you have your program ramp up the temperature by small increments of the setpoint value. This much how annealing furnaces work, not by playing with the PID controller but rather by timed changes to the setpoint per the heating curve you wish to create.

Lefty

Chagrin

You could just limit the strength of the heating element. Or keep your temperature probe in close proximity to the heating element to ensure you don't go over temperature.

craigcurtin


Hello all,

I'm new to Arduino, but have worked with Basic Stamps and some MikroBasic programs. I'm looking forward to sitting down and learning everything. I just don't have time for this one...

I've just ordered a Uno and LCD/button shield from adafruit for a project I need finished right away...

The task is to heat a big tub of solidified oil to get it to melt slowly for further packaging. If it is heated too fast, the product around the heater element burns and spoils the whole batch.

I'm basing this on the Sous-vide project, it seems like it has everything I need (almost)
http://learn.adafruit.com/sous-vide-powered-by-arduino-the-sous-viduino/the-whole-enchilada

The only problem is that it looks like it will bring it up to the setpoint temperature, but with no regard on how fast it does this.

Can someone advise how you would limit the intensity of the heater in this sketch?

In a perfect world I'd like to have a pot that would increase/decrease the duty cycle inside the PID loop - thus slowing the heating cycle.

I will be using an SSR and not a mechanical relay if that helps/matters.




You do not need to use a PID when you are talking about volumes such as this. However as you say you do not want to heat too fast to ensure there is no burning.

Basically you want to get a Solid State Relay with Zero Crossing support built in. What size element do you have ?

What you want to do it turn the element on and off many times per second to essentially lessen the power that it is outputting. You will have to experiment with this to find the appropriate numbers.

You do not need to use PWM (but could if you wish), just having a fairly tight loop and cycling the element repeatedly will give you the desired outcome.

With a Zero Crossing SSR you will be limited by how quickly you can cycle based on your mains frequency (but it will be more than fast enough for what you want to achieve)

Craig

BigPapa


You do not need to use a PID when you are talking about volumes such as this...

...Solid State Relay with Zero Crossing support built in. What size element do you have ?


Thanks all for the advice, I'll get it wired up today...

I do have Zero Crossing SSR's coming - I figured they couldn't hurt... The element is 4500 watts, It's big, and I could use something smaller to get the oil to warm more slowly, but at the end of the cycle I need all 4500 watts to get it super hot.

I agree that the large mass (~100 liters) may not even require PID.

I have something to work with now, thanks.

radman

Quote
The element is 4500 watts, It's big, and I could use something smaller to get the oil to warm more slowly, but at the end of the cycle I need all 4500 watts to get it super hot.


Have you considered two elements?

It would seem to me the critical point at which burning might occur is when the oil is solid. At that stage it will not be the oil temperature that is important but the surface temperature of the element. That might be difficult to control accurately with a high power element. To get the oil from solid to liquid and establish convection perhaps you could have a smaller element whose surface temperature can never get high enough to burn the oil. Once you have a liquid the larger element can be fired up.

nbm326


Have you considered two elements?


This seems right to me.

What type of heating element are you using?  What's the surface area of the element?  How hot is too hot for the fat?

polymorph

You could measure the temperature of the heating element by measuring its resistance. There is at least one temperature controlled soldering iron that measures temperature in that way.
Steve Greenfield AE7HD
Nick Gammon on multitasking Arduinos:
http://gammon.com.au/blink
http://gammon.com.au/serial
http://gammon.com.au/interrupts

radman

Quote
What you want to do it turn the element on and off many times per second to essentially lessen the power that it is outputting. You will have to experiment with this to find the appropriate numbers.


I have some questions on this;

  • What effect will switching 4.5kW, which is quite a large load, rapidly like this have on other electrical equipment in the area?

  • Will switching affect the lifetime of the element?

  • How would the element temperature vary with switching frequency?


craigcurtin



Have you considered two elements?


This seems right to me.

What type of heating element are you using?  What's the surface area of the element?  How hot is too hot for the fat?


Typically a resistive style heating element (i.e. hot water service) has the same density of heat in an element - they just vary the length of the element - thus adding additional elements will allow the unit to come upto temp more quickly but will do nothing to alleviate the initial issue. Although by having multiple elements - wired in series then you reduce the heat output of each element so it is valid in that respect.

Maybe a combination of the two - multiple elements in series and using a Zero crossing SSR to turn them on and off many times a second would be a good solution

Craig

craigcurtin


Quote
What you want to do it turn the element on and off many times per second to essentially lessen the power that it is outputting. You will have to experiment with this to find the appropriate numbers.


I have some questions on this;

  • What effect will switching 4.5kW, which is quite a large load, rapidly like this have on other electrical equipment in the area?

  • Will switching affect the lifetime of the element?

  • How would the element temperature vary with switching frequency?




As long as the SSR is rated to handle the load (and if it is a cheap EBAY job i would overrate it by at least twice) (The op has not said what Country he is in so do not know what his wiring situation is) then switching at the Zero Crossing point will have no effect on the rest of his electricity supply.

I have a 4.4Kw element here in Australia and i have been using it for about 3 years doing exactly this (running of a Picaxe micro - another job to transfer this function across to a Arduino at some point !) I make Biodiesel about once a week or so and have had not issues with the element.

Essentially - the element temperature will be halved if you switch at 1/2 the frequency of the mains

Craig

radman

Quote
Essentially - the element temperature will be halved if you switch at 1/2 the frequency of the mains


If the element temperature is halved will that not decrease its resistance resulting in more current flowing when the element is on?
Will the higher current not reduce element life?

Reading up on elements; The electrical power dissipated per cm2 by an element is called its surface loading or watt density and is expressed in W/cm2.

I also read
Quote
The temperature rises in accordance with the increase in the surface loading (watts density) and has a detrimental effect on the life of the element.


If you shop around is it not possible to find elements offering different watt densities, and hence lower surface temperatures, but still delivering the required total power?

BigPapa

Wow, Lots of good discussion here...

Quote
Have you considered two elements?


Yes, on the outside it seems good, but I tend to agree with some comments here that the surface area will be equally as hot as a larger elements area. ie; 1 cm2 on the small one will be just as hot as 1 cm2 on the large one...

Quote
a resistive style heating element (i.e. hot water service) has the same density of heat in an element - they just vary the length of the element - thus adding additional elements will allow the unit to come upto temp more quickly but will do nothing to alleviate the initial issue.


Bingo, I think this is true...

Quote

What type of heating element are you using? 


It is indeed a hot water heater element...

Quote
The op has not said what Country he is in


Canada, it will be running 2 phase 220V




Thanks for all the good info here guys, I think I'm on the right track.

I've got my uno here last night and built up a couple of shield kits and tested some code PIDing a lightbulb via a ds1820.

I still need to get a bunch of welding done on stainless drums before I can fit the heater element... I may need to resort to testing with an electric tea kettle...

Go Up