I’ve finally created a full controller schematic for my Faema Special in KiCad. In typical fashion, I’ve added lots of extra features that are probably unnecessary, but I want them the same!
Being that a lot of it is software in the microcontroller, I’ll continue to add features, but here is what it does in its current iteration:
- Manage boiler water level
- Dispense espresso, with manual preinfusion
- Tracking of number of uses before backflush required
- Automated backflush
- WiFi (YES, THAT’S RIGHT!)
The UI is pretty simple, with just 3 buttons, with integrated LED indicators: Main power, grouphead 1 and grouphead 2. The main button turns the machine on and off (in off mode, the microcontroller just sleeps, drawing about 0.1µA). The grouphead buttons are momentary buttons such that if you push and hold, the controller will open the grouphead valve only (preinfuse, under water pressure, but not pump pressure only), while flashing its LED at 2Hz. When you release the button, it turns the pump on to give full pressure. The second press and release ends the cyle and shuts off the pump and valve. This gives a manual preinfusion period for as long as the user holds the button down.
Additionally, when a counter stored in EEPROM and incremented every time a grouphead is used, exceeds a configured value (also stored in EEPROM), the LED indicator for that grouphead will flash for 125ms every 10 seconds to indicate that the grouphead should be backflushed. An automated backflush can be initiated by pushing and holding the main power button and then tapping the grouphead button. It will then activate for 10 seconds and rest for 8 seconds, five times. This will backflush (when used with the backflush disc and cleaning agent) and then reset the backflush counter.
I’ve designed the controller with a two-wire serial bus (also known as I2C). This is how I might add other accessories, like a WiFi controller and real-time-clock. My first serial accessory for it is a WiFi controller based on an Espressif ESP8266. Why you ask? All I have to say is “Alexa, turn on the espresso machine”, while laying in bed.
I’m thinking about additional functionality for the serial bus, like perhaps each grouphead having its own LCD module or touchscreen controls and simply communicating with the controller to display useful information and request a valve be opened or a pump be turned on. I also think that CANbus will be in the next revision. Also in the firmware for the microcontroller (despite not being hooked up to my reserved pins) I have made provisions for flowmeters for volumetric doses, PID temperature regulation and grouphead temperature monitoring. These might be in my next version.