Thursday, 3 April 2014

Automatic Brew Success!

Yesterday I decided to run another test. No changes to the code, just a complete re-run of the last brew so we could see how we go. I am pleased to announce that it turned out to be a success! No interaction was required to produce a fermentable wort from the first push of the "brew" button!

Heres a pretty lame video of the hop-dropper doing its thing for the boil. No hops were ejected on this "drop cycle" though. You can also see the rolling boil of the wort created by PWM of the Solid State Relays. The "hop sock" is something that is getting phased out soon. It will be a stainless perforated "hop sieve".

Code and Brew Log

There were a few minor programming issues that I came across when I went through the brew log. This log is the diag information sent back over the serial port so I can monitor technical things going on in the program.
Message passing: I created a generic message which has a very basic frame with information such as "source task", "destination task", etc and also a void pointer to the payload. This way, any payload size and datatype can be sent as a message. This may be dangerous in some respects, but I havent had issues with the payload side of things yet. The issues were with the source and destination elements. I found that the boil task kept receiving a message to turn on the elements at 55% at the transition of a step. Some steps explicitly turn off the boiler, so it seemed erratic and intermittent at the start. A quick path test of the boil task uncovered that if the message was received from the "brew task" then it would choose a duty cycle of 55% no matter what the payload contained. This was fine as it's what I want when boiling the wort in automatic mode. The problem I uncovered was the brew_reset() function also used the "source" as brew_task. Bingo. The reset function is called in between steps as a helper function to stop certain devices (such as boiling).
The path test of this code enabled me to optimise the module better and clean things up a lot. The minor bug has been removed so we wont have to rely on the level sensor to stop the boil when not called for!

The Result + Automatic Brew 2 (Another Success)

So here it is, about a week later and we're drinking a really nice DARK beer! A few parameter tweaks were made and we ran the machine for the second trial in automatic. It went off perfectly. This test saw better volumes and a more accurate temperature profile. I hold confidence in a very fine IPA in a weeks time. 
I just need some candidates to help me knock a few over!

Auto Brew 2 - Result

Ok, so its been a while and I will say that both brews were extensively tested by a panel of -- lets say -- tasters :-). The consensus was that the  IPA was pretty well amazing, but didn't last long! 
They both had a very clean profile with no off flavours or colours. 
Repeatability is now the focus. I will put together a basic recipe that we can use as a base, and make a couple consecutively. It will be interesting to see the brew-log and the results in the flavours.

+ A New Addition

I finally got the hop sieve cut and rolled, and Waz tigged it up, so it's ready to go for the next beer! 
Here's a quick look

Wednesday, 2 April 2014

Motorized Ball Valves

The initial build incorporated Viton diaphragm solenoid valves for the fluid control. Although quite cheap, they come with some added extras... I had a tiny piece of silver insulation tape catch in the valve seat which caused a slow leak from the HLT (Hot Liquor Tank). Yep, the water is filtered with a ceramic filter before the tank, but the foreign object must have been from when we installed the new stainless tanks and insulated them. This leak caused a potentially awesome beer to turn out to be mid-strength and just average. Some would say that it still had more flavour than any dark beer you can buy off the shelf here is Australia!

So I sourced some cheap motorized ball valves and installed one the other night. Its just mounted temporarily at the moment  (hence the cable tie). It comes with a motor connection in which the user changes the polarity dependent on  direction. Opened/Closed feedback is via contacts that sink to ground.
I hacked the old code from the original three-way valve and we were away. Its not that exciting so I didn't take a video.
The new 3-way Motorized Ball-valve