Brewery Simulator

Debugging code that runs on the brewery takes time and is not simple. Software that heats and transfers physical quantities of liquid results in a slow, constrained debug environment.  To avoid these issues I decided to incorporate a brewery simulator into the code.

The physical nature of process control takes time and energy to run through the code. This makes debugging a difficult and time consuming process. Until recently this meant I had to run snippets of the code in isolation. For example the transfer of liquid, heating of kettle and chilling of the kettle were tested individually. This still took a long time to find and fix bugs.

To avoid a lot of this pain I decided to incorporate a simulation mode that would allow me to run and test the code on a windows PC instead of a Raspberry Pi.

  • MRAA is currently used to drive the I2C and GPIO pins on the Pi. I replaced this with a stub that mimics pin activity.
  • Modified device drivers to interact differently, e.g.
    • Flow sensors listen to Pump events and generate simulated pulses.
    • The Kettle temperature sensor listens to Power settings and simulates fluid temperature changes.
  • Allowed simulation to run at many times faster than real-time by modifying many process timing constants.

In conclusion. Running the process faster than real time made debugging really fast and simple. This resulted in a significant number of problems being identified and fixed very quickly.  The nature of the publish-subscribe model I had chosen made it simple to adapt behaviour for simulation mode. Running on Windows also meant that the post processing of results to draw graphs and publish data etc could also be tested with ease.

Cascade Dry Hop Experiment

I had just gotten hold of some Cryo Hops® LupuLN2® pellets and I wanted to know if they made any difference from using normal pellets. This new form of hops claims to provide an intense hop flavour and aroma without introducing astringent flavours. I also had some Cascade hops in the freezer that I had grown. So it seemed like the perfect time to experiment with dry-hopping the same beer three different ways.

The basis of this experiment was a light pale ale. The same beer was dry hopped for 4 days with pellets, whole hops and LupuLN2 pellets. The quantities of each hop type was adjusted to keep the level of alpha acids constant.

Cascade pellets, Lupuln and whole hops.

Each beer was given to a bunch of mates at work to obtain their perceived differences. The replies were mixed, perhaps indicative of the similarity of the beers. Unarguably though, the normal pellets were noticeably cloudier than LupuLN2® pellets. I believe this is due to the significantly less quantity of pellets used.

The whole hops divided opinion, people liked and disliked them in equal measure. The main debate seemed to exist between the two hop forms. LupuLN2® arguably had some more aroma than the standard pellets. The pellets though seemed to win out on flavour.

Conclusion
There doesn’t seem to be any great advantage in LupuLN2® pellets in terms of flavour or aroma. The smaller quantities required however result in more clarity. I would recommened there use for beers requiring a high level of dry-hopping. Then again no-one seemed concerned by the cloudier version, it was actually deemed preferable by some tasters.

Recipe Details

Batch Size Boil Time IBU SRM Est. OG Est. FG ABV
23 L 60 min 68.7 IBUs 10.7 EBC 1.060 1.012 6.4 %
Actuals 1.042 1.01 4.2 %

Style Details

Name Cat. OG Range FG Range IBU SRM Carb ABV
American IPA 21 A 1.056 - 1.07 1.008 - 1.014 40 - 70 11.8 - 27.6 2.4 - 2.9 5.5 - 7.5 %

Fermentables

Name Amount %
Extra Pale Maris Otter (Crisp) 5 kg 74.63
Cara Gold 1 kg 14.93
Maris Otter Pale Ale 500 g 7.46
Pale Crystal Malt 200 g 2.99

Hops

Name Amount Time Use Form Alpha %
Cascade 80 g 60 min Boil Leaf 5.5
Cascade 55 g 30 min Boil Leaf 5.5
Bramling Cross 50 g 15 min Boil Leaf 6
Citra 16 g 5 min Boil Pellet 14.2

Miscs

Name Amount Time Use Type
Calcium Chloride 4.00 g 30 min Mash Water Agent

Yeast

Name Lab Attenuation Temperature
California Ale (WLP001) White Labs 77% 20°C - 22.78°C

Mash

Step Temperature Time
Mash In 65.56°C 75 min

Fermentation

Step Time Temperature
Primary 14 days 19.44°C
Aging 30 days 18.33°C

The Elements Project

This months Beer52 box contained a rather exciting experiment which highlights the difference that a single ingredient can make.

Exactly the same reason for building Brewnode.

Malt

Ruby Rising v 11th Hour

Both beers have Caramalt, Amber Malt, and Pilsner Malt. 11th hour has the addition of rye malt. The differences were surprising. The rye dramatically increased the head foam and its retention. It also caused a slight haze. Overall it seemed more rounded and suited the style.

Yeast

California Dreaming v Dreaming of Frites.

No surprises here. The Abbey yeast gave a saison nose and correspondingly typical flavour. It also made the beer a bit darker and slightly better head retention.

Zig v Zag

Zig used a Belgian abbey yeast and Zag was T-58 (whatever that means). In my mind, Zig was the clearly the better beer. It had a sweet, fruity aroma and a more rounded mouth feel than Zag. Most significantly, Zag retained no head foam and was clearly less effervescent.

Hops

Mosaic v Ekuanot

Well this one is all about the nose. I preferred the Mosaic because it was more floral and slightly sweet smelling.The Ekuanot was not as powerful and had a medicinal edge to it. Mosaic has a stronger aftertaste but was less bitter than Ekuanot.

One thing that came as a surprise was that the Ekuanot had better head retention. I don’t understand how hops can have this effect. I definitely need to do some more research on this.

Conclusions

  • Amber malt increased the head retention but introduced a slight haze.
  • Hops can effect head foam. How?
  • Avoid the Belgian blonde yeast, T-58.

Ping Pong Pale

To celebrate a small table tennis event at work I brought along my latest brew. It was a fruity New England style IPA.

I have to admit though that the cloudy nature of the beer was unintentional. Iam still unsure of what went wrong in the process, although taste did not seem to be negatively affected.

Recipe Details

Batch Size Boil Time IBU SRM Est. OG Est. FG ABV
18 L 60 min 30.5 IBUs 11.6 EBC 1.061 1.021 5.3 %
Actuals 1.044 1.01 4.4 %

Style Details

Name Cat. OG Range FG Range IBU SRM Carb ABV
American IPA 21 A 1.056 - 1.07 1.008 - 1.014 40 - 70 11.8 - 27.6 2.4 - 2.9 5.5 - 7.5 %

Fermentables

Name Amount %
Extra Pale Maris Otter (Crisp) 5 kg 81.97
Cara Gold 1 kg 16.39
Pale Crystal Malt 100 g 1.64

Hops

Name Amount Time Use Form Alpha %
Goldings, East Kent 50 g 60 min Boil Pellet 5
Citra 80 g 2 days Dry Hop Pellet 14.2

Yeast

Name Lab Attenuation Temperature
English Ale (WLP002) White Labs 67% 18.33°C - 20°C

Mash

Step Temperature Time
Mash Step 67.78°C 60 min

Fermentation

Step Time Temperature
Primary 14 days 19.44°C
Aging 30 days 18.33°C

Notes

The intention was to get a bit more body in to the beer by adding more malt. This is why caragold as used. It provides the opportunity to add body to beer with little impact on colour.

The pH half way through the mash was 5.8.

Open Day – Summer Lightning

To celebrate the launch of Brewnode, I invited a few friends around to sample my wares.  I had all the ingredients for a replica of the classic Summer Lightning from Hopback brewery.  I decided that it would be good to give a go and brew live on the day. I wasn’t sure if this was a good idea or not since I’ve never had a brew run complete automatically from start to finish. But hey, why not?

Recipe

Ingredient Quantity
Pale Ale, Golden Promise 5.5Kg
Challenger Hops 30g for 60 mins
Challenger Hops 30g for 30 mins
Golding Hops 35g for 15 mins
East Kent Goldings 50g Dry hopped for 7 days
Mosaic Hops (panicked addition) 50g Dry hopped for 3 days
Yeast WLP002 English Ale Yeast

You might notice the addition of some Mosaic dry hops. That’s not in the original recipe but I panicked a bit about the taste during fermentation.

Mash

With hindsight, the initial mash temperature was too. This meant that the average temperature during the mash was only

Fermentation

Active fermentation lasted only 3 or 4 days but I left it for about 2 weeks before transferring to a keg. I took a sample after about 10 days and I was not impressed. So much so that I had a decision to make as to whether leave it as is and hope for the best. Or take action and attempt to turn it into something more palatable.

