The braumiser, my braumeister inspired rig

Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum

Help Support Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum:

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

matho

Active Member
Joined
Jan 21, 2012
Messages
42
Reaction score
20
Location
hazelbrook
I have been wanting to build a small batch brewery for a while now so last year I started to build a 9 liter (2.5 gal) braumeister style rig. I started off with a 20l ( 5.3 gal) pot which i added 3 feet to and a center rod. I then added a 1.75 kw low density (35w/square inch) electric element and a pump, I first started off with a small 12v pump that said it was made out of food grade plastic but after a couple of uses there was still a strong plastic flavor and smell coming off it so i changed to a march pump. I made a controller based on a PIC 18F2520 microcontroller and i programmed it to follow the braumeister controller. There is basically 3 selections, manual, auto and setup, in manual mode the temp is adjusted by the up and down buttons and the pump and heating elements are turned on and off by the enter and start buttons, this allows you to control it completely manually but with a PID algorithm controlling the temperature. The auto mode runs off a preset number of steps that is entered in the setup menu, there are 6 steps available, a mash in step plus 5 others, a boil time of up to 2 hr. I have deviated from the braumeister by adding 5 hop addition alarms, a delay start of up to 18hrs and the ability to jump steps in the auto mode. I have brewed on it a number of times now and have found a problem with the initial design of the top filter plate which i have fixed.
here a a few pics
branding_3.jpg


newfilter2.jpg


marchpump2.jpg


braumiser_8.jpg


I have also created a ZIP file with a few PDF's on the build and also the HEX file for the PIC and the picbasic code for it

http://www.mediafire.com/?ldfgsrmu6l3iapi

cheers steve
 
wow! When I first clicked on this thread and quickly scanned through the pics, I honestly thought it was a braumeister that you modded. good job on replicating it!!

Where do you get that bendable heating element?
 
here in OZ i got it from a place called thermal electric elements, I did a quick search and found thishttp://www.omega.com/toc_asp/subsectionSC.asp?book=Heaters&subsection=e01 place in the US that sells them. I was fairly difficult to bend the tight radius bends and if i did it again i would ask the factory to do it, after all when I'm paying $130 for a 316 stainless steel element I'm sure they could bend it for me with not too much extra charge

cheers
 
as can be seen in the top photo the small pot holds the grain, it has the bottom cut out of it and i used 3/8 heavy duty silicon hose for the seal on the bottom, then there is a bottom filter plate with filter material, then the grain and then a top filter plate with filter material, all held in place by the top bar and wing nut
Ill post pictures when i can
 
If I were you , start producing more models and look for temporary investors and
disposable income.

hehe as I'm ripping off the braumeister I don't know how well that would go down.
The reason I made all the information available is I want people to go out and make one.
After a few requests here in Australia for the controller I'm working on a Braumiser shield for the Arduino I have already made a prototype board and I'm working on a program for it, being arduino based it will be open sourced, I am planning on getting 10 PCB's made up for here in Australia.

braumiserv2_2.JPG


Braumiser_7.JPG
 
Looks like a nice solution!

I have a similar system, but I opted to just pump water on top of the grain bed, instead of under it. Reason why I did it because I had issues finding a heating element that isn't in the way and because I wasn't sure how to get the seal between the bottom and the "mash tun". Works out pretty darn well. I was going to create some kind of controller for alarms and such but currently am just using a auber instruments pid controller.

What do you use as a filter where the wort leaves the internal mash tun?
 
the bottom filter is made out of polyester sheer material, the same stuff as hop bags are made out of and the top filter is made out of an IKEA splatter guard so its fine stainless steel mesh
 
/*
brauduino semi automated single vessel RIMS
created by s.mathison
Copyright (C) 2012 S.Mathison

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.*/

