Tuesday, August 9, 2011

Silvia is a virgin...... again!

Well.... as you can see form everything in this blog, Silvia and I share quite a history. I can't imagine how many hours were involved in this project, the new skills to learn, and the satisfaction of bringing the project to a successful conclusion.

But, like many things... there is a time to move on. My espresso interest has taken me to a new commercial machine, and so it's time to say "good bye" to Silvia.

Because none of the original electrical wiring needed to be cut for the Arduino modification (I used quick connectors for everything) returning Silvia to her virgin form was very quick and easy. In fact, I was amazed at how little time it took to undo compared to all the hours it took to do! Once completed, of course I had to test her out...

Actually tasted as good as it looks!

I have photos of Silvia, in her new form posted on Flickr, and you can see the photos here. There is also a slide show of the images.

The only modifications that I left behind are the following:

  • Brew pressure adjusted to 8.5 bar
  • SSR retained for future PID installation - if desired
  • Dispersion screen - countersunk / flat head screw
  • Insulation remains on the internal steam tube (looks cool!)
I am sure that Silvia will find a new home, with many years of service ahead!

Thursday, January 20, 2011

Programing Code

Long time since my last post... got very busy, but I've been enjoying the fruits of this labor! The espresso is great!

I have posted all of the programing code at this LINK. The code is saved in the parent directory called: Silvia's Button Brain. Open that directory and it takes you to two sub-directories:
You can then open each of these sub-directories (just click on the links).

Silvia's Button Brain Code/ directs you to the following files:

And then Silvia's Libraries/ takes you to the library directory: SilviaLib/. In this directory you'll find the following files:

This gives you access to the innumerable hours and hours of programing that went into the producing the various functional components of this modification.

So there you have it!! One really important thing to pay attention to. This code was compiled under Arduino 10 (Arduino software v.10). As of today... the latest version is Arduino 22!! I am not certain that this code will compile successfully under any version other than V.10 (if it does , let us all know!).

All of the Arduino software can be found here: Arduino Software. From this page you can download any version you like, but if you scroll down to the lower third of the page you'll find:

"Arduino 0010 (release notes): Mac OS X, Windows, Linux "

That's what you're looking for to run the code that runs this Silvia Modification.

Good luck..... and above all..... Have fun!

Saturday, February 14, 2009

Programing is Done!!


It's been a while since my last blog post, but a lot of progress has been made!

It looks like the programing is complete at this point. The Arduino based modifications that I am completing were based upon the inspiration, encouragement, and hard work of Tim Hirzel.

The major departure that I made from Tim's design of the hardware and software, with a huge amount of programing help from my friend Arnold, was to switch to a 6-button interface for input rather than using the Wii nunchuck. The 6-button interface that I'm using, is physically really made of three buttons. One directional button (up, down, right, left) and then two buttons like those on the Wii nunchuck (i.e., C and Z). The functions are the same as the way Tim's Wii nunchuck works.

The button's that I am using are from Sparkfun, and they come in a three button set called:
where the split buttons are obviously 2 separate buttons, but not so obviously, the round button can be wired to act as a directional button (with up, down, right and left functions). I am just using one of the split buttons + the round button, creating a 6-button interface (I just cut off one of the split buttons!). The significant electronics with this button, and to efficiently utilize the sparse 5v outputs from Arduino, is to use a single common 5v input among all of the buttons. The outputs from each button are then directed to defined digital inputs where the state of these pins is either 5 volts or zero volts, depending on whether or not a button is pushed.

