woensdag 30 januari 2013

Arduino board checking espresso machine temp

How nice that Adafruit prints some basic info on the back side of the stamp-sized MAX31855. I first soldered on the blue unit that takes the K-type temperature probe. Next, the comb of pins that will have 5V and ground and the other connections with the Arduino board: one line for the Arduino to beat the time for all activity on our little blue island, one for the Arduino board to tell MAX when to check the temperature probe and report what it says and one data line to hand in the reports to Arduino.

The mini MAX sitting on the breadboard ready to be wired. To the left next to it is the much more minuscule and vulnerable TMP36 IC which did temp measurement until now. 

Wired up, time to hook it up. The probe strapped to the hot brew group of the Ponte Vecchio Lusso 2 espresso machine. The circuit reports room temperature (well it's actually the internal temperature of the chip living on the blue MAX island but over there it's about as warm as it is here) and the temp on the tip of the probe. Next, I could send it over to the laptop using a network connection, or save a lot of data on a memory chip to analyze on the computer later and turn into graphics, noticing any dips and spikes during espresso making or trends along the day, warmup and cooling wave forms.

Roemer, Snah and I are brainstorming about a setup which must look nice (to us, at least) and be open to lots of information. Reading and collecting data from the machine, but also from the room and from the internet, using several displays to reflect things back into the room and even back into the internet. 
Why couldn't an espresso machine, like the Londinium I for instance, have its own twitter account? Its own diary with its heartbeat, temperature and extraction accomplishments documented in graphics and images. You'd be surprised what a Londinium can say... I'm sure it knows some Omar Khayyam by heart.

There are stars with less substantials to tell us!

================
Arduino code below
================

Arduino code used:

/*************************************************** 
  This is an example for the Adafruit Thermocouple Sensor w/MAX31855K
  Designed specifically to work with the Adafruit Thermocouple Sensor
  ----> https://www.adafruit.com/products/269

  These displays use SPI to communicate, 3 pins are required to  
  interface
  Adafruit invests time and resources providing this open source code, 
  please support Adafruit and open-source hardware by purchasing 
  products from Adafruit!

  Written by Limor Fried/Ladyada for Adafruit Industries.  
  BSD license, all text above must be included in any redistribution
 ****************************************************
 copied and edited for Adafruit RGB LCD / Group head temp measurement on 
 Ponte Vecchio Lusso espresso machine
 ****************************************************/

#include "Adafruit_MAX31855.h"

#include
#include
#include  
Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();

// These #defines make it easy to set the backlight color of LCD
#define RED 0x1
#define YELLOW 0x3
#define GREEN 0x2
#define TEAL 0x6
#define BLUE 0x4
#define VIOLET 0x5
#define WHITE 0x7

byte celsiusTeken[8]={   // creating the 'degrees' character
 B00111,
 B00101,
 B00111,
 B00000,
 B00000,
 B00000,
 B00000,
 B00000
};


int thermoCLK = 3;   // Which pins used. CLK is Clock, beating the time for the work to be done
int thermoCS = 4;     // CS is Chip Select, controller telling the chip when to collect data and send
int thermoDO = 5;    // Data Output to digital pin 5

// Initialize the Thermocouple
Adafruit_MAX31855 thermocouple(thermoCLK, thermoCS, thermoDO);

// List of stuff to keep doing over and over  
void setup() {
  Serial.begin(9600);              // Send reports to laptop pc if connected
  // Now set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  lcd.setBacklight(BLUE);
  lcd.createChar(0,celsiusTeken);  // from now on 0 means 'that degrees character'
  lcd.print("MAX31855 test");
  // wait for MAX chip to stabilize
  delay(1500);                             // the wait lasts 1500 milliseconds
}

void loop() {
  // basic readout test, just print the current temp
   lcd.setCursor(0, 0);                 // on first line x,y = 0,0
   lcd.print("Kamer: ");              // actually 'internal temp' of the chip
   lcd.print(thermocouple.readInternal());
   lcd.write(0);                           // degrees character
   lcd.print("C");                        // C for Celsius
     
   double c = thermocouple.readCelsius();  // same, now for the tip of the temp probe
   lcd.setCursor(0, 1);                    // on line 2, starting at x,y = 0,1
   if (isnan(c))                           // in case no info to show, report problem
   {
     lcd.print("T/C Problem");
   } 
   else 
   {
     lcd.print("Lusso: ");                
     lcd.print(c);
     lcd.write(0);
     lcd.print("C");
     lcd.print(" ");  
   }

   delay(1000);                            // hold on a sec and start again
}






3 opmerkingen:

Max Power zei

How did you physically attach the temperature probe to the brewing cup? Is it attached to the outside of the basket with the grounds?

Frans Goddijn zei

Hi Max, in the above picture I attached a 'naked' probe (just the two ends of wire meeting) to the group (the round metal piece under which the portafilter and basket are attached). Now I have a long pin with probe built in attached using two velcro straps. I expect this gives a more overall average reading of the group. I will post more pictures and explain how the setup is now. Thanks for writing! Frans

Frans Goddijn zei

PS: see the next post
http://kostverlorenvaart.blogspot.nl/2013/02/lusso-temp-measurement-setup.html