//libraries
#include <EEPROM.h>
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <PID_v1.h>
OneWire ds(11);
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
// push buttons
const int Button_up = A3;
const int Button_dn = A2;
const int Button_prev = A1;
const int Button_nxt = A0;
// outputs
const int Heat = 9;
const int Pump = 8;
// variables
int WindowSize = 5000;
unsigned long windowStartTime;
double Setpoint, Input, Output;
boolean autoLoop = false;
boolean manuLoop = false;
boolean waterAdd = false;
boolean Conv_start = false;
boolean mpump = false;
boolean mheat = false;
boolean wtBtn = false;
float mset_temp = 35;
float Temp_c;
int temp;
byte mainMenu = 0;
byte setupMenu = 0;
byte pidMenu = 0;
byte autoMenu = 0;
byte stepTime;
byte pumpTime;
byte data[2];
byte i;
byte Busy = 0;
//Specify the links and initial tuning parameters
PID myPID(&Input, &Output, &Setpoint,200,5,3, DIRECT);
void setup()
{
// Start up the library
lcd.begin(16,2);
pinMode (Button_up,INPUT);
pinMode (Button_dn,INPUT);
pinMode (Button_prev,INPUT);
pinMode (Button_nxt,INPUT);
pinMode (Heat,OUTPUT);
pinMode (Pump,OUTPUT);
windowStartTime = millis();
//tell the PID to range between 0 and the full window size
myPID.SetOutputLimits(0, WindowSize);
myPID.SetMode(AUTOMATIC);
}

void loop()
{
switch (mainMenu){
case (0):
Temperature();
lcd.setCursor(0,0);
lcd.print("The Brauduino");
lcd.setCursor(0,1);
lcd.print("Temp=");
lcd.setCursor(6,1);
lcd.print(Temp_c);
//read the buttons for menu selection

if (digitalRead(Button_dn)==0){
delay(1000);
if (digitalRead(Button_dn)==0){
lcd.setCursor(0,0);
lcd.print(" Manual ");
lcd.setCursor(0,1);
lcd.print(" ");
mainMenu=1;
while(digitalRead(Button_dn)==0){
}
}
}
if (digitalRead(Button_prev)==0){
delay(1000);
if (digitalRead(Button_prev)==0){
lcd.setCursor(0,0);
lcd.print(" Auto ");
lcd.setCursor(0,1);
lcd.print(" ");
mainMenu=2;
while(digitalRead(Button_prev)==0){
}
}
}
if (digitalRead(Button_nxt)==0){
delay(1000);
if (digitalRead(Button_nxt)==0){
lcd.setCursor(0,0);
lcd.print(" Setup ");
lcd.setCursor(0,1);
lcd.print(" ");
mainMenu=3;
while(digitalRead(Button_nxt)==0){
}
}
}
break;

case(1): //manual mode
delay(1000);
lcd.setCursor(0,0);
lcd.print(" Water added? ");
lcd.setCursor(0,1);
lcd.print(" Yes Quit");
wtBtn = true;
while (wtBtn){
if (digitalRead(Button_prev)==0){
manuLoop = true;
wtBtn = false;
while(digitalRead(Button_prev)==0){
}
}
if (digitalRead(Button_nxt)==0){
mainMenu = 0;
wtBtn = false;
while(digitalRead(Button_nxt)==0){
}
}
}
while (manuLoop){
Temperature();
Setpoint = mset_temp * 16;
Input = Temp_c * 16;
lcd.setCursor(0,0);
lcd.print(" Manual Mode ");
lcd.setCursor(0,1);
lcd.print("ST=");
lcd.print(mset_temp);
lcd.setCursor(8,1);
lcd.print("AT=");
lcd.print(Temp_c);
if (digitalRead(Button_up)==0){
delay(200);
if (digitalRead(Button_dn)==0){
digitalWrite(Heat,LOW);
digitalWrite(Pump,LOW);
mainMenu=0;
manuLoop = false;
lcd.clear();
}
else{
mset_temp= mset_temp+0.25;
}
while (digitalRead(Button_up)==0){
}
}
if (digitalRead(Button_dn)==0)
{
delay(200);
if (digitalRead(Button_up)==0){
digitalWrite(Heat,LOW);
digitalWrite(Pump,LOW);
mainMenu=0;
manuLoop = false;
lcd.clear();
}
else{
mset_temp= mset_temp-0.25;
}
while (digitalRead(Button_dn)==0){
}
}
//turns heat on or off
if (digitalRead(Button_prev)==0){
while(digitalRead(Button_prev)==0){
}
if (mheat==false){
mheat = true;
}
else{
mheat = false;
digitalWrite(Heat,LOW);
}
}

//turns the pump on or off
if (digitalRead(Button_nxt)==0){
if (mpump == false){
mpump = true;
digitalWrite(Pump,HIGH);
}
else{
mpump = false;
digitalWrite(Pump,LOW);
}
while(digitalRead(Button_nxt)==0){
}
}
if (mheat){
PID_HEAT();
}
}
break;
case(2):
if (digitalRead(Button_up)==0){
delay(100);
if (digitalRead(Button_dn)==0){
mainMenu=0;
while ( digitalRead(Button_dn)==0){
}
}
}
break;
case(3):
if (digitalRead(Button_up)==0){
delay(100);
if (digitalRead(Button_dn)==0){
mainMenu=0;
while ( digitalRead(Button_dn)==0){
}
}
}
break;
}
}
void Temperature(void)
{
ds.reset();
ds.skip();
// start conversion and return
if (!(Conv_start)){
ds.write(0x44,0);
Conv_start = true;
return;
}
// check for conversion if it isn't complete return if it is then convert to decimal
if (Conv_start){
Busy = ds.read_bit();
if (Busy == 0){
return;
}
ds.reset();
ds.skip();
ds.write(0xBE);
for ( i = 0; i < 2; i++) { // we need 2 bytes
data = ds.read();
}
unsigned int raw = (data[1] << 8) + data[0];
Temp_c = (raw & 0xFFFC) * 0.0625;
Conv_start = false;
return;
}
return;
}
void PID_HEAT (void){
myPID.Compute();
/************************************************
* turn the output pin on/off based on pid output
************************************************/
unsigned long now = millis();
if(now - windowStartTime>WindowSize)
{ //time to shift the Relay Window
windowStartTime += WindowSize;
}
if(Output > now - windowStartTime) digitalWrite(Heat,HIGH);
else digitalWrite(Heat,LOW);

return;


}



