I wish to make an Arduino-controlled Peltier-device heater/cooler. Please look at on my plan and let me know if I've screwed up something.
I really like bananas, but I have trouble keeping them for long. I don't heat or cool my house very much, and so when it's cold out, my bananas never lose that green tinge and hardness. Or in the summer they get brown and yucky much too quickly. I want to make a box that will keep them at 72°F regardless of room temperature. Or maybe I'll experiment with slightly different temperatures. (Yes, I know I've got too much time on my hands. That's a wonderful thing about being retired.)
I want to make half a dozen of these boxes, to give to friends who share my frustration and relatives who can't duck me giving them one. I figure I'll make the boxes relatively fancy, probably wood with inlaid pictures of bananas, and maybe a double-layer plexiglas door. I figure I'll make the inside layer out of sheet metal (0.02" aluminum?) to conduct the heat, with the Peltier and a heat sink on the bottom and insulation between the inner metal box and the heat sink.
I bought some 15V 3.7A Peltier devices. I want to use a wall wart rated at 12VDC @ 1.5A. Based on the temperature difference (8 Kelvins max) and the conductivity values for wood and the size of the box, I think I'll need to move at most 3-4 watts of heat on a continuous basis. Even at only 50% efficiency, that's still well under the 18 watts I have available.
Since I need it to heat sometimes and cool other times, I need an H circuit controller for the Peltier. I found one based on the SN754410NE at nkcelectronics.com for $11. That chip is rated at 1A, so I think I'd need a 10 ohm 10 W resistor in series to limit the current. I plan to use pulse-width modulation, probably around 500 Hz, to drive the Peltier module.
Since I don't need to program the controllers but once, I think I'd use a BBB (Bare Bones Board) from ModernDevices.com. I'd get just one of the USB modules to use for programming, then remove that before installing the programmed board in the box. I'd have a couple of buttons and an LCD display so the user can set the desired temperature. I can't find a display cheaper than a 16x2, so that's what I'll use, even though I only need a few characters of output. ModernDevices again, for $9.
For sensing temperature, I'd use a couple of LM35s, one mounted to the inside metal box, one mounted to the outside heat sink.
OK, so to connect it all together:
12VDC input, plugs into BBB, which is mounted on the bottom near the heat sink. Motor controller shield plugs into BBB. The two LM35s connect to two of the A/D pins. The LCD connects to an output header. The two buttons connect to an input header. The Peltier connects to the output header on the motor controller, with the 10 ohm resistor in series with it.
The program would check the inside temperature and decide whether to run or idle. If it needs to run, set either heating mode or cooling mode. Then set the pulse width proportional to the temperature difference. I'm sure I'd have to determine the best parameters by experimentation. If the outside heat sink gets too hot, shut down and put a message on the display. This probably means that someone blocked the airflow on the heat sink and continuing to run risks ruining the Peltier module.
Press the red button for 2 seconds to go into "temp setting" mode. Click it again to toggle between up and down. Click the green button to actually move the setpoint. Press and hold the red button for 2 seconds, or just wait for 60 seconds to get back into run mode.
The display shows the setpoint temperature, the current inside temperature, the current heat sink temperature, and maybe the recent percentage of how much the device has run. If that number gets too high, maybe something is wrong, like blocked airflow.
So, what details have I gotten wrong? What might you change to improve this?
Thanks much,
Pat