HX Flush Arduino Project

Beginner and pro baristas share tips and tricks.
User avatar
fergus420

Postby fergus420 » Mar 22, 2014, 9:31 am

I have been working on a small project to assist in the HX flush routine of my QuickMill Vetrano. The HX flush routine isn't complicated but I had an Arduino board lying around and an itch to scratch. The project is pretty much a glorified timer with a state machine to move through the flush and brew process.

Features
- Keeps track of idle periods to detect whether an idle cooling flush is needed
- Provides audio feedback during the brew process so you can keep your eyes off the timer
- Collects, stores and dumps time statistics through serial port
- Throttles shots per hour with post brew stabilizing period

Hardware
1 - Arduino Uno R3 w/ Case
1 - Arduino ProtoShield
1 - NO momentary button
1 - Piezo
1 - LCD

Source (The .ino file is the Arduino IDE source)
Google Drive Link
I usually don't comment my code very well so if you have questions just ask.

I have learned a lot from this site and wanted to give something back. Maybe someone will find this useful.
rich

User avatar
fergus420

Postby fergus420 » Mar 22, 2014, 7:17 pm

Here are a few pictures. I had to make some of them dark so the LCD screen would be readable.

Image

Image

Image

Image
rich

User avatar
fergus420

Postby fergus420 » Mar 22, 2014, 8:42 pm

I have about four weekends worth of shot data and have begun to plot some idle vs flush times. I am interested if there is reliable way to predict shot temperature based on time and not temperature. The first thing I noticed, it doesn't matter how long the machine has been idle, it doesn't take longer than 27-28s to flush the group to 206F.

Image

Here is a plot looking at flush data with shorter idle times. The logarithmic trend line reaches the 27-28s mark at around the 9-10 minutes, which lines up with the long idle cooling flush recommended in the Vetrano Buyers Guide

Image
rich

jonr

Postby jonr » Mar 22, 2014, 8:58 pm

I expect that measuring the temperature would reduce the rather high variability.

User avatar
Chert

Postby Chert » Mar 22, 2014, 10:26 pm

Thanks for this thread, rich.

It has already helped my to see how someone hardwires (ie solders) an Arduino to use some of the i/o that is not connected to the shield.

User avatar
fergus420

Postby fergus420 » Mar 23, 2014, 7:16 am

jonr wrote:I expect that measuring the temperature would reduce the rather high variability.


I don't follow what you are saying. I am measuring temperature. I am measuring the time it takes for the group head thermometer to read 206F from idle. I know there is some variability introduced by the guy pushing the button and flipping the group lever. There is also some variability introduced by how the thermometer updates. Sometimes I flush a little long and sometimes I flush a little short trying to predict the next temp update.
rich

User avatar
fergus420

Postby fergus420 » Mar 23, 2014, 7:18 am

Chert wrote:Thanks for this thread, rich.

It has already helped my to see how someone hardwires (ie solders) an Arduino to use some of the i/o that is not connected to the shield.


Glad it helped someone :)

Your comment did make me realized I forgot the Arduino ProtoShield form the hardware list above. I'll fix that. I can probably dig up some more Arduino pictures from another project if you have other questions...
rich

pocojoe

Postby pocojoe » Mar 23, 2014, 8:39 am

Hi Rich,

Thanks for the posting and the source. Just reading it for the first time.

I am not familiar with your machine; can you describe the temperature sensor you use, and the buffer amp (if any) that was required ahead of the Arduino?

Thanks

Joe
PocoJoe
Safety Third- First Roast, then Grind

jonr

Postby jonr » Mar 23, 2014, 9:41 am

fergus420 wrote:The project is pretty much a glorified timer .... I don't follow what you are saying. I am measuring temperature.


Is the Arduino measuring temperature(s) and using it as part of the control algorithm? Or is temperature being measured only for development and verification with time as the input variable?

fergus420 wrote:Keeps track of idle periods to detect whether an idle cooling flush is needed


Ie, it is using time (not temp measured directly during the control process)?

pocojoe

Postby pocojoe » Mar 23, 2014, 10:50 am

Or perhaps you have an external E61 group digital thermometer and you are watching it manually, and recording the time it takes to hit 206? Is that your process?

I understand the other benefits of the Arduiino - timing your shots, perhaps prediciting how long for a given intial temp of the group head it will take for the machine be ready for the optimal "walk-up" shot to occur- but how does the data that you collect help you in other ways (besides scratching that itch we all get when we have to make something??)

Thanks
Joe
PocoJoe
Safety Third- First Roast, then Grind