well I have had some time to start writing the code for the brauduino, the controller I building for the braumiser that uses an arduino. I have got the manual mode going now I have to write the auto mode and setup parts of the code but the basic building blocks are there.

cheers steve
 
well I have finished the code for the brauduino, an arduino based shield for a braumeister style rig.
I have added more features to it than my first controller
up to 9 steps in the mash schedule
brownout and power interruption recovery, allows you to resume where the unit was at the power interruption, it also allows you to stop the process change a setting and pick up where it left off
up to 8 hop alerts
as with the old unit full PID temperature control, built in pump rests, adjustable PID parameters, manual mode and auto mode.

Ill post schematics and code after I have tested it a bit more.
here are some pics of the prototype.

SANY1611.jpg


SANY1612.jpg


cheers steve
 
Awesome work Steve!

thanks for that, I have put a lot of work in developing the adruino based controller but I probably will stay using my PIC based system, the reason for going with the arduino is it is an easier platform for the vast majority to access with a good IDE and easy programming via USB. The Idea is to be able allow lots of people access to a cheap intergrated single vessel RIMS controller.
I will be making up kits for the shield but for the time being only 10 and I'm going to keep postage here in Australia. Ill be posting the schematic and the code and all relevant information so people can build one themselves.

cheers steve
 
Looks nice!

Might want to split the code up a bit, it's a bit overwhelming to see how everything works in such a large document :)

The control panel is pretty clean and probably nice to use? What do you think the cost of the box has been?
 
Looks nice!

Might want to split the code up a bit, it's a bit overwhelming to see how everything works in such a large document :)

The control panel is pretty clean and probably nice to use? What do you think the cost of the box has been?

the cost of the box to build is around $150 aud which at the moment is very close to the us dollar

cheers steve
 
the cost of the box to build is around $150 aud which at the moment is very close to the us dollar

cheers steve

Hey Steve,

Nice work, I'm looking at have a bash at replicating this myself in the coming months for my small batch brews (wondering how it'll handle some bigger grain bills for Imp. Stouts etc too if you've attempted any?)