The other significant departure from Tim's design centered around using the Opto 22 IAC5 optosiolators, and PB4 data acquisition control board so that Silvia's face panel switches operate in all respect like a virgin (i.e., even the indicator lcd's work as in the original)

So the function controls that this modification has made possible are:

  • PID Brew and Steam temp control within + / - 0.5 deg F.
  • Ability to tune the PID algorithm and therefore control the time / temperature response.
  • Resettable shot timer, that starts automatically when the brew button is pushed to start the brew.
  • Ability to set two wake-up times (morning and afternoon) so Arduino automatically turns Silvia on whenever set to do so.
  • A sleep timer, so that Arduino puts Silvia to sleep, whenever set to do so.
  • A "forced" sleep function - can put Silvia to sleep with out waiting for the sleep timer.
  • Day Month Date Time read out on LCD.
  • Water level alarm - that prints the need to add water to the LCD (using an external tank sensor).

At this point I have all of the code posted under the name Silvia's Button Brain. Re-writing the code took a lot of effort to enable the functions listed above. It required a re-write of the code itself, and a change from Tim's organization of the Arduino libraries. The code compiles under Arduino 0010 (and probably not under other versions). So if you want to use this version of the code, be sure to copy both Silvia's Button Brain Code and Silvia's Libraries. A great place to learn more about the variations is to look at the Arduino Wiki CoffeeTronics.

Thanks again to Tim, Karl, Arnold... and everyone who has offered help and suggestions.

I am now, making the project box that will hold Arduino close to Silvia. It will be mounted like A Tail about Silvia and then put it all together! It is being constructed out of 0.25" aluminum sheet. I already have all of the pieces cut and milled, and will be welding this week! After that, a little finishing.... then on to anodizing.

Will post more as it progresses!

Wednesday, December 24, 2008

Silvia - Arduino Pin Connections

I have just completed a table that is a summary of how all of the different hardware modules connect to the analog, digital, (+v), and ground pins on Arduino. These connections really follow directly from the software code that is used for this project. I thought that I'd just publish them in one place to help anyone contemplating the joining of Silvia and Arduino!

This table shows the module (hardware) to Arduino pin connections for two possible Silvia and Arduino configurations. The two configurations are designated by the interface method of input to Arduino, which in turn controls Silvia's actions.

If you want to use the Wii nunchuck as the interface for input to Arduino, then use the information provided in the column labeled: "ARDUINO PIN Wii Interface"

If you want to use a 6-button interface (of what ever design you like) for input to Arduino, then use the information in the column labeled: "ARDUINO PIN Button Interface"

Keep in mind that this table corresponds only to the specific hardware design that I used for the components in Silvia. My design differs from that of Tim Hirzel, this has to do with my use of the Opto 22 optoisolators to sense the status of the face panel switches, whereas Tim chose a low voltage re-wire of these switches. This then necessitated the use of two additional SSR's for control of the Silvia's pump and solenoid. If you want to go in Tim's direction, then the changes are self evident from looking at his SNV code.

One last note...

It was difficult to get this table to format for HTML, so if it is hard to read, just use ^Control + to make the text larger... good luck!!
Arduino Pin C
Button Interface
Wii nunchuck



} I2C


Button Interface

DIGITAL 36-button interface is used in place of the
Wii nunchuck.
Many hardware options are available






Real Time Clock



SQWDon't useDon't use



Temp Amplifier

If LM34AH-ND is not used




Temp Sensor

is not used

Vs+3.3v / 5v*3.3 / 5v** Adjust Calibration



Water Level Sensor

Lead from pin 15v5v

Lead from pin 2ANALOG 3ANALOG 3

Lead from pin 7Sensing ElectrodeSensing Electrode

Lead from pin 8GNDGND

PB4 Optoisolators1. (5v)5v5v


3. Top Center DIGITAL 11 DIGITAL 11

5. Lower DIGITAL 10 DIGITAL 10



Sparkfun LCD



RXDIGITAL 3DIGITAL 2#define but don't use


Heater Relay SSR



Thursday, December 18, 2008

Progress Photos

Below are a few progress photos to give an idea of where the project is to date. All of the components that I will be installing internal to Silvia, have been installed. Those that will remain external, in an attached project box, have not yet been installed. In the next week of so, I plan to make my own project box, since I haven't been able to locate a box to purchase that is the size that I want to use.

