I have started a project for my wife to upgrade her Clay toaster oven.
I have it almost complete, but one final task to make it complete.
I am using an Adruino mini, two temp. sensors, two relays, several buttons(for controlling temp and timer) and a display.
I can set the timer to run the proper length of time.
I can set the temp to turn off the heating elements when selected temp has been reached.
The problem is that the heating elements put out a lot of heat and over shoots the temp after they have been turned off. So that if you put 235 degrees as setting, the relays will turn off when that temp is reached, but temp my continue to rise another 20 or 30 degrees before hit starts to cool down. When temp gets to set point, the heating elements are turned on again and cycle starts over.
It is very important that temp stays within 1 or 2 degrees, so the overshoot is not acceptable.
My thought is to slow down say 20 degrees before desired temp is reached and pulse the heating elements for say 5 or 10 seconds until correct temp is reached. Then maybe pulse elements to maintain the proper temp.
Just not sure how to achieve that slow pulsing to get the right temp.
Any help will be welcome.
Please add the posting of code and wiring to Your post, all following the advice in the first topic "How to use this Forum".
You need a PID control loop - Google it.
“ It is very important that temp stays within 1 or 2 degrees”
Probably not realistic.
Google and read about:
Arduino PID
It is very important that temp stays within 1 or 2 degrees,
The temperature will vary by much more than that in different parts of the oven.
Use PI not D
Heating requies an 'anticipation'
Stop the constant power and start a PWM approach as you get within 25 degrees
If you can hold +/- 5 deg C consider your control very stable.
If you want accurate control.
Stop looking at temperature and rather look at BTU.
Temperature will ALWAYS lag heating.
BTU will offer a much more controlled approach.
FYI.. For those talking about it not being realistic to keep the temp with in 1 or 2 degrees, I have 3 temp probes and am using average of all three for ovens temp.
And the oven is in ceramic enclosure to help keep temp at constant level.
And same model oven from manufacture will keep the temp within 1 or 2 degrees, just did not have the ability to run more than 30 minutes. Most of her projects needs to bake for 1.5 to 3 hrs so she was always having to run to oven and reset timer before the 30 minutes were up and oven would cool quickly allowing the piece to crack due to the thermal shock.
Maybe the design engineers found some safety issue with running it longer than 30 minutes...
aarg:
Maybe the design engineers found some safety issue with running it longer than 30 minutes...
aarg:
Maybe the design engineers found some safety issue with running it longer than 30 minutes...
We can but an oven that does same as I am trying with Arduino, but those cost 400 to 500 dollars.
I have 3 temp probes and am using average of all three for ovens temp.
What is the typical variation among the three individual values?
jremington:
What is the typical variation among the three individual values?
within 2 degrees. Have 2 on bottom on opposite sides and one on top in middle of oven.
What kind if moonshine are You making that needs that precision?
It's very easy to ask for revolutionary precision but not having the Nasa budget, impossible to achieve.
Railroader:
What kind if moonshine are You making that needs that precision?
It's very easy to ask for revolutionary precision but not having the Nasa budget, impossible to achieve.
She is baking Polymer Clay.
To clarify, I am looking for ideas to help slow the temp climb as I get closer to required temp.
The process turns on relays, monitors temp and when reached turns off relays taking power away from heating elements.
What i want to do is say 20 degrees before temp reached, shut off relays, then turn them on and off for 10 or 15 seconds until temp is reached.
I just cannot wrap my head around this in the Arduino C++ environment. In VB I would just use a timer object to control the relays.
Is the heater (assume electric) made up of different coils ?
Have you any kind of profile graph of past runs ?
Then have you tried making timers in C++ ?
larryd:
Is the heater (assume electric) made up of different coils ?Have you any kind of profile graph of past runs ?
There are two heating elements. One on top and one on bottom. This is a standard Black and Decker Toaster Oven that has been wrapped in welders cloth(between inner and outer casing for insulation and put into a ceramic enclosure that I built to help with heat retention.
Polymer Clay....Okey
I have had lots of fun using Quick Basic! There's nothing that can't be done there..
Lots of coding here can be done knowing some C, simple old C.
Is heating controlled by relays? Would electronic switching like MOSFET transistors be possible? They could take PWM. In other words, make it possible to continuosly variate the power to the heaters and thereby slow diwn when getting close to the target.
Railroader:
Polymer Clay....OkeyI have had lots of fun using Quick Basic! There's nothing that can't be done there..
Lots of coding here can be done knowing some C, simple old C.
Is heating controlled by relays? Would electronic switching like MOSFET transistors be possible? They could take PWM. In other words, make it possible to continuosly variate the power to the heaters and thereby slow diwn when getting close to the target.
Using Arduino Relays. 120vac for heating elements controlled by 5vdc signal from Arduino.