I finished this project just as the Genesis Power Supply and temp regulator kit was made available for purchase. I couldn't stand the thought of junking my existing hardware so I built my own. I had a lot of fun. Here is what it looks like. Now that Rick has released the power supply and temp controller kit there isn't any reason to do this.



The electronics are mounted on a tray that slides in and out and is secured by the feet and two bolts in the back. This allows the case to be completely removed to service the unit. The backplane is also mounted on the tray so that no connectors have to be disassembled to operate the unit without the case.
The backplane connectors are an IEC 120v power jack, power to the Peltier, 15 pin power connector for the Genesis, and RJ-12 connector to the scope control pc, and a bnc jack which provides a 10mV/K temperature sense voltage.
The photo of the home built circuit board is the programmable current circuit.
The pc controls a dac which varies the Peltier current to vary the temp. The current is adjustable over 4096 steps with a max of 2.42A. The Peltier output is also voltage limited to 7.1V. I learned this was needed by melting down a Peltier device. Peltier coolers generally seem to behave much like a resistor, but this is deceptive. The 'resistance' varies with temperature and load on the device. It's possible to stay within the current and voltage limits at room temperature only to find that with current limiting alone the voltage rises above safe limits as the device cools. They don't fail immediately in this mode, but die after days to weeks of stress.
The feedback loop is closed by the digital multimeter pictured above. This meter has a serial interface to the pc which allows it to monitor the temperature with a resolution of .01C. The control program implements a proportional/integral controller. Some ingenuity was needed to prevent 'integral windup' and some experimentation was required to find the correct constants to tune the algorithm. Generally the controller can hold cold finger temp to .01C, but only when the camera is not being read out. Readout heats the CCD slightly and causes a temp excursion of about .03C above setpoint followed by the controller over correcting and causing a second excursion to about .02C below setpoint. This lasts 10-20secs, but the first two swings are over much quicker than that.
The control algorithm updates at 2hz. I also added a current slew rate limiter which prevents the Peltier from getting smacked around by the controller. It provides a ramped startup and shutdown. Initially the controller would 'freak out' every few hours. This turned out to be the result of dropping characters and losing sync with the serial stream. By refusing to use bad data and flushing buffers and re-syncing on bad data this was overcome. The longest continuous run so far has been at -20C for 12 hours. The limiting factor is the gradual increase in sump temperature. I am considering a 50gal sump, but making do by floating a tray of ice in the sump. Directly adding ice makes the controller steer a lot and degrades regulation.
![]() Here is a screen shot of 'Troll' the control program |
The current temp is displayed and there
are min and max indicators which are manually reset by
the button to their right. DAC Value is the current
output value in the range 0..4095. Error is the temp
error in degrees C. PTerm ITerm and Outval are internal variables and were displayed for debugging. They are so fun to watch that I left them in. The stop/start button engages and disengages the controller. Force max forces max output current to allow the operator to 'discover' the maximum possible cooling. I generally do this and then back off about 5C to give the controller 'head room'. Q-Factor is the average absolute error over the last 100 samples. The caption bar seen below allows you to monitor the controller while it is minimized. It shows the current temp and mode. Modes are 'Off','Ramp','On', and 'Stable'. If the controller is engaged and the slew limiter is active 'Ramp' is displayed. If the controller is engaged and not limited by the slew limiter, but the Q factor is above 1.0 then it is considered 'On'. The controller reports 'Stable' when Q-factor is less than 1.0. I'm considering adding an audible alert if the controller leaves 'Stable' mode without being disengaged.
And here is it caption bar. Note 'Troll' doll icon, I may later use the hair color to display status info. |