arduioo-week

TEC cooled beer fermenter

Temperature control during fermentation is a key factor for the perfect home-brew, and it’s mandatory if you would like to brew like a professional. There are lot of techniques that are used to control classic fridge or heating element and lot of automation implementations—this project started out as a classic fridge modification, adding a thermo regulator in the range of fermentation and eventually a complementary heating element.

The idea is to leverage the Peltier effect—and a thermo electric cooler (TEC)—that is the main functional component in a lot of cooling applications as there are lot of advantage for controlling the temperature of a small amount of beer (small volume) trough an electronic device rather than using a classical mechanical compressor.

First of all you can modulate the power instead having an sharp on/off control, so you can achieve better precision and stability via a PID /PWM algorithm as well as reducing the power consumption, when the beer reach the stable set point (as the fermentation will produce a small amount of heat). The other key factor is that you can revert heating and cooling so you can compensate for your room temperature in summer and in winter—here is no need to coordinate two different process the e/o elements and the TEC are “all in one”

Final, the other intrinsic advantage is that there are no mechanical parts involved so you can design a very compact and low noise system for the home environment.

I have done many previous implementations (non-Arduino based), both with air to air exchange creating a fermentation chamber, and air-water exchange recirculating cool/hot water with a chiller inside the fermenter to chill the fluid.

TEC cooled fermentation chamber

Now I’m porting the solution to an Arduino based control system and I’m trying to set up the basic core code for both PID controlling temperature and PWM / H-bridge motor shield to drive the TEC

Arduino PID-PWM-HBrdige TEC controller

The block diagram shows my solution. Arduino read temperature from digital sensor (Dallas oneWire DS18B20 series) and the PID algorithm producing a PWM signal with variable duty cycle. The PID provides the “direction” of the control—either for heating and cooling—while the PWM signal and direction are sent to an H-bridge power device that (DC motor driver) that drives the cells. A fan speed is also controlled accordingly to power of the cells.

At this stage I set up a laboratory test enviroment with a single pettier cell, 2 heater exchangers, and 2 fans in order to develop and debug the control algorithm and the service logic

Arduino TEC test set up

One side of system with heating/cooling element and fan has been inserted in a ice cream polystyrene box in order to simulate the fermentation chamber.

TEC fermentation chamber

I was able to reach good stabilty with this air/air set up as demonstrated the below graph obtained with serial print value of the arduino PID.

PID control output

The next step is to scale the solution to the air-water heat exchanger and add all the end user interaction menu.


  • Pingback: SaluteArduino controlled TEC cooling/heating system for beer fermentation | Salute()

  • Mikito Ohara

    What is the purpose of beer fermentation by the way?

    Cooling Tower Australia

  • http://image-y.com Yanik Chauvin

    Great concept! I’m just learning to code. Would you be so kind as to share your code? Thanks!

  • Leif Persson

    Great project, I am new on coding would you be so kind to share your code??

  • Mothi Lal

    Can you share code. I am very much intersted to learn PID algorithm. BUt don’t know how to start.

  • Necro

    Nice write up. Have you ever fully implemented it? I’m also interested in your code if you are willing to share. Thanks

  • wrach

    Thanks Arzaman, could you kindly update us all on your project status. Have you continued to develop it? May followers here are interested in seeing your Arduino PID code as am I. Please share if you can!
    Great work!

  • sai

    May I know how you implemented the PID code.
    using Aurduino PID library or labview or matlab or any other thirdparty S/W?