Kegerator temperature controller

I am currently using a 5 cu. ft. chest freezer to hold two Cornelius "ball" style kegs. To get the temperature in a drinkable range, I wanted a simple plug-in temperature controller: no modifications of the freezer itself, since at some point I want upgrade to a larger freezer and convert the small one back to food use. By using Arduino as the temperature controller, I can easily control the temperature setpoint, differential, and data logging process, and it is relatively to add features in the future.

Parts list

I only wanted a single power cord running to the box, so I put in the smallest open frame AC/DC power supply I could find. For the other random electronic parts, I could easily drop by the Ax-man Surplus.

The controller is relatively straightforward. The temperature sensor is runs up inside the freezer, and it is placed in a glass of water to dampen fluctuations when the door is open, for example. The Arduino measures the temperature occasionally, and if it is too high, it activates the relay that connects power to the freezer plug. To prevent the power from cycling too frequently and potentially damaging the compressor, I program a setpoint (SP) and a differential (D) - the power stays off until the temperature T > SP+D, and it stays on until T < SP. With a setpoint of 4°C and a differential of 2°C, the power usually comes on every 12 hours or so, depending on the basement temperature, and stays on about 20 minutes.

The door monitoring system is straightforward: I use a light sensitive resistor in series with a fixed value resistor in a voltage-divider arrangement. The Arduino reads the analog voltage in, and when the lid is open, light strikes the sensor and raises the voltage above a threshold value. A message is sent to Twitter and there is a push notification on my phone, so I can see if anyone is drinking my beer!

Internet connectivity

Additional parts

To put the kegerator online, I needed to somehow connect to my router. As you can see from the parts list above, I chose to use another Arduino with an Ethernet shield, and I use a pair of XBee radio to communicate between the two Arduinos. This allows me to potentially add more sensors (and radios) later, with all the sensors talking to a central, internet-connected board.

The kegerator XBee sends serial information about the setpoint, the actual temperature, and whether the power is on or the door is open upstairs to the ethernet XBee. Then, the ethernet XBee/Arduino pair connects to ThingSpeak to log the data and to connect to Twitter: follow it @CloudKegerator!