The photos show some of the individual components prior to installation, the last photo illustrates the installation.

This image demonstrates the installation of the Solid State Relay (power supply to the boiler heating element) in the "usual" location, i.e., behind the lower front panel. The RED 5v supply wire is the PWM control from Arduino. The GREEN wire is connected to a common Arduino ground. The PURPLE wires out are the power supply to the heating element.

This photo shows the water tank, and the water level sensing probe. The sensing probe is made from a piece of copper de-soldering braid. The braid is soldered to a 22 AWG wire with a bullet connector at it's terminal end. The bullet connector allows for a "quick disconnect" in order to easily remove the water tank from Silvia when necessary. The braid is glued to the water tank using 3M's 5200 Marine Adhesive (really sticky stuff!).

Here the small printed circuit board that I made to organize the QT113 capacitance sensor that is used for water level detection, the Css reference capacitors, the 5v and ground supply, the input from the sensor electrode, and the output to Arduino. The board is attached to the stainless steel wall that separates the boiler compartment from the water tank / pump area inside Silvia. The PCB is screwed into nylon bushings that are glued to the stainless steel wall with the same 5200 Marine Adhesive.

This is how it all goes together as it will be installed

Now lets take a look at the IAC5 Optoisolators....

The four IAC5 optoisolators are installed on the PB4 data board which allows for really nice connectivity and organization. On the Control Side, each individual optoisolator is connected to one of Silvia's face panel switches (power, brew, steam, hot water). The Data Side outputs 5 vdc when each of the corresponding face panel switches are "off" and 0 vdc when the corresponding switch is "on". This way Arduino can "sense" the status of Silvia's face panel buttons.

This is how I installed the PB4 with the optoisolators. The PB4 is standing on an edge, you can see a white strip to the left of the numbers on the PB4; this strip is a piece of synthetic "asbestos" to act as a bit of a thermal insulator. There is another piece of this thermal insulator that I placed over the shaft of the steam valve too.

Here is a close up of the LM34AH temperature sensor. I made a small bracket out of a section of a wall of 1" copper tubing. It is shaped so that it's ID is just slightly bigger than the OD of the LM34AH. It holds the LM34 tightly against the boiler. You can see a bit of thermal conducting grease between the boiler and the temperature sensor.

Another view of the same thing. The LM34 is held down by one of the pressurestat screws (steam)

Ok... so this is the last photo for now... It shows how I managed to pack all of the components in the photos above into Silvia:

The legend to the numbers is as follows:

1. LM34AH IC Temperature Sensor
2. IA5c Optoisolators installed on the PB4 Data Board
3. Water Level Sensor - QT113 on the homemade pcb attached to the stainless steel dividing wall
4. Water Tank - water level prob is on the front outside surface of the tank but not visible in this view
5. Hard shell, split tube thermal insulator covering the tube connecting to the steam valve
6. Woven PPS Nomex thermal insulator for a few of the wires close to the boiler.

That's where I am to date... I just got the chrome goose neck that will attach the project box to Silvia. The project box will hold Arduino, the LCD, the Real Time Clock (RTC) module, and the input device (either the Wii nunchuck, or the button interface I am currently working on). Also, I didn't take a picture of it, but the 12vdc transformer that supplies Arduino has been "spliced" into Silvia's main power supply, and is located behind the stainless steel dividing wall, underneath the water tank, next to the ULKA pump.

More to follow, once the project is completed.........

Sunday, October 19, 2008

Parts List for the Intrepid

Before I begin, I want to acknowledge and thank Tim Hirzl who initiated the project:

Arduino and Silvia: Two Italians, One Tangled Affair

Tim's efforts, and inspiration were the spark I needed to take my Silvia along this road. He has been of invaluable help to me in this project, and well deserving of the public "thank you". Along the way, Karl Gruenewald, aka The WABE, was another who followed in Tim's footsteps and was tremendous help to me as well.

