In making good espresso, consistency is of the utmost importance. The key factors affecting the taste of espresso are temperature, tamping pressure and technique, brew pressure, extraction time, and of course the beans you use. The problem of consistency is difficult to solve with old technology found in most machines because the tolerances are often relatively wide. For example, one shot to the next might taste different but it's hard to say whether or not the shot was pulled at a higher temperature due to the huge deadband on the pressurestat, or the brew pressure was a little higher, or if it was due to human error such as packing the beans too tight. Most people end up assuming the latter, and adjust their (potentially fine) technique, which obviously isn't going to solve the problem.
There are a couple variables that affect the outcome which depend on the technique of a human (such as tamping the beans), which can't be precisely replicated time after time. A perfect example of this is tamping technique. It's very hard to measure, and it's not easy or fun to build a machine that tamps for you.
There are, however, many variables that can easily be controlled by a microcontroller for more repeatable results.
- We can more tightly control the steam pressure of the heat exchanger so that water passing through en route to the brew group head is a more consistent temperature every time.
- Water sitting in the heat exchanger for a long time between shots tends to get hot, which leads to an inconsistent temperature. If the heat exchanger pressure is set so that fresh cold water coming through the heat exchanger is the perfect temperature upon exit, then water that sits idle inside the heat exchanger for an extended period of time is going to be too hot. To mitigate this problem we can add logic to automatically flush the heat exchanger until the right temperature is reached to ensure consistent temperature every time.
- We can control the pressure of the water coming through the shower head.
- We can control the length of time the water flows through the shower head. Pulling shots for too short or too long leads to bitter or sour tasting espresso. Normally, baristas observe the color and opacity of the liquid coming out to determine when to cut off the pump. When the espresso becomes light in color and a little more transparent, this is called "blonding", and is a sign that it's time to stop. It would be interesting to attach a color sensor and attempt to have the microcontroller shut off the brew switch at the moment blonding is observed.
- We can allow a small amount of low pressure water sprinkle on top of the beans and settle before the full pressure water is pulled through. This is called pre-infusion, and can manually be done by pulsing the pump button a few times, waiting a couple of seconds and then leaving it on to actually pull the shot. It would be much nicer and more consistent if this were done automatically via the microcontroller.
In addition to precise control, I'd like the parameters to be easily adjustable so that we can fine tune, and also have presets for different roasts and different grinds. I plan to have the temperature and pressure readings output as a graph on the display during the brew cycle so as to monitor the stability of the system. Typically when people have plotted brew temperature over the length of a 30 second shot, you can observe a temperature drop of a few degrees, and it would be interesting to see what could be done to make this as constant as possible.
I thought about having a basic LCD with a few buttons, but ultimately I was drawn to the simplicity and compactness of a touch screen TFT. You can see details about making the TFT work with PIC32 in my PIC32 TFT driver project.