My Herms Controller

Australia & New Zealand Homebrewing Forum

Help Support Australia & New Zealand Homebrewing Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.

bonj

Premier Ipswich Mash Proponent (PIMP)
Joined
1/12/06
Messages
2,816
Reaction score
13
Howdy Ya'lls...

About 4 years ago, I embarked on a HERMS controller project.

In true Bonj style, once I had it reading and displaying temperatures on the LCD, it suffered from my lack of focus and stagnated.

So, then after a few detours, chicanes and hairpin direction changes, I ended up with a PCB I was happy with, in a case I was happy with...
herms_rv2_3.jpg


Then it stagnated again for 2 months while I was too lazy to drive 5 minutes down the road to Jaycar and spend a measly $15 on IP67 rated pushbuttons.

But then....... at the beginning of last week...... I did! and:
herms_rv2_complete1.jpg

Then, in more of the Bonj signature project development style, with the end now being in sight, I sprinted to the finish and by Thursday afternoon, the code was complete!

The full feature list:
  • Up to 10 steps per mash program (each step contains a temperature and a time)
  • Number of steps configurable per program in the menu
  • 2 Preset mash programs (Zwickel's Ale, Zwickel's Lager) (possibility of more, or for changing the presets in the code (see below about open sourcing))
  • 2 Custom program slots (can load and save your entered program) (possibility for more than 2 custom slots(see open sourcing below), it just makes the menus a little longer to traverse)
  • DS18B20+ temperature sensor
  • PID controlled temperature
  • PID tuning parameters can be edited and saved for future use
  • Easy 3 button operation (left, right, select)
  • Code will be open sourced (when I decide on which license to use.... front-runners are BSD and GPLv2)
  • I'm thinking about incorporating the PID autotune library
Demo video of operation: http://youtu.be/FCLdmirBjeY.

Now I just have to get the heat exchanger to stop leaking, and I'll be ready to plumb it up and start tuning the PID for the system.... That might take me another couple of years :p
 
Neat splashproof control box... where was that sourced?

:icon_cheers:
I actually got this one from Aldi as a "waterproof first aid kit" for like $12 or something ridiculous. My local Jaycar sells the same ones with a black base instead of yellow. I believe they are around the $25-$30 mark. They have quite a wide range of sizes too, but I couldn't find them on their web catalog.
 
Well done fella! I will check back in another 4 years to see if you have brewed on this bad boy yet... :p

Seriously, anice build!
 
Well done fella! I will check back in another 4 years to see if you have brewed on this bad boy yet... :p

Seriously, anice build!
Thanks raven... You might be right about the timeframe, although I have a cunning plan up my sleeve involving bartering, which might just accelerate the process.
 
Bonj,
This is awesome. Really impressive.

I am interested in seeing the code when you are ready to share it.
 
Bonj,
This is awesome. Really impressive.

I am interested in seeing the code when you are ready to share it.
Thanks freek.

I have decided on the BSD license, which is at the top of the source file, and have uploaded the code to github: https://github.com/Bonj/HERMS_rv2

The arduino libraries and the PID library are licensed under the Creative Commons Share Alike license. I have used matho's modified version of the PID library with the I term clamping. He has made it available here: http://www.mediafire.com/?oo9e5b0t7g1l08w
 
Thanks for sharing this. I have never worked with micro-controllers like this, but now you have me interested in learning.

To get started with this project am I correct in saying the following is required?

* An arduino board with:
- 2 x inputs for LCD (connected to pin 7 and 9 as per your program)
- 3 x digital inputs for button switches (pin 14, 15, 16 in your program)
- 1 x analougue input (for DS18B20+ temperature sensor)
* LCD screen- compatible with LiquidCrystal.h header file (audrino website says Hitachi HD44780 or compatible?)
* DS18B20+ temperature sensor and header file onewire.h
* 3 x pushbuttons
* Power supply for board (will 12V light transformer do?)
* 1 x relay for switching heating element

Is your bonjuino board suitable for this application?

