On Brains and Brawn …

I have decided to use an Arduino Pro Mini (5V @ 16MHz) as the brain inside Silvia. The Arduino community is very active, the devices are well-supported, and above all, it’s cheap. This microcontroller is $19, and has everything onboard to immediately begin controlling Miss Silvia including built-in serial, SPI, and I2C communication busses and of course digital input/output pins.

The temperature sensor I chose to replace the bi-metal thermostats inside Silvia is a PT100 RTD sensor (a platinum resistor inside of a bi-metal thermostat case) from Auber Instruments. This device should provide accurate and reliable temperature measurement to within 0.1°C. The electrical resistance across the RTD changes proportionate to the temperature (more on this in a bit). Effectively, this is a drop-in replacement for the bi-metal thermostat and does not require any tinkering short of swapping one for the other. At $23, this component is by far one of the most expensive that I plan on using.

That the RTD sensor is so accurate necessitates a comparably accurate device capable of measuring the small changes in resistance that the RTD will produce. An analog-to-digital (A2D) converter measures the voltage of a device in reference to known voltages and converts it into a number. The Arduino has a 10-bit (1023 possible values) A2D converter on board, but the voltage range is between 5V and 0V, giving an effective measurement range of 4.88mV. While this might seem like a small voltage to many, this only translates to an effective accuracy of ±10°C across the RTD. I needed a device far more sensitive and able to provide 2 orders of magnitude greater resolution. I settled on the Texas Instruments ADS1247. This is a 24-bit resolution A2D that supports SPI serial communication, has a built-in PGA (signal amplifier) and is able to take 2000 sample readings from the RTD every second. Based on the working design that I’ve come up with, this device will be able to effectively measure voltages as low as 3.35×10-8V. That’s really low, and in fact provides effective accuracy of 0.02°C. Moreover, this device contains two A2Ds allowing for a second temperature reading if a second RTD is present. Is it overkill? Maybe, but the ADS1247 is thoughtfully designed and easy to implement, making this a good choice. Quite literally, two low-tolerance resistors and the PT100 RTD sensor will be wired across this device. The remaining pins will be at ground, 5V, or wired to the Arduino for communication. While the device has a nominal $5 price, Texas Instruments has a fantastic ‘Sample’ program. I was able to obtain three of these little guys for free!

Other design choices include a 2 row x 16 character display from Newhaven Display (NHD-0216K3Z-NSW-BBW) at a $22 price tag. This display has a wide operating temperature range (-20°C to +70°C), supports I2C, SPI and RS232 serial communication, has custom programmable character sets as well as built-in backlight and contrast control. What this translates to from a design perspective is fewer pins that are required for dedicated communication with the Arduino (only two pins are required as it will be wired up to the I2C bus onboard the Arduino).

To report on the main switches, I chose to go with the MID400 AC Line Monitor from Fairchild Semiconductor. This part has a nominal $3 price tag. One chip is required per switch (Brew, Hot Water, Steam). These chips can be wired directly to the Arduino and require only a single 22k resistor to function.

Finally, to actually control and operate the boiler and pump within Silvia requires a relay capable of switching on and off 120VAC at high currents from the 5V logic that the Arduino will produce. Solid-state relays (SSRs) are an effective technology for this, reasonably priced and compact enough to fit comfortably within Silvia’s abdomen. From seeing diagrams of Silvia’s components, as well as opening up my own machine, all electrical connections within Silvia are made using QuickConnect tabs / fins (readily available from the automotive section at your favourite hardware store). This is great because it allows easy installation of a relay within Silvia. I decided to go with the Crydom UDP2415DF series as this relay has two SPST optical zero-crossover SSRs built in to one package with QuickConnect tabs allowing for effective control of both boiler and pump. Each relay within the package is rated up to 15A @ 280 VAC (more than enough for Silvia) and can be activated by 3-32 VDC. Although the price tag on this is somewhat more expensive ($58), two independent SSRs will run you about the same from Crydom. The back of the relay is metal casing and designed for connection to a heat-sink. Rather than use a heat sink, I’ll mount the relay to the metal interior using double-sided thermal heat-sink tape and therefore use Silvia’s body as the heatsink. Regardless, the relay has an operating temperature up to 80°C.

Finally, to power the Arduino, A2D converter, display, and SSR, I decided to go with the VSK-S3-5U onboard switching power supply from CUI inc. This is basically an all-in-one package designed to output 5V of regulated power and up to 600mA of current – more than enough to power Silvia’s brains. This comes in at $15. I suppose I could have hacked apart an old wall-wart power adapter, but due to the precision and stable voltages required to make an accurate reading from the A2D, I needed a stable and well-filtered 5V source.

That’s it for big-ticket items. The remaining components are standard resistors and capacitors. The rough total based on these component decisions is ~$150. Other expenses I anticipate are the final PCB and two low-tolerance (high accuracy) resistors required for the A2D.

More to come! I’ll also post a final parts-list / BOM once I get the schematics finalized.

The Idea …

So I’ve had my Miss Silvia now for five months. And in that time, I’ve managed to finess some fantastic shots from her. But there’s a routine that I must go through. Many who own a Silvia are fondly familiar with the idea of “temperature surfing” – that you catch Silvia at her warmest (and in this case, ideal temperature) by pulling water through the group head or steam arm until the boiler turns on, and then pulling your shot just after the boiler turns off. The reason for this is obligatory – in the quest for a reliable (admirably so) design, Silvia uses bi-metal thermostats to control how hot and bothered she gets. For non-technical folk, it means that the boiler temperature can fluctuate by up to 15°C (~30°F) and that translates to an inconsistent shot with a myriad of unwelcome flavours. That I pay reasonable money for my espresso beans, means that I want to enjoy the best possible flavour from my beans.

The Silvia is commonly modified (as I’ve seen online), and there are several kits that are sold to provide Silvia with optimal temperature control. The device is called a PID controller – a Proportional-Integral-Derivative controller (see the Wiki page if you want to know more).  The gist of it is that a PID installed on Silvia ought to provide reliable and accurate control of her innards. There are several kits available on the market that allow refined control of Silvia with a reasonably appealing aesthetic but with some caveats.

I’m a tinkerer, and when I’m presented with a problem, I like to reinvent the wheel. This for me means that rather than buy a PID kit, I’m going to design my own. The features that I want to include far exceed anything that’s available on the market, so it seems fitting to try my hands at this and learn a bit along the way.

My posts in this blog will be about design choices, the build process, successes, and downfalls. Ultimately, I hope to create something wonderful.