I am building a temperature controller that can maintain a chamber temperature by both heating and cooling. I am using a chest freezer as the cooler and a ceramic “lizard lamp” as the heater. I have been researching solid state relays vs. electromechanical relays for the application and I am having trouble getting a good answer. It seems everything points towards SSR (especially for interfacing with Arduino) if it is affordable for the application. Is there any technical reason to avoid SSR for a turning on a refrigerator compressor or a resistive heater?
Not in my opinion. Frankly, the only thing SSR's have against them is cost relative to an electromechanical relay for the same ratings.
Hopefully my bit of experience will help with your decision...
In my experience, refrigerator compressors need to be fully on or fully off, have a (sometimes huge) current surge when turned on, and need a bit of quiet time after they're turned off (can't be turned back on right away). Pulse-width modulation is not a good choice. I suspect a relay with good contacts would be the best choice.
In my experience, resistive heaters can be variably controlled. Pulse-width modulation is a good choice. If you need to vary the output of the heater, SSR is probably the best choice of the two.
When I did something similar we used a PID loop to control the temperature. The PID output was fed to a drum sequencer to turn the coolers on/off and the heater was used as trim.
An SSR (appropriately conservatively rated) should be fine to switch the compressor on and off. Yes, after its switched off, you should give it a few minutes (maybe 3?) to settle before switching it on again. While PWM will vary the output from a resistive heater, you won't find an SSR (and certainly no mechanical relay) that will switch as fast as the standard Arduino PWM outputs.
I believe it is possible to adjust the 'hardware' PWM output frequency, but hopefully someone else can explain how that is done to both of us!
Regarding the control algorithm, did you see this thread? http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1243714052
Thanks for the input. I had not seen that thread but when I start looking at PID control it will definitely be useful. Initially, I am just going to turn on the heating/cooling to keep the temp within 2 degrees. Its a brewing application, so the time constants are long so average temps will be fine.