Am I on the right track here or is what I have written complete garbage?
 
now all you gotto to is brew a beer when you fix everything. That is if you remember how :p
 
Thanks for sharing this. I have never worked with micro-controllers like this, but now you have me interested in learning.

To get started with this project am I correct in saying the following is required?

* An arduino board with:
- 2 x inputs for LCD (connected to pin 7 and 9 as per your program)
- 3 x digital inputs for button switches (pin 14, 15, 16 in your program)
- 1 x analougue input (for DS18B20+ temperature sensor)
* LCD screen- compatible with LiquidCrystal.h header file (audrino website says Hitachi HD44780 or compatible?)
* DS18B20+ temperature sensor and header file onewire.h
* 3 x pushbuttons
* Power supply for board (will 12V light transformer do?)
* 1 x relay for switching heating element

Is your bonjuino board suitable for this application?

Am I on the right track here or is what I have written complete garbage?
Mostly, you are correct. The LCD actually takes 6 pins (HD44780 in 4bit mode). You don't need to use the same pins as I did in the code. In fact, if you change the LCD's pins, it would then be possible to add an ethernet shield. The pins as they currently are, conflict with the MISO/MOSI pins required by the ethernet and some other shields. The pin usage is commented in the bottom of the code (mostly for my own reference). Here is the relevant line from my code which sets up the LCD:
Code:
LiquidCrystal lcd(12, 2, 7, 8, 9, 10); // LiquidCrystal(rs, enable, d4, d5, d6, d7)
The DS18B20 temperature sensors are digital sensors and use the OneWire bus for communication. It uses a digital pin.
Any power supply between 7V and around 30V will do the job, however the higher the voltage, the more the regulator has to dissipate as heat, so the lower the better. I use a 9V wall wart, but 12V would be just as good.
The relay needs to be capable of being switched with 5V signalling. Solid state relays are perfect because they require very little current from the microcontroller and can be switched directly from a digital pin. Not to mention the constant switching on and off by the PID algorithm, which would be very annoying with a clicky relay, but would wear it out quickly.

The bonjuino is exactly what I have used on my HERMS controller... You can see a slightly more in depth build log here. You can see one of the last few pictures shows a bonjuino and a revision 2 HERMS PCB, which provides a convenient interface to the LCD, DS18B20, etc. You may also notice that it is different to the PCBs in the previous pictures.... just one of my detours :p

I demoed the controller at my local beer club meeting last night and it was nicknamed the "Mashturbator" by Browndog... I think the name will stick.
 
Nice I like :D
I've Made BrauDuino and Modified thanks to friends of the forum
in the Italian Language
I'll see if this project can also fit on single sided PCB
that we have changed in Italy is easier to do at home without going
from costly service
http://www.saviot.com/BrauDuinoItaly/PcbBirraDefinitivi/Brauduino-lc.jpg
Two questions but do not manage immisione Hops
Add to Bello would Buzer end step and Led Resistance or pump On
You can save another PIN using I2C LCD Modules
Why do not you use dallas library to read temperature so it is more accurate?
http://download.milesburton.com/Arduino/MaximTemperature

In Italiano
Bello mi piace :D
Io ho gia Realizzato BrauDuino e Modificato grazie ad amici di forum
in Lingua Italiana
Vedo se questo progetto puo andare bene anche sul PCB Monofaccia
che abbiamo modificato in Italia piu facile da farsi in casa senza andare
da costosi service
http://www.saviot.com/BrauDuinoItaly/PcbBirraDefinitivi/Brauduino-lc.jpg
Due DOmande ma non gestisci immisione Luppolo
Sarebbe Bello Aggiungere Buzer per fine step e Led Resistenza o Pompa Accesa
Puoi risparmiare altri PIN usando Moduli I2C per LCD
Perche non usi libreria dallas per leggere la temperatura cosi è piu preciso ?
http://download.milesburton.com/Arduino/MaximTemperature
 

Latest posts

Back
Top