Heat to user input value-coefficient calculated for each whole value in 30-40C range.
When temperature reaches that user value-coefficient, stop heating, and start monitoring temperature.
After temperature reaches user value -0.2C, start PWMing heater with about 10% of power x coefficient. (Which in plain number, translates as 6% at 30C, 18% at 40C).
Not all steps coded so far, but verified separately and the sustained temperature appears to be in limits of DS1820 hardware resolution, which is not bad.
Thermal equipment of that vintage is quite likely to have asbestos insulation. It's not a problem unless it becomes airborne. Be careful, asbestosis and mesothelioma are really bad ways to exit this world and are slow, painful ways to die.
Yeah I was thinking of that too.
You might have a problem on your hands asbestoes wise.
A couple of weeks ago I had the chance to buy a mint condition environmnetal cabinet (telephone booth size..remember those?)
...I walked...because I knew it had asbestos in it.
Further advanced the code, but can't write a code for the following scenario:
monitor the temperature, and when it starts to drop and drops by specific amount or below it, do something.
My code looks like this:
COMPARER:
GOSUB READTEMP 'Returns measured temperature as NEW variable
IF OLD>NEW THEN GOTO MAINTAIN
PAUSE 1
OLD=NEW
GOTO COMPARER
The problem is that OLD>NEW might be not always true, since there's certain jitter in measurement, so I want to check at least 10 times, before doing something. So how should I? add some variable, which increases by 1 each time when condition occurs, and after that variable reaches 10, do next task?
Industrial Control and Process Control both use the BASIC Stamp for temperature control.
Commercial temperature control modules use PID and Fuzzy Logic but they are not cheap.
Considering how old your unit is who knows what condition it's in. Measure how quickly the temperature drops after the heater is turned off. You could be lucky if you can get within 5 or 10 degrees of your target temperature.
Considering how old your unit is who knows what condition it's in.
I'm guessing the box and the heater element and the thermal insulation are probably about as good as they were in 1958.
What do you imagine would change so much there?
You could be lucky if you can get within 5 or 10 degrees of your target temperature.
Nonsense. With no control at all I could get you within that range manually. The oven in my kitchen does better than that with a "bang bang" thermostat.
Both PID and FUZZY control are cheap if you have a Propeller and the time, skill and patients to program it. That is what a hobby project is for.
You could always write a program that "learns" the settings it needs to get to and maintain a specific temperature. Once it has learned a specific set point it stores the parameters in eeprom. This is a small table for the temperature range you mentioned even if you use .5 degree steps.
I am assuming that you will be using a prop with a 64K eeprom (or something similar) and that the unit will be used in a heated space where the temperature only varies by a few degrees. If not there are ways to compensate for ambient temperature fluctuations.
:cool:
Sounds like a lot of variables that need to be addressed. I would analyze the chamber, as if it were a reactor. I would recommend
getting the book, "Perry' Handbook of Chemical Engineerng", to begin to analyze the chamber. Possible cooling and heating could
help reduce the cooling oscillations. Use the stamp as a way to control the energy to the heater via phase control. Pielter cells could
produce cooling. Just my thoughts. Good luck!
For what its worth, attached is a program that uses several common objects from a few good cowboys, JonnyMac, Beau Schwabe, and ElectricAye. The program was to emulate a Sous-vide cooker through PID control of a household crock pot. Components included a DS18B20 temp sensor and a Sharp S202S02 to control the AC current. Initially I used pots through an ADC to create the PID gains, but eventually I just manually entered them via BT and an old Android phone. The time constant for a crock pot is pretty long so I could get away with mostly P and D control and ignore the I gain, keeping the temperature to within a degree or so.
The PID might be good, but looking at formulas, I can't "see" the corresponding BS code, so I went my way:
1. Heat heater to defined temperature, which is 28.5C for 30C of user input, and 39.3C for 40C user input. These values are predefined for each 1C of user input.
2. After that temperature is reached, turn off heater and monitor the temperature, which will continue to grow.
3. At the moment, when temperature rise stops and starts to drop, turn on heater with specific low power, until the temperature reaches user input.
So far, this is doing quite fine, and I have achieved sustained temperature within resolution range of DS1820 (I had to refuse from LM71 for some reasons).
The main problem is as told above, code is quite large and not "clean", since I'm using workarounds for situations, where I believe, simpler solution is possible.
I was able to find the user manual, as well as schematics for the original design. The specs are as follows:
Range of sustainable temperatures: 28-55C.
Temperature maintain precision: +- 0.25C
Time to establish desired temperature: 8 Hours !
For my modification, final algorithm looks like this:
1. Pre heat to temperature defined by user - 2C.
2. Turn off heater and allow temperature to rise. Measure the rise time.
3. when temperature starts to drop, start to memorize the time it takes to reach the temperature when heater was on.
4. Based on values recorded in #2&3, cycle the heater in small portions.
I'm using DS1820 as temperature monitor, and it seems that I'm maintaining temperature at constant value, withing it's resolution range of 0.06C.
Comments
Heat to user input value-coefficient calculated for each whole value in 30-40C range.
When temperature reaches that user value-coefficient, stop heating, and start monitoring temperature.
After temperature reaches user value -0.2C, start PWMing heater with about 10% of power x coefficient. (Which in plain number, translates as 6% at 30C, 18% at 40C).
Not all steps coded so far, but verified separately and the sustained temperature appears to be in limits of DS1820 hardware resolution, which is not bad.
Yeah I was thinking of that too.
You might have a problem on your hands asbestoes wise.
A couple of weeks ago I had the chance to buy a mint condition environmnetal cabinet (telephone booth size..remember those?)
...I walked...because I knew it had asbestos in it.
monitor the temperature, and when it starts to drop and drops by specific amount or below it, do something.
My code looks like this:
The problem is that OLD>NEW might be not always true, since there's certain jitter in measurement, so I want to check at least 10 times, before doing something. So how should I? add some variable, which increases by 1 each time when condition occurs, and after that variable reaches 10, do next task?
Industrial Control and Process Control both use the BASIC Stamp for temperature control.
Commercial temperature control modules use PID and Fuzzy Logic but they are not cheap.
Considering how old your unit is who knows what condition it's in. Measure how quickly the temperature drops after the heater is turned off. You could be lucky if you can get within 5 or 10 degrees of your target temperature.
What do you imagine would change so much there?
Nonsense. With no control at all I could get you within that range manually. The oven in my kitchen does better than that with a "bang bang" thermostat.
Both PID and FUZZY control are cheap if you have a Propeller and the time, skill and patients to program it. That is what a hobby project is for.
I am assuming that you will be using a prop with a 64K eeprom (or something similar) and that the unit will be used in a heated space where the temperature only varies by a few degrees. If not there are ways to compensate for ambient temperature fluctuations.
Sounds like a lot of variables that need to be addressed. I would analyze the chamber, as if it were a reactor. I would recommend
getting the book, "Perry' Handbook of Chemical Engineerng", to begin to analyze the chamber. Possible cooling and heating could
help reduce the cooling oscillations. Use the stamp as a way to control the energy to the heater via phase control. Pielter cells could
produce cooling. Just my thoughts. Good luck!
Regards,
Steve
1. Heat heater to defined temperature, which is 28.5C for 30C of user input, and 39.3C for 40C user input. These values are predefined for each 1C of user input.
2. After that temperature is reached, turn off heater and monitor the temperature, which will continue to grow.
3. At the moment, when temperature rise stops and starts to drop, turn on heater with specific low power, until the temperature reaches user input.
So far, this is doing quite fine, and I have achieved sustained temperature within resolution range of DS1820 (I had to refuse from LM71 for some reasons).
The main problem is as told above, code is quite large and not "clean", since I'm using workarounds for situations, where I believe, simpler solution is possible.
I was able to find the user manual, as well as schematics for the original design. The specs are as follows:
Range of sustainable temperatures: 28-55C.
Temperature maintain precision: +- 0.25C
Time to establish desired temperature: 8 Hours !
For my modification, final algorithm looks like this:
1. Pre heat to temperature defined by user - 2C.
2. Turn off heater and allow temperature to rise. Measure the rise time.
3. when temperature starts to drop, start to memorize the time it takes to reach the temperature when heater was on.
4. Based on values recorded in #2&3, cycle the heater in small portions.
I'm using DS1820 as temperature monitor, and it seems that I'm maintaining temperature at constant value, withing it's resolution range of 0.06C.
You've got a nice, simple feedback loop going in your 4 steps. Nicely done, clean too. What is your time to stable temp?