Arduino · Automation · Espresso · Gravimetric · Hack · volumetric · Zhng

Gravimetric espresso mod – project updates

After a long hiatus, I finally found some time to update this blog. I’ve been really busy with multiple projects. Few of the projects are coffee gadgets related which I shall unveil when they near ready.

Today I’d like to share the progress of the espresso machine mod I mentioned in an earlier post Espresso Machine Zhng. My home espresso machine is now capable of gravimetric espresso extraction, and it can be programmed easily through an mobile app. Like all good experiment report, I shall start with the problem statement.

Problem statement: My home espresso machine, the Bezzera BZ13 is manual push-button machine. It is reliable for home usage but it is primitive and lacks features. Higher-end machine comes with programmable feature which allows limited espresso recipe to be dialed-in. These recipes are either based on extraction time or volume of water which flowed through the pump. Ben Kaminsky highlighted in this article that weight-based dosage produces more consistent coffee vs time-based dosage. Matt Perger conducted similar experiment in a busy cafe setting and the video can be found here.

Solution: To implement a low-cost weight-based dosage feature into home machine which is programmable through an mobile app, hence the espresso recipe will be virtually limitless.

The following images show the interfaces of the espresso controller mobile app I wrote. The image on the left shows the flow rate, espresso extracted and the total volume of water used in extraction. The graph gets updated in real-time during extraction and the extraction profile can be saved for reference. I’ll get a video demo up when i’ve the time. The image on the right shows the interface which allows the espresso dosage and target brew ratio to be dialed in.


When I started the project, I was using 2 flow sensors shown in the following diagram. Similar to espresso machines marketed with the ‘volumetric dosing’ feature, flow sensors are used to detect the espresso yield, either at the pump in-let or group head. For cost-reason and the fear of working directly with high heat high pressure, I opt-ed for flow sensors in the pump inlet and OPV outlet.

Flow sensor 1 measures water the pump draws, and flow sensor 2 measure the water that returns to the tank through the over pressure valve (OPV)

The flow sensor has a impeller which spins when water flows through it.

Image credit:

The impeller generates pulses when it spins and the number of pulses were collected to measure the volume of water which went into the coffee. The pulses to extraction ratio are different for each unique blend of coffee, and I wanted something which works for all coffee and does not require re-calibration of the pulses to extraction ratio, hence, a scale was added to the project. Alternatively, I could have measured the flow-rate in the group head instead of from the pump in-let, however, such flow meters are not cheap.. and too hot to deal with 😐

Once the target weight is detected by the scale, the pump will be cut-off electronically by the relays. The flow sensors are now used to indicate the start of the extraction and the data collected from them are shown in the mobile app (red coloured chart). It can be useful for flow-rate profiling too (separate mod for another project).

Flow sensors and the relay are physically wired to the Arduino microController. While the weighing scale talks to the microController wirelessly
Relays (blue boxes) connected in-line to the pump on/off push-button

This is the first iteration of the minimalist scale which is wired to the controller. It is self-made too, and I’d have used an Acaia if it is developer friendly.

The load cell (weight sensor) is protected by a piece of thick 5mm acrylic which is pretty heat resistant. This is important as the load cell’s reliability can be affected by temperature changes.


And the current version which is wireless though not so minimalist now.


The hardware controller is powered by Arduino microController which talks to mobile app via Bluetooth. Nordic transceivers are used for wireless communication between the microController and the scale.

I am now in the process of fabricating drip-proof enclosure for the scale. Hopefully I can get the third iteration of the scale soon and then the video demo will be available πŸ™‚

Updates: This is how the fourth iteration of the scale + mobile app looks like


So much for the short updates, please do share with me ideas or features you would like to see available πŸ™‚

4 thoughts on “Gravimetric espresso mod – project updates

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s