แฟ้มประวัติHERMANรูปถ่ายบล็อกรายการเพิ่มเติม เครื่องมือ วิธีใช้
21 ตุลาคม

Designing the bar and cooling plant

I've been spending a lot of time over the past few weeks cleaning up the place. We've been in this house for about 7 years and collected way too much junk over that time. We've also basically landed running, so things that found a spot in a hurry 7 years ago are still cluttering up the same spot.

cooling plant idea

One of the things to clean up was our two-car garage. It has only ever had one vehicle housed in it, with the rest of the space dedicated to our many interests - brewing, pottery, gardening, electronics and woodwork.

The electronics gear has found its way into another room in the house which is much warmer in the winter and also has more dedicated space so that projects can stay on a bench half done.

The pottery, gardening and woodwork equipment is pretty much as it was, but the brewing gear is getting a make-over.

For a long time I've had a plan for consolidating the cooling plant in the brewhouse. Currently we have three refrigerators standing in a row - one for fermenting lagers, one for lagering itself, and one for serving. When we first moved in I had a freezer dedicated to serving beer, but it was old and soon packed it in.

In between times I have had a dedicated glycol chiller that about 18 months ago lost its refrigerant (at least that's what I hope happened). There was a spare fridge outside, so I never did get a tech in to have a look at the glycol unit.

So there are three fridges in a row and the glycol chiller is still there - which means a lot of room and power is taken by things beer related.

My plan is to use the glycol chiller (or otherwise a freezer) as the cooling plant for:

  • the flooded font chill water (below 0 degrees C - to ice it smile_teeth)
  • keeping the full kegs at cellar temperature (10-12 deg C)
  • chill on demand serving via the glycol - from 12 C keg through stainless coil in the glycol bath and out the flooded font, as per the original working of the glycol system
  • pulling English ales from 12 C keg in cellar direct through the beer engine for an authentic warm ale
  • fermenting lagers at 10-12C in the cellar (or if there is insufficient room via a cooling line inserted into the fermenter that pumps glycol via a temperature controller)
  • fermenting ales at warmer temperatures (via cooling line that pumps glycol)

I scavenged a wooden box from an electronics place a while ago that was the packing around a flat-screen TV. I had in mind that it would form the structure for an insulated box that would become the cellar. After some thinking though, I realised that an old freezer of the right dimensions would make an ideal cellar - already well insulated and built more solidly than I would likely build my own.

With that in mind I found a local bargain freezer that was on its way out. This was big enough to fit 8 kegs, or 4-5 with a large fermenter.

I am yet to figure out if the glycol chiller can be fixed, but I've done some modelling with SketchUp to figure out how it might all go together.

font-tray-top1

The grey box is the glycol unit, the white box is the old freezer on its side with the door open to the side.

font-tray-top2

I blogged about this idea when I bought the freezer here.

The idea I have to cool the 'cellar' is to pump glycol through a line that has a fan-forced radiator in it. This ought blow cool air into the box, with a controller to set the temperature.

All being well I will start construction on this this coming weekend. If I take the flooded font out of service, it is sure to speed up the work that needs to be done smile_tongue

08 ตุลาคม

LCD progress

The 40x2 LCD has not yet been functional in HERMAN6. When I ordered it I had not realised it needed a negative bias on the contrast line. I had knocked up a less than elegant solution to this and modified my P. H. Anderson serial drive board to accommodate the solution. For whatever reason, the modification worked on the test bench but not on the machine.

I left that part of the project to focus on other things, and in the meantime relied on the PC connection to show important information.

It often happens that when I take a step back I find a better solution. In a recent blog entry I wrote about a simple circuit based on a 7660 chip that is commonly used to provide the negative contrast voltage using a single voltage supply.

While my 7660s were on order, it was time to re-check that the LCD was ok. So using a known working serial drive board and adding a AA battery below zero to supply the contrast voltage, I was happy to see all was well.

That was yesterday, and I was pleasantly surprised when the 7660s arrived on the doorstep this morning (Farnell are fast).

So with just a couple of electrolytics, a 7660 and a trimpot, I had all I needed to test the display off a single supply. And presto, all is good!

IMG_1708

I think I will build this little interface on strip-board. I need an adaptor between the serial board and the display anyway.

As an aside, I will reverse the mods on the Anderson serial board and use that in another project. The AXE-033 board from Revolution Education has a few advantages for the HERMAN project.

  • Being a complex project, having the programming editor simulate the AXE-033 will be an advantage. (The Anderson board uses different code commands.)
  • The AXE-033 has provision for a real-time clock. If it seems worthwhile, we have this as an upgrade option.
05 ตุลาคม

Scripting and 'Intellisense'

In many ways the VB6 code that used to run HERMAN was a hashed and patched together experiment to see test what the program needed to do. If you like it was an on the fly experiment to determine the feature set.

Coding like this has its problems, the least of which that it became very difficult to maintain, especially when there were large shifts in the way things were done. The VB6 code has many sections of orphaned code, relics of old control systems or symptomatic of a change in mind. Add to this that I'd never learnt to code in VB in any formal way, so many things were done without realising the consequences - like not explicitly declaring variables because I didn't need to, which made for nightmares later on trying to find bugs.

' Full Session Control
' - Quick Test
' - Mash
' - Boil
' - Cooling
' - Cleanup
'
GetMsg test.txt a

wait 10

lblProcess Gates_closed
gHLTout 0
gMTout 0
gMTin 0
gKETout 0
gACCin 0
gACCout 0
gCFCflow 0

One of the features of the last HERMAN system was a built in scripting language to automate as many aspects of the machine as were needed. Above there is an example of the start of one of the scripts. The script ran through line by line showing messages on screen to remind us of things we might forget, and it automatically controlled as much of HERMAN as it could. It was fabulously successful, although difficult to change or adapt because a reference was never written anywhere except in hard code.

In the re-coding, it has been much easier to take a step back to get perspective, and then make sure a discrete feature (like serial communications) is working properly before the next feature is implemented.

When I thought about the scripting language, I wanted to find a way to make it as simple as possible to write the control script. I'm finding that intellisense has improved a lot between visual studio 2005 and 2008, and so a way of implementing a feature-set like intellisense seemed logical.

I'm not a C# coder, but I found this DIY Intellisense article on codeproject. It was pretty close to what I was after. The script language is stored on a treeview control, and both a listbox and tooltip complete the information package. While the code could have been interoped into the HERMAN project as it is, I decided that converting it to VB would give me a greater appreciation of the code and how to customise it to my own needs. I've not quite finished the custom work, but I'm pleased with the results so far.

scripting1

Like Microsoft Intellisense, HERMAN intellisense is activated when the '.' is pressed. Just in case we have forgotten what the root options are, pressing F1 at the start of a line will pop up a listbox of the root command names.

Once a valid root name is typed or selected and the '.' is pressed,  a node listbox pops up showing all options for that command. In the case above, the control node refers to the HERMAN control panel, and the hlt_heater sub-node is one of the control options.

scripting2

When a parameter requiring a value is selected, pressing the '(' will open a tooltip that tells the user what is expected. In this case the command line will set a temperature target for the hot liquor tun heater, providing the prompt is followed to completion.

The intellisense has been both fun and satisfying to add in to the HERMAN feature set. Now the harder work of implementing the script needs to happen.

If there is interest I will post the code on the file section of the blog site. Otherwise check out the C# tutorial under codeproject.