Hello,
I starting with basic PID control set-up, with a DS18B20 temperature sensor connected to an Arduino UNO with a Real Time Clock (RTC) and controlling a silicon heater pad connected to an aluminum block. The setup is designed to begin a controlled heat ramp of the aluminum block at a set time each day. Currently everything is residing on my desk and so while the set temperature begins at 13C the sensor/block are already at 19C. Thus when the program is uploaded to the Arduino one would expect that the PID would not turn on the heater. What happens, however, is that the PID pulses the heater on and off for ~1 min right after upload before going quiet until the set temperature rises above the sensor temperature and the heat ramp commences.
My question is regarding this initial "on" behavior and if its normal? Does the PID need to "collect" some data before it really settles into control and "realize" that no heating is necessary? The problem is that the heater pad is really quite powerful and even 1 min of heating initially is really going to throw off the controlled heat ramp I have set up. After the initial min it does seem to settle in and work just great. I have played a bit with the tuning parameters to see if I could lengthen or shorten the initial heating period and I haven't seen a great deal of change in this initial behavior.
I have just tested my setup with a TMP36 sensor running on an analog rather than digital pin (DS18B20 is digital) and found that after two quick ~1s switches, the controller did not turn on the heater until the measured temperature went above the set temperature. So it appears this might be an analog vs digital sensor/signal issue, though I don't know why or how to work around it. I would rather use the DS18B20 sensors as they have proven work better over longer distances and the ability to use a slightly higher resolution eliminates some relay switching from the "jumpy" TMP36 sensor when controlling the heater.
I can provide the code I am using as well, but figured I would start with a description and then add the code if that would be helpful for troubleshooting.
Thanks for any assistance,
Nate