I didn’t have the bottle to run with it as was, so I decided to chuck in a large amount of Mosaic hops into the fermenter. I know this was not in the plan and diverged significantly from he original intention. But I am glad I did because the change was remarkable. The aroma changed almost immediately from a stale smell to a fresh citrus.

Tasting

Like previous brews, there was a definitive chill haze. I now suspect that cold break in the fermenter is the cause. I chill straight from the kettle to the fermenter through the plate chiller. This means that all of the cold break ends up in the fermenter.

I had to buy some Summer Lightening to compare mine against. Over the past 20 years, what used to be a classic in my mind had turned into a rather bland and fizzy lager like drink. I exaggerate of course but the aroma of Goldings just doesn’t compare to what I’ve become used to.

Conclusions

  • Start with more liquor.
  • Increase malt variety to give more body.
  • Let BIAB drain.
  • Use less bittering hops.
  • Chill to clear before carbonating.

 

Black Hat

The main difference with this brew from the previous (Hop++) was the addition of Carafa malt to give the black colour. It was interesting to see that this malt has no husk and doesn’t look like a grain at all. The lack of husk avoids extra tannin making into the beer. Leaving the colour to dominate.

One other change I made was using an east coast yeast because this was where the Black IPA style originated.

 

Recipe

Ingredient Quantity
Maris Otter Pale Malt 5.1Kg
Pale Crystal Malt 0.45 Kg
Carafa III Malt 0.35 Kg
Simcoe Hops 30g for 70 mins
Simcoe Hops 15g for 40 mins
Simcoe Hops 9g for 15 mins
Mosaic Hops 26g Dry hop for 4 days
Citra Hops 46g Dry hop for 4 days.
Yeast WLP008 East Coast Ale

Points of Note

  • The significant amount of dry hops appeared to have little effect. The same amount in a beer (Hop++) without the dark malt had more aroma.
  • There was a definite chocolate taste.
  • The colour was actually more dark brown than black. This visually detracted at times from the taste. Next time, I will add more Carafa malt.

Brew 3 – Hop++

For this brew I wanted to compare the difference between WLP01 and WLP02 yeast strains. I used the same recipe as  my previous brew  (API IPA) but changed only the yeast. Well that was the intention.

Hop++

Recipe Details

Batch Size Boil Time IBU SRM Est. OG Est. FG ABV
17 L 70 min 83.7 IBUs 9.6 EBC 1.049 1.013 4.7 %
Actuals 1.04 1.015 3.3 %

Style Details

Name Cat. OG Range FG Range IBU SRM Carb ABV
Blonde Ale 18 A 1.038 - 1.054 1.008 - 1.013 15 - 28 5.9 - 11.8 2.4 - 3 3.8 - 5.5 %

Fermentables

Name Amount %
Maris Otter Pale Ale 5 kg 98.62
Pale Crystal Malt 70 g 1.38

Hops

Name Amount Time Use Form Alpha %
Mosaic (HBC 369) 9 g 70 min Boil Pellet 12
Simcoe 9 g 70 min Boil Pellet 12
Simcoe 10 g 60 min Boil Pellet 12
Mosaic (HBC 369) 9 g 40 min Boil Pellet 12
Simcoe 9 g 40 min Boil Pellet 12
Mosaic (HBC 369) 9 g 25 min Boil Pellet 12
Simcoe 9 g 25 min Boil Pellet 12
Mosaic (HBC 369) 9 g 0 min Boil Pellet 12
Citra 50 g 4 days Dry Hop Pellet 14.2

Fermentation

Step Time Temperature
Primary 14 days 19.44°C
Aging 30 days 18.33°C

All seemed well during the mash until I started to take some gravity readings. Two things surprised me. Firstly the colour was a lot lighter than expected. This was backed up by the correspondingly low gravity. Something was not right.

After puzzling for a while I realised that I had made a dumb mistake weighing the malt. Instead of adding 700g of caramalt, I had only added 70g!

The boil and cooling went well. The gravity into the fermenter was only 1040 but it tasted great. Given the nature of this brew, I figured that a significant amount of dry hops would do no harm. So 50g of Citra was added for 4 days. The final gravity was 1022 which comes out at 3.3%. Resulting in a light hoppy summer session IPA.

Fully automated brewing system using NodeJS