Page 1 of 1

Buck Brewery (recirc setup)

Posted: Tue Aug 23, 2011 10:06 am
by Baron Ken
EDIT: changed thread title.

My drawing/layout skill are lacking, but this is a good start for me. (Click images for larger versions).
Note that these are test images, not actually brewing, hence the 0 temp readings.

I set it to the Mash process. The heater is on (red light) and being PID controlled to maintain 156F, and my hose connections for recirc are showing. When I finish dough in, I would press the 'Dough in done' button and it would go to the next state of recirculating the wort from mash tun to kettle and the pump would also come on.
Image

This is the Boil process where I've already connected the CFC and am recircing to sanitize the CFC during the last 15 mins of the boil.
Note that I did a Force State Jump to the Finish Boil state for picture purposes and the timer is not at 15 mins left. ;)
Image

Here is my actual setup (need a brewstand!). There are temp probes in the kettle and mashtun. The pump and CFC are in the bucket on the right. I also need to do labels for the control panel.
Image

Re: My setup after firmware 3.4.2

Posted: Tue Aug 23, 2011 10:19 am
by Baron Ken
I'll elaborate on the hose connections a little.

I turned registers on during specific states depending on the hose connection I wanted.
E.g. for the Mash, when I wanted to recirculate, I turned on these registers:
Reg 0: BK out Pump in
Reg 1: Recir out MLT in
Reg 2: MLT out BK in

I added additional widgets in the BuckBrewing.js and enabled Advanced Customization Javascript. Then in the HMI builder I just dropped the 'buttons' anywhere since they were not visible unless activated and also, they have values set specifically so that the ends line up on the background image where I want them to. I associated the 'buttons' with a particular register so they would 'turn on' when the register did.

EDIT: updated external.js script file (new name also).

Re: My setup after firmware 3.4.2

