Welcome to our new series about Water for Coffee Brewing, which we are calling #waterforcoffeeseries.
Over the last decade, we’ve been working to better understand the relationship between water composition and coffee brewing, but it is really in the last 5 years that we’ve made the most progress.
Much of our improved understanding is thanks to the amazing work of @chhendon and @mcolonnadashwood and their book Water for Coffee. We’re also very proud to have contributed to the book in a small way. If you have the book, take a peak at Case Study #4 for a fun anecdote on the major link between water composition and roast profiling, and the email that I received from @reneredzepinoma (ok it wasn’t just to me as it was a group email, but still pretty cool). If you don’t have the book (or even if you do for a slightly longer version of the story), check out the link in our profile.
It seems obvious, but the fact is that every roaster roasts to their local water composition, whether recognized or not. In this series we’ll talk about how we’ve chosen to condition our water, and the work we’re doing to advance the consistency and quality of this important ingredient, which makes up more than 98% of filter coffee.
Welcome to Round 2 of #waterforcoffeeseries, our approach to water for coffee.
Back in 2007, we used water in the 70-80 ppm (parts per million) range. Our goal was simple: maximize our mineral content while protecting our equipment. Our water in Calgary has a pretty stable pH of 7.8, and based on its carbonate and general hardness, this range of TDS was selected to zero-out two calculations called the Langelier Index and the Ryznar Index. These indexes both indicate whether water will precipitate scale (CaCO3) if the index is positive or be corrosive if negative. While we still check these indexes today, we are much more informed about the effect of individual water constituents on coffee flavor.
Central to our roasting philosophy is the avoidance of roast artifacts. In simple taste terms, we fault a coffee if it tastes grainy/cereally on one side of the spectrum or ashy/roasty on the other. Splitting this difference sometimes feels like an impossible task, as some coffees only seem to wake-up with a level of development that produces a bit of an ashy taste. After years of grappling with the issue, I finally came to a realization: what if we specifically chose our water composition to maximize the roast level we could achieve before “ashy/roasty” flavours presented themselves? From my MAD coffee experience (mentioned in the last post), I knew this would mean manipulating the bicarbonate level in our water, as the most important attribute of our water. After extensive testing we settled on 18ppm HCO3 (bicarbonate).
An essential criterion for our chosen water composition was that our broad range of customers could produce (in their shops or homes) the water we’re roasting our coffee against, thereby optimizing their brewing process. For this reason, we favoured a simple Reverse Osmosis (RO) system, which is obtainable by any shop, and could be produced at home by mixing in distilled or RO water into the city water. The full water composition details we’re using can now be found on our website on the product page of any coffee or espresso under: BREWING WATER SPECIFICATION. In the next post, I will delve into the custom water system I’m designing!
As promised, this post will discuss the water system I’ve been working on for years. In fact, it’s been a decade in the making, at least from the first time I had the idea.
It’s a bit misleading to call my work a “water system” because it's actually a “water control system", which can be retrofitted to any Reverse Osmosis (RO) mixing system. Before we talk about the system I built, let’s talk about the problem it’s meant to solve.
All RO mixing systems I’ve seen work on basically the same principle. They draw your source city water through a carbon filter to remove chlorine, bad taste/odour and then push or pull it through a membrane. This membrane is so fine that it traps all of the larger mineral content and lets the small water (H2O) pass through. This near “pure” water is then mixed back with the carbon-filtered city water to bring some mineral content back into the water.
And now here’s the rub: The ratio of the pure vs. city water is controlled via one or two manually adjusted valves. First of all, it’s hard to adjust the knob of these valves to the correct ratio, as they’re very sensitive (small changes in the valve make big changes to the ratio). Secondly, there are so many ways that this ratio changes all on its own, even if the valve stays in the same place. For the geeky ones out there, some of the variables: the incoming water pressure, the outgoing water demand and/or pressure, the age of the membrane and of course, the composition of the source water.
On to my idea, which is actually quite simple: use a control system to continuously, automatically adjust the valve(s) to hold the TDS at a desired value. This control system adapts to all of these changing variables automatically. Ok, it’s simple to say out loud and a hella lot more complex to do, hence the decade in-between the idea and implementation, but I have a working system now!
The leading photo shows the control valves and controlling motors and the 2nd photo (below) shows the high-accuracy TDS (conductivity) probe. More details on how the system works, and the actual results in the next post!
Previously, I introduced the “water control system”. In this post, I’ll talk about how it works. This is going to get quite geeky, so brace yourself.
As some might recognize from the 1st photo, the heart of my control system is a Raspberry Pi computer. For those unfamiliar, check them out @raspberrypifoundation. These mega-cool, little computers are inexpensive but powerful and versatile. I use them in many of our embedded systems.
Attached to the Raspberry Pi are 3 circuits from a cool company called @atlasscientific. These capture data from a probe I used, which has both a high-precision conductivity sensor and an RTD temperature sensor on-board (see the 2nd photo).
The conductivity sensor allows me to effectively read the total dissolved solids (TDS) in the water, and the temperature sensor is important because water’s conductivity varies with temperature, but of course TDS does not. Therefore, I need to compensate for temperature to obtain an accurate TDS.
To interface these circuits to the Raspberry Pi I2C bus, I designed my own little printed circuit board (PCB), which was fun!
The brains of the control system is the Proportional Integral (PI) control loop software I wrote. Thankfully, I had already written it for our roaster (see: #customroasterseries), so I was able to repurpose it for this application.
Basically, the control loop reads the conductivity from the probe and talks to two DC motors (with encoders). The motors and motor controllers are from @phidgets_inc, which is an amazing local Calgary company. The DC motors are tied to linear needle valves. One valve controls the amount of 𝘱𝘶𝘳𝘦 𝘸𝘢𝘵𝘦𝘳 and one valve controls the amount of 𝘤𝘪𝘵𝘺 𝘸𝘢𝘵𝘦𝘳. To make the water harder, the 𝘤𝘪𝘵𝘺 𝘸𝘢𝘵𝘦𝘳 valve is opened and the 𝘴𝘰𝘧𝘵 𝘸𝘢𝘵𝘦𝘳 valve is closed, and to make the water softer, the opposite is done.
The tricky part was tuning the PI parameters. If they’re wrong, I would either never reach the desired TDS or become unstable and ring around the TDS. After many iterations, using lambda tuning, I achieved stability. Yah!
Photo Credits: @bstephoto