Keezer (Keg/Tap/Beer) Controller

Add some smarts to your beer: see how much is left and turn off the taps when you’re not around.

Similar projects worth following
Several years back I saw a system at a local bar that indicated how much beer was left on their many taps. After building my own keezer (beer tap for my homebrews) and subsequently getting back into mechatronics projects, I got inspired to build a similar system. It morphed through the past couple years and with the addition of a kiddo the idea of also being able to shutoff the taps when I wasn’t entertaining got incorporated. Ultimately, I ended up with a system that does the following:

• Weighs each of my 5 kegs and my C02 tank so I know when I need to brew more beer.
• Measures the pressure (PSI) of the gas lines, so I can squeeze out the last little-bit of CO2 rather than replacing early.
• Operates solenoids on the 5 taps, allowing me to only have them open when I want (primarily kid and baby-sitter proofing, but also to avoid accidental leakage).
• Measures the temperature in the keezer.
• Turns on LEDs and a display.

Not too long after having built my keezer, I decided I wanted to be able to weigh each of the kegs. Unfortunately, this wasn’t something I had considering during the initial build so I had very little clearance between the top of the tallest keg and the bottom of the refrigerated compartment. Designing a weight sensor that was as thin as possible become paramount and a strain-gauge type sensor seemed too thick. This led me to initially design a sensor using a very thin piece of anti-static foam (much like that used to hold sensitive electronics for shipping) sandwiched between two thin pieces of plywood with copper tape applied on the inside face of each. I wrapped the whole setup in some heavy-duty tape and by measuring the electrical resistance between each side of the foam, a crude weight sensor was born!

While it appeared to work well enough during multi-day tests (I was initially aiming for an error of between 5-10% of the actual volume), after having them installed for an extended period of time drift was a real issue. This was exacerbated by the fact that I tend to go through beer fairly slowly, never allowing me to get a good calibration value for a given sensor. Ultimately condensation that collected at the bottom of the keezer caused each of the sensors to fail completely after a year or so.

I subsequently built new sensors utilizing strain-gauges mounted on the same pieces of plywood and found that I was able to make them thin enough to work within my size constraints. They were MUCH more accurate and once down to the refrigerated temperature there was no discernable drift with time. I was now able to very accurately measure the weight of each keg.

Originally, I had installed manual ball-valves on each of the taps and a combination lock on the back of the keezer to allow me to lock the entire thing up when not around. While working on other parts of this project I decided that it would be fun to install some solenoid valves to do this automatically. After some searching, I found some that appeared to be food-safe and was ultimately able to add them to the setup.

Using the same transistors I bought to control the solenoids I was able to also control the LEDs I originally installed under the taps as well as the computer monitor I added to display all of the information I was collecting. I was able to buy a driver board to control the monitor I had from a deceased laptop and used a Raspberry Pi to display a simple HTML file I created. Programming/HTML being my weak-spot, I stumbled upon some chart tools that Google offers for free to give my display the semi-professional look I was aiming for. Voilà! I had a working keezer controller operating on a Particle Photon, albeit a little rough looking between the plywood weight sensors and the breadboard. I also connected my Photon to IFTTT so that I have an ‘on’ and ‘off’ button for the valves, lights and screen on my phone that works anywhere I have internet.

Fast-forward a little bit and I recently got a 3D printer. Designing and building a weight sensor seemed an obvious early project and was easily done.

Next was to solder up a proper board for the entire thing and put it in a printed case.

Additionally, I mounted the pressure sensor remotely within the keezer.

The end-result is a great little controller that allows me to both monitor my keezer via a display and control it easily from my phone.

If you look at the 3D files, you’ll notice that I also made a small stand for the weight sensor. This was due to moisture collecting in one corner of my keezer (even with humidity control in place) causing the strain gauges of one sensor to corrode. I made the stand to keep moisture from touching any of the components and I simply mop up the pooled water with a towel whenever I open up the keezer.

Future Additions/Upgrades

Perhaps the most obvious one is to actually control the temperature rather...

Read more »

Adobe Portable Document Format - 534.61 kB - 08/08/2019 at 18:55


Adobe Portable Document Format - 4.52 MB - 08/08/2019 at 18:55


  • 1 × Particle Photon
  • 4 × 50kg Load Cells per Keg/CO2 Tank Set of 4 per Keg/CO2 Tank scale
  • 1 × Wire I’ve begun using 4-wire phone cable for all of my electronics projects due to cost, availability and ease of organization when they’re kept in the insulated sleeve. For this particular project I ended up using doorbell wire initially because that’s what I had lying around.
  • 1 × Screw Terminals For connecting the wire to the board.
  • 1 × Large PCB Prototype Board For the main board

View all 16 components

  • Pressure Sensor Failure

    Ben Brooks11/13/2019 at 17:38 0 comments

    For the last month or 2, I've noticed that the pressure sensor seems to be failing (getting rather erratic and known false values). I haven't thoroughly tested all components (mainly wiring, solder joints, etc.), but attempts to clean/fix the sensor itself seem to result in 'changes' to the values but still ultimately false values (i.e. leaving it open to atmosphere can give wildly different values).

    When I originally included the pressure sensor, it was because I wasn't weighing the CO2 tank and I wanted some kind of indicator of it's level. If I were to redo the project, I wouldn't even include the pressure sensor due to it's cost, it's limited value (I can only read the pressure downstream of the regulator, as opposed to the tank pressure) and now it's added failure mode.

    If I get it working again, I'll post an update with hopefully how I fixed it.

View project log

  • 1
    Order and Print Components

    The first thing you’ll want to do is order and print all of the necessary components. The printed components are all available on Thingiverse here.

  • 2
    Solder up the boards

    By far the most time-consuming part of the build is simply soldering up the large PCB proto board in addition to the small remote board for the pressure sensor. Carefully follow the schematic below and you shouldn’t have any issues.

  • 3
    Assemble/wire the Scales

    Wire up the scales using the above wiring schematic as a reference. Fairly straightforward, if it doesn’t make sense to you just Google ‘Wheatstone Bridge Circuit’ as it’s a common circuit configuration.

View all 6 instructions

Enjoy this project?



Krockwell wrote 03/08/2020 at 21:35 point

Love this build! I'm working on a keezer build myself and re-using your 3D-printed scale in an attempt to measure specific gravity. Thanks for putting the design files up

  Are you sure? yes | no

Ben Brooks wrote 03/08/2020 at 22:29 point

Awesome, glad you like it!

Let me know how your project goes; I suspect it'll be a bit of a challenge to measure the weight accurately enough to calculate the SG.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates