Steam control using single setpoint PID

The stock steam thermostat on the Rancilio Silvia heats the boiler to  ~ 295 F, then turns off. It does not turn the boiler on again until the temperature drops to ~ 245 F. This wide variation provides poor quality foam, certainly not the rich, thick foam you've come to appreciate at your local coffee house.

So, when I added a PID to my Silvia, I decided that I wanted to control the steam temperature as well as the brew temperature. The problem was that I only had a single setpoint PID. This PID did have an alarm circuit, however, so I devised an inexpensive way to use the alarm circuit to provide much better control of the steam setpoint that the stock Silvia offers.

With reference to the sketch below, it works as follows:

The PID is powered on with the Silvia, via the red dotted line connected to the Auber SYL-1512 PID. When the Silvia is powered on, the PID's SSR output controls the Solid State Relay (SSR) through diode D2, regulating the brew temperature.

The PID is set up such that the High alarm trip point is set to 295 F and the Low alarm trip point is set to 296 F. This causes the alarm output to turn OFF when the temperature climbs higher than 296 F, and to turn ON when it drops below 295 F.

When the Steam switch is activated, the 12V adapter is powered on through the dotted purple wire, providing voltage to the alarm contacts of the PID. (Any power adapter with sufficient voltage to activate the SSR,  usually 3-32 volts, will work here.) This voltage is carried through the closed alarm contacts and diode D1 to the SSR, turning it on. This heats the boiler until the alarm trip point of 296 F is reached. Then the alarm contacts open, turning off the boiler. When you steam the milk and the boiler temperature drops below 295 F the relay contacts in the PID turn back on again, activating the SSR and providing maximum steam temperature.