Do you have a 'parts' list of sorts for the hardware used/any recommendations on where to source it? (Kmart etc?) I can work it no worries, was just asking as it might save me some running around (why reinvent the wheel situation).

You mentioned you were getting 10 or so of the controllers made up? How did they go and are you interested in selling them? If so what sort of dollar value would you want?

Cheers mate
Dean
 
Very very cool… after the completion of my single vessel braumeister clone controlled by SESTOS PID regulator I’m moving to and Arduino based controller too !

Single%2520Vessel10.jpg


I love arduino philosophy …and I come from the town (Ivrea) where arduino team has developed the board and the system (I live not so far from Arduino Road..:) )

A part from this I would like to evolve the system replacing the static PID temperature control with a time based programmable system (mashing steps , boiling…) and in the future also some flow and valve automation.

Off course I’m following your brauduino project as well other project (brewtroller, habs..) in order to get inspiration, ideas, suggestions..

I have just sourced an arduino board and some shield (display, temperature sensor…) and I’m playing with basic sketch.. just to getting started and understand the basic concept and I/O management
As soon as I have passed the getting started phase maybe I can contribute to this thread and project

Thank you matho for sharing your development

Davide
 
hey claudiobr74, the relay can be changed for any 12v relay if you are making up your own circuit, with the PCB's I have made it can't be done because the footprint is unique to that relay.

cheers steve

edit: an omron G5Q-1 can be used too and its rated at 10 amps instead of 5
 
Hi Matho

Nice setup.

I am looking to automate, and have come across a couple of useful places like yours to assist. Do you have more info on the running of the device? Perhaps a manual?
 
Hi Philgil,
I have put together a zip file that contains all the files I used to make the controller including schematics and PCB design, it also includes a construction manual and user manual. I don't mind people using the information for themselves but i don't want to see it used for commercial gain.

Brauduino ZIP

Hope this helps you with your setup

cheers steve
 
Hey Matho,

This project looks great! I think I'm going to try to build one myself based on your PDF. Do you have a total cost for the build?
 
hey Mike,

the cost was about $600, but $95 of that was for a pump I didn't end up using and the march pump cost about $200. The controller should cost about $170 to put together

good luck with

cheers steve
 
Hello
where can i buy the brewmisershield? i want to build the Controller an use it in my homebrewery ( remise-braui.ch ).
thanks for the graet code.
remo
 
Guys most of this was built in Aus using our Jaycar part numbers
Jaycar buy from either Farnell or RS.

For pumps I recommend finding people on Alibaba and asking for samples, the green pumps are excellent march pumps and food grade with good impellers.
The brown pumps vary in quality, make sure they are food grade, up to 150 degrees (or at least over 110) and get samples - price of pump = gone.

Bendable elements are also GOLD!
 
Hello
where can i buy the brewmisershield? i want to build the Controller an use it in my homebrewery ( remise-braui.ch ).
thanks for the graet code.
remo

Hey remo,

I don't have any PCB's left but I would not mind if someone in the USA does a run of PCB's and sells them to interested people. You don't need the PCB as you can use a prototyping board, it just won't be as neat. In the http://www.mediafire.com/?ji79nrtwvk3gga2 ZIP file there are all the eagle schematics and board files so that anyone can produce their own PCB files to send to a PCB manufacture. I used Fusion PCB service http://www.seeedstudio.com/depot/fusion-pcb-service-p-835.html?cPath=185 there is a guide on how to make the Gerber files needed to make the PCB's too.

cheers steve
 
Well I for one would definitely be willing to run the order.

Everyone, let me know via PM if you're interested. First step is to see how many are interested, then we'll go from there getting the boards and then possibly a big DigiKey/Mouser order for components.
 
Hi Matho,
Thanks for all of the hard work on the Brauduino. I have just completed build on a system using your code. I was planning on a system similar to the High Gravity BIAB system, but with an Arduino conrtoller. I had most of the parts for the build when I stumbled across your posts. The code was easy to adapt. I built it using an Arduino Proto shield.
Differences:
I wired the buttons straight to the Arduino and used the INPUT_PULLUP instead of external pull-up resistors.
I wired the Arduino output straight to the SSR.
I'm using a logic level MOSFET to drive the pump instead of a relay (I may use the PWM capability at some point to control the pump flow rate).
I didn't use LEDs on my build. I modified the code to display "H" and "P" in the first character positions of line 1 and 2 on the LCD display when either the pump or heater are active.
I modified the code to display in degrees F.

None of these changes are better, just how I had planned to build the system before I found your posts.

So far I'm waiting on a pump and have wired the system to 120V for checkout. I have had the system heating and boiling water.

Question for you guys:
I have a 5500W heater element. Would it be good to directly control the % heater output during the boil instead of using temperature control? or can you effectively control boil rate with temp? I ask because the HighGravity system allows you to switch off the PID and manually control the heater output during the boil. I've started to mod the code to allow this, but am wondering if it is worth the effort.

Thanks,
Mike
 
I can't speak to the arduino factor, but boiling water is 212*F (or there abouts) regardless of whether it's a slow boil or a raging boil. I have yet to actually brew a batch using a PID or electric element, but most everyone on the boards uses a temperature set point to get NEAR boil (so they can set and forget) and then change to manual at around 50-65% depending on the size of the element / quantity of wort to boil

So, in short, control the heater output and don't try and maintain boil with a temperature control.
-Kevin
 
Hi Matho,
Thanks for all of the hard work on the Brauduino.

I agree! I read your code awhile back. After MUCH trial-and-error, I realized that the key to the PID library is only using PID once you are at/near the setpoint, and to use something else to get you into that band. Then, a long time after THAT, I realized that you had already been down this road and posted that in your sketch. I facepalmed.

I wired the buttons straight to the Arduino and used the INPUT_PULLUP instead of external pull-up resistors.

Me too, except I put a cap across the button. I could be wrong, but *think* INPUT_PULLUP was added after 1.0? Maybe, maybe not? I don't think it was there when Steve wrote Brauduino.

I'm using a logic level MOSFET to drive the pump instead of a relay (I may use the PWM capability at some point to control the pump flow rate).

What pump are you using? I'm considering the same thing. I.E., using a bubbler and the PID library to control the level of the mash during sparge. It might be overkill, but that's a horrible reason not to try as far as I'm concerned.

I have a 5500W heater element. Would it be good to directly control the % heater output during the boil instead of using temperature control?

Yes

or can you effectively control boil rate with temp?

No.

but am wondering if it is worth the effort

It is. And for what it's worth, I suggest giving up an analog pin and using a pot. It's just intuitive (and QUICKER) to reach over and dial down an element by turning a knob counter-clockwise instead of swapping through menus and holding a button down to lower your PWM percentage, and hoping it comes down before you boil over.
 
using a topsflow pump from US solar pumps. I don't know if I can control it with PWM because it has internal electronics. I'll find out.
 
thats awesome I'm glad I could help.

As for the boil, I have used a PID algorithm in my first controller to control the boil and it works OK, I can go from a simmer to a mild boil to a strong boil by adjusting the set temperature, if you set it to boiling point then the pid will put in just enough power to keep it there so you get a slow simmer, if you put the set temp just a couple of degs higher then you get a stronger boil because of the proportional part of the PID. I have not tried the arduino library to control the boil and you might find after a while the I will wind up and you get a full boil happening but it can be fixed but dropping the temp by a couple of degs and wait for the I to drop back down. In any part of the brewing process the set temperature can be adjusted by the up down buttons and in the boil stage the temp can be increased to 120 degs c so you can achieve full power without the PID stuffing you up.

cheers steve
 
I went ahead and modded the code, just because I had time while I'm waiting for the pump to arrive. I've modified it so that once the set point temp is reached in the boil stage or when setpoint is reached above 200F in manual mode the up down buttons directly control the % heat output. The display changes from S/A= to %/A= to indicate the switch over. The initial % heat output is stored in EEPROM with the other settings. It seems to work OK.
 
Back
Top