This is my first post about my progress on this project. Although I have almost completed the project at this point, I have resisted posting up until now, because I really wanted to wait until Silvia and Arduino were making beautiful espresso together before talking about my experiences. However, due to interest at CoffeeGeek's forum on espresso machine modifications and restorations (New Silvia Mods) I have decided that, at least at this time, I can post the list of parts that I used for this project and suppliers.

So.... for those interested what follows is a complete list of the parts used to date in my modification of Rancillio's Silvia. One last note... I did not include any mention of a project box, or enclosure for the electronic components. Tim choose an very nice installation internal to Silvia as shown on his blog. I will use an external installation for Arduino, patterned after the great work shown at A Tail About Silvia.

Also... a great site to check out for more references is the Arduino wiki CoffeeTronics

So here it is..... enjoy!

Silvia and Arduino

Parts list for the Intrepid

SPARKFUN (All parts except 8, 9, & 10 are optional - link)

1. 2 x Polarized Connectors - Header (2-Pin) (SKU#: PRT-08233)

2. 2 x Polarized Connectors - Housing (2-Pin) (SKU#: PRT-08095)

3. 2 x Polarized Connectors - Housing (4-Pin) (SKU#: PRT-08097)

4. 2 x Polarized Connectors - Header (4-Pin) (SKU#: PRT-08231)

5. 1 x Polarized Connectors - Housing (3-Pin) (SKU#: PRT-08096)

6. 1 x Polarized Connectors - Header (3-Pin) (SKU#: PRT-08232)

7. 1 x Polarized Connectors - Crimp Pins (SKU#: PRT-08100) $1.95

8. 1 x Serial Enabled 16x2 LCD - White on Black (SKU#: LCD-00813)

9. 1 x Real Time Clock Module (SKU#: BOB-00099) $19.95

10. 1 x Wall Adapter Power Supply - 9VDC 650mA (SKU#: TOL-00298)

11. 1 x Mini Button Pad Set - Black (SKU#: COM-08997) $4.95
Note: the center button is a 4-way directional button (up-down-right-left)

12. 1 x Mini Button Pad PCB (SKU#: COM-08963) $1.95


K Type Washer Thermocouple
Model: TC-K3W
$9.50 (M3 or #6 screw, 3’ long leads)

(Note: One could use the T0-46 packaged, LM34AH-ND from National Semiconductor, an IC temperature sensor (link) instead of Auberin’s thermocouple and Analog Device’s thermocouple IC amplifier: AD595CQ)


Precision IC Temperature Sensor - Fahrenheit
(see note above)


1. Arctic Silver® Ceramique™ Thermal Compound
Model: A2350 | Catalog #: 28-1098

2. Desoldering Braid (also used for water sensing electrode probe)
Model: 64-2090 | Catalog #: 64-2090

3. Dual General-Purpose IC PC Board (used with QT114 / 113)
Model: 276-159 | Catalog #: 276-159

4. 2-Position PC Board Terminals (used with QT114 / 113)
Model: 276-1388 | Catalog #: 276-1388

5. 0.1µF 50V Hi-Q Ceramic Disc Capacitor Pk/2 (used with QT114 / 113)
Model: 272-135 | Catalog #: 272-0135
$1.49 *

6. 0.047µF 500V 20% Hi-Q Ceramic Disc Capacitor (used with QT114 / 113)
Model: 272-126 | Catalog #: 272-0134
$1.49 *

*one of each used - see photo on future blog!

NEWARK (Parts other than 1, 2,3, & 4 are optional, as needed - link)

1. 05F7093 Each/ $18.68
Manufacturer Part No: AD595CQ Analog Devices
Description: Temperature Sensor IC; IC Function:Temperature Sensor IC;

2. 92K8429 Each/ $5.06
Manufacturer Part Number : QT114-DG
Description: QPROX SENSOR, DIP8, 114

note: 92K8427 Each/ $4.16
Manufacturer Part Number : QT113-DG
Description: QPROX SENSOR, DIP8, 113
This IC is easier to work with.

3. 52K3276 Each/ $0.14
Manufacturer Part No: 1-390261-2
Description: DIP Socket; No. of Contacts:8; Row Spacing:0.3"

4. 52K3277 Each/1 1 $0.158 $0.16
Manufacturer Part No: 1-390261-3
Description: DIP Socket; No. of Contacts:14; Pitch Spacing:0.1"

5. 58K5034 Tape and Reel C/1 1 $0.122 $0.12
Manufacturer Part No: MCCFR0W4J0270A50
Description: Carbon Film Resistor; Series:MCCFR; Resistance:27ohm

6. 62J1902 Each/ $0.80
Manufacturer Part No: 3362P-1-502LF
Description: Trimmer; Series:3362; Track Resistance:5kohm

7. 15M2094 Tape and Reel C/ $0.66
Manufacturer Part No: 23BR5KLFTR13
Description: Trimmer; Series:23A Series; Track Resistance:5kohm

8. 01H9629 Each/ $0.23
Manufacturer Part No: AND114-R
Description: LED Lamp; Bulb Size:T-1 3/4; LED Color:Red; Luminous

9. 71C4123 Each/ $0.89
Manufacturer Part Number : 1729128
Description: TERMINAL BLOCK, PCB, 5.08MM, 2WAY; Connector type:Terminal Block,

10. 58K5042 Tape and Reel C/ $0.12
Manufacturer Part Number : MCCFR0W4J0331A50
Description: Carbon Film Resistor; Series:MCCFR; Resistance:330ohm
Tolerance:+/- 5%;


1 x Arduino Breakout Shield v1.2 Kit $20.00 (excellent)
1 x Thermocouple Sensor v1.0 Raw PCB $1.00 (excellent)
This is used with the AD495CQ


Arduino Diecimila arduino-diecimila 1x 33.00

16x2 LCD Module While 16x2-lcd-module-while-characters-blue-backli162 1x 9.99
Characters Blue Backlight
(I ended up using the LCD from SparkFun)


Micron Tech
DC to AC SSR Solid State Relay 25A
Sale price: $8.00
Quantity: 3
Subtotal: US $24.00
S&H: US $13.00


New Nunchuck Controller (Numchuck) For Nintendo Wii
Sale price: $5.50
S&H: $6.50


OPTO 22 - IAC5 – AC INPUT MODULES (5) (Optoisolators)
Sale price: $1.45
S&H: $4.80


(PC Board for optoisolators)
Sale price: $10.00
S&H: $13.88


GB – Gardner Bender
Various sizes of Polyolefin Heat Shrink Tubing
3/32" 24 AWG HST-093

1/8" 22-18 AWG HST-125
3/16” 20-12 AWG HST-187

3/8” 12-4 AWG HST-375

Various Male and Female Quick Disconnects. These were used to make the installation 100% reversible. None of Silvia’s original wires were cut. Some from HD, and some from Auto parts stores

FunGizmos.Com (Store)

1 x Wiichuck Adapter (I2C) = $4.00
Free shipping!

Reference: TodBot Blog


Various gauges (AWG) of wire are needed for this project. For internal wiring (inside Silvia) I used temperature resistant 16 AWG Primary wire from an auto parts store. All of the ic wiring to Arduino was 22 AWG project wire from RadioShack. Lastly, I used 12 AWG wire from the Solid State Relay to Silvia’s heating element.

Also... the prices shown are what I paid, and it goes without saying that at this point they are only an indication as they are likely to change. Clearly too, the prices paid for those items I was able to find on eBay were just those paid for that particular auction. Any of the items purchased on eBay (and I was lucky to find what I needed when I needed it) can all be purchased retail if need be.

Good luck! ...........More to follow as the project is completed!