Schematics and PCB layouts
Loading README and project media…

MadPresso is an open-hardware PID controller for espresso machines, based on an ESP8266 module. It was developed for a Rancilio Silvia machine but is likely usable with other brands as well.
This repository contains the KiCad hardware design files


The design features a zero-crossing detection circuitry that generates short spikes of low pulses around the point in time when the mains voltages crosses the zero-point. This signal is fed to the ESP8266 module which uses it to reset the triac ignition timer. Refer to the firmware project for more details.
The boiler temperature is measured with an LM35DT and sampled with a 10-bit ADC. The value is used as input to the PID logic implemented in the firmware.
Triac are controlled by the firmware as well, and isolated from the digital part through optocouplers.
Two line-monitor voltage sensors are used to detect the state of the "Shot" and "Steam" switches. Both are isolated from the digital logic through optocouplers as well.

The connectors located on the upper side of the PCB have the following functions. Note that pin 1 is on the left side of the connector when looked at as shown in the picture.
This connector carries all the 230 VAC mains functions. The mating part is an RS Pro 8971222 Pluggable Rising Clamp Terminal.
This connector is intended to be used with an LM35DT analog temperature sensor. The mating part is a 3-pin, 2mm pitch JST PH plug.
This connector is a general-purpose I²C extension that may be used to connect an OLED display, for instance. The mating part is a 4-pin, 2mm pitch JST PH plug.
The PCB is made to fit into a Hammond 1591XXBT plastic case. Cut-outs need to be milled into the case for the connectors.
The schematics are provided as PDF and as KiCad design file.
The design is released under the CC-BY-SA-NC license. Commercial use is hence prohibited.