Sunday, May 1, 2011

Saeco Aroma Temperature Profiling

I had big plans this past weekend to do a ski tour up in British Columbia with Fras and a few others (the classic Garibaldi-Neve Traverse), but unfortunately the traveling that I have been doing lately (to Europe for work and then to Ontario to visit family) caught up with me last week and I came down with a pretty bad cold. I was still feeling pretty bad on Friday, and since a 2 day ski tour didn't sound like a recipe for recovery I decided to cancel those plans and have a relaxing weekend around Seattle.

I have getting interested in coffee during the last few years, and last year I received a Saeco Aroma espresso machine for my birthday from my parents:
So awesome! I have been using it regularly since, and could not imagine living without one now. From the reading that I have done, it seems that one of the most important factors in getting a good shot of espresso is that the temperature be tightly controlled during the 20-30 second period over which it is pulled. With this in mind, I was curious as to how tightly regulated the boiler temperature on my Saeco was. So, this weekend I set about finding out. The first thing that I did was open up the Aroma to gain access to the boiler, where I could monitor the temperature. I then affixed a digital temperature sensor IC to the boiler using thermal adhesive:

I next interfaced this over its I2C serial bus to an Arduino microcontroller board, and wrote some code to run on the Arduino that would grab the temperature reading from the sensor every 250 ms and fire it out the serial port:

I then used a FTDI UART-to-USB converter to connect the Arduino to my laptop:
I wrote a Python script to run on my laptop that would accept the incoming temperature data and log it to a file. Finally, I wrote a function using Scilab to plot the data and annotate the various events that occurred while using the Aroma (which I manually recorded using a stop watch. If you think all of that sounds like a lot of work, it is, but I need to do something to fill my time when I am too sick to go skiing or ride my bike.So, here is the fruit of my labor:
You can see (click on the plot to enlarge it) that the temperature swings across a pretty wide range, so my next sick-day project will be to add a solid-state relay to the Aroma with some PID control that should hold it to a tighter temperature range (and make my morning cappucinos that much more delicious). Bene!


  1. Cameron, You are a geek. I'm glad you are on our team!

  2. Totally geeking out and I adore it! Totally going to miss the once a year sightings this year - you two are an awesome team and a total inspiration. Until next time!

  3. Wow ! Great job.!
    Wish I could do that.
    Makes me wonder, if I just wanted to add a timed relay to turn the machine off after 4-5 minutes, what would you recommend ?