Posted: Fri Sep 23, 2011 2:59 pm
by Baron Ken
New process layout for my setup (still working on it):
Process 0 Heat Strike
  • State 0 Heat Strike (make sure I have the hoses connected, pump primed and kettle valve open before starting this process)
    • Out1 (kettle heater) PID setpoint=strike temp, using temp1(kettle)
    • Exit condition temp1(kettle)>=strike temp, Goto State 1
  • State 1 Fill MLT (note that the MLT drain valve is closed until the proper amount of strike water is in the MLT, then the valve is opened up for recirc and when flow is equalized, I press Win0 button. THIS IS A HANDS-ON STATE!)
    • Out0 (pump) on (from kettle to MLT)
    • Out1 (kettle heater) PID setpoint=strike temp, using temp1(kettle)
    • Win0 (Fill MLT done)
    • Exit condition Win0=on, Goto State 2
  • State 2 Preheat MLT (TODO: I need to wire up an alarm to tell me when the preheat is done and it's time to dough in. no alarm sound on the iPad!)
    • Out0 (pump) on (pump from kettle to MLT, drain from MLT to kettle)
    • Out1 (kettle heater) PID setpoint=strike temp, using temp1(kettle)
    • Timer0 (preheat timer), count down, init 15:00
    • Win1 (Preheat done)
    • Exit condition Timer0<=0, End Process
    • Exit condition Win1=on, End Process (this condition is if I get tired of waiting and think it's done preheating)
    • On exit, spawn Process 1 (Mash)
Process 1 Mash
  • State 0 Dough in
    • Out0 (pump) off
    • Out1 (kettle heater) PID setpoint=mash temp (+4F, see NOTE 1), using temp1(kettle temp, NOT MLT temp)
    • Timer3 (total mash time), count up, init 0
    • Win0 (Dough in done)
    • Exit condition Win0=on, Goto State 1
  • State 1 Recirc (note that I vorlauf into a small container for a bit to clear up the recirculating wort before it goes into kettle)
    • Out0 (pump) on
    • Out1 (kettle heater) PID setpoint=mash temp (+4F, see NOTE 1), using temp1(kettle temp, NOT MLT temp)
    • Timer0 (Mash timer), count down, init mash time (60 mins usually)
    • Timer3 (total mash time), count up, continue from previous state
    • Win1 (Mash done)
    • Exit condition Timer0<=0, Goto State 2
    • Exit condition Win1=on, Goto State 3 (yes, state 3. if I decide mash is done before timer runs down, I don't need the check conversion state)
  • State 2 Check Conversion (I just grab a small sample from the recirculating wort coming into the kettle. it will hold in this state until I press the button to continue. THIS IS A HANDS-ON STATE! see NOTE 2)
    • Out0 (pump) on
    • Out1 (kettle heater) PID setpoint=mash temp (+4F, see NOTE 1), using temp1(kettle temp, NOT MLT temp)
    • Timer1 (conversion timer), count up, init 0 (this just tells me how long I've been holding in this state.)
    • Timer3 (total mash time), count up, continue from previous state
    • Win2 (Conversion done)
    • Exit condition Win2=on, Goto State 3
  • State 3 Mashout (if I don't want a mashout, I can just press the Mashout done button. if MLT temp reaches mashout temp, I consider mashout done)
    • Out0 (pump) on
    • Out1 (kettle heater) PID setpoint=mashout temp (+4F, see NOTE 1), using temp1(kettle temp, NOT MLT temp)
    • Timer2 (Mashout timer), count down, init 15:00
    • Timer3 (total mash time), count up, continue from previous state
    • Win3 (Mashout done)
    • Exit condition Temp0(MLT)>=mashout temp, Goto State 4
    • Exit condition Timer2<=0, Goto State 4
    • Exit condition Win3=on, Goto State 4
  • State 4 Drain to BK (pump off and mash tun drains to kettle. I press a button when I think it's drained enough to start the boil process)
    • Out0 (pump) off
    • Out1 (kettle heater) PID setpoint=205F, using temp1(kettle) (this is just to start heating up to boil while MLT is draining)
    • Timer3 (total mash time), count up, continue from previous state
    • Win4 (Drain done)
    • Exit condition Win4=on, End Process
    • On exit, spawn Process 2 (Boil)

Process 2 Boil
  • State 0 Bring to boil (have hops ready to go in case this state goes quick. since it was heating while draining it might already be close to boil)
    • Out1 (kettle heater), on (full power)
    • Win0 (Start boil)
    • Exit condition, temp1(kettle)>=210F, Goto State 1 (still working on this value (had boilover last time), may change it to 205F and call that close enough to start the boil)
    • Exit condition Win0=on, Goto State 1 (press if I want to go ahead and start boil)
  • State 1 Boil (boil timer starts, so use that for hop schedule)
    • Out1 (kettle heater), duty cycle 60% (seems to be a good boil for 10 gal batch)
    • Timer0 (Boil timer), count down, init boil time (60 mins usually)
    • Exit condition Timer0<=15:00, Goto State 2
  • State 2 Connect CFC (just a reminder step for me to connect the CFC. note that I had run sanitizer through it before starting brewing, so I need to direct output of CFC into a bucket until wort comes out. keep watching hop schedule)
    • Out1 (kettle heater), duty cycle 60%
    • Timer0 (Boil timer), count down, continue from previous state
    • Win1 (CFC connected)
    • Exit condition Win1<=on, Goto State 3
  • State 3 Finish boil (pump on to start recirculating wort through the CFC back into the kettle to heat sanitize CFC (even though it also had sanitizer run through it before, LOL). keep watching hop schedule)
    • Out0 (pump) on
    • Out1 (kettle heater), duty cycle 60%
    • Timer0 (Boil timer), count down, continue from previous state
    • Exit condition Timer0<=0, Goto State 4
  • State 4 Recirc to cool (pump still on, heater now off. start the water into the CFC to start cooling the wort)
    • Out0 (pump) on
    • Out1 (kettle heater), off
    • Timer1 (Cooling timer), count up, init 0
    • Exit condition Temp1(kettle)<=160, Goto State 5
  • State 5 To ferm (pump still on. a fountain pump in an ice bath is used to recirculate water through the water side of the CFC and the wort out of the CFC goes into the fermenter at approx. pitching temp. ;) when wort is all in fermenter, I end the Boil Process by pressing a button, woo!)
    • Out0 (pump) on
    • Out1 (kettle heater), off
    • Timer1 (Cooling timer), count up, continue from previous state
    • Win3 (All done!)
    • Exit condition Win3<=on, End Process
NOTE 1: I have a temp differential of 4F between my kettle temp and mash temp due to heat losses in hoses, valves, etc. e.g. kettle probe temp needs to be at 160F to get a mash probe temp of 156F. Also note that the mash temp probe is located in the the 'T' with the mash tun valve so it really only gets a good reading when recirculating/draining the mash tun.
NOTE 2: I'm thinking of eliminating the Check Conversion state and just assuming the mash is done at the end of state 1 (Recirc). I can just check the conversion before the mash timer runs down and press a button to go to a conversion NOT done state, perhaps, and let it hold in that state until desired. In practice, I usually click right through this state anyway because conversion is done long before the mash timer runs down.

I threw a lot of user intervention 'button' checks in the states so I could have more control over things.

I have the processes saved on a per beer basis (for mash temps, times, etc.).

EDIT: note that I also have Registers set in almost every state that control the display of hoses on the HMI, but I did not list them above.

Re: My setup after firmware 3.4.2

Posted: Sat Sep 24, 2011 7:16 am
by ohio-ed
Very nice, thanks for the details.
I'm still running ancient firmware but really thinking about updating and this thread is helping to push me that way.

Ed

Re: Buck Brewery (recirc setup)

Posted: Tue Oct 18, 2011 11:06 am
by Baron Ken
After working on adding features from other threads, here is my latest post (from a different thread, just trying to keep my setup info in this thread also).

My latest interface. I expanded the background image canvas size to allow including the PIDs, but I probably won't keep the PIDs on there, especially since I only use a setpoint for the brew kettle and the dial gauges have the setpoint indicators on them too.

Custom changes:
  • 'Hose' widgets that appear when I want (by setting registers in states).
  • Ability to minimize gauge section.
  • Only when gauge section is minimized do the HMI gauges/PIDs show up in HMI section (may change this behavior).
  • Gauges in gauge section have setpoint indicators.
  • Gauges (with setpoint indicators) in HMI section (scalable by changing setting in external.js).
  • PIDs in HMI section (scalable by changing setting in external.js).
  • Automatic changing of displayed process when the next process starts (this is pretty specific to my setup in that I have a linear progression of processes and only have 1 process active at a time...customizable with registers, but YMMV).
I have verified the above works well on my iPad.

EDIT: Thanks to a tip from ECC, I added setpoint indicator colors! :D
Actual temp > ±5 degrees from setpoint the color is red
Actual temp <= ±5 and >±2 degrees from setpoint the color is yellow
Actual temp <= ±2 degrees from setpoint the color is green
These values can be changed in the external.js if desired.
video: http://dl.dropbox.com/u/2381014/BCS/gauge.mp4
/EDIT

Next up is to do a custom index.html page so I can lay out the other controls/displays more to my liking.

The alarm is on. No sound from firefox (I was testing to see if it worked and forgot to disable the alarm after).

Click image for larger version:
Image