Monday, October 31, 2011

I Got Interviewed for EEWeb

Hey everyone.  Things have been a little crazy as of late with midterms, and I just took the FE exam this weekend (which was much overrated), so there isn't much in the pipeline other than more SerialCouple testing and maybe some initial work for my senior project.  To keep you entertained in the mean time, EEWeb contacted me this summer and did an interview asking about how I got inspired to be an engineer.  It's an interesting read, so I encourage you to go check it out.

Tuesday, October 25, 2011

SerialCouple Used as Sous-Vide Controller

The testing of the SerialCouple prototypes continue (Part 1, part 2, part 3).  For those not following along, the SerialCouple board is a low cost thermocouple adapter, meant to be used in conjunction with a standard FTDI USB adapter to enable you to monitor and log a single thermocouple channel to a computer using standard serial port monitoring software.  Production boards are still a few months out, but while they're in the works, I've been playing around with different things to do with the SerialCouple.  This demonstration is taking advantage of the extra IO pins afforded on the serial port connector to control a heater as a sous-vide cooker.
Sous-vide is a hip cooking method where you vacuum seal the food and then cook it long and slow in an elevated temperature water bath.  The challenge is that you need fairly precise control of the water temperature for food safety and cooking quality reasons.  By cooking food in this long and slow manner, it is possible to bring the food to a single consistent temperature throughout, which enables you to have a perfectly medium-rare steak ALL the way through the meat, or a soft boiled egg that is perfectly soft ALL the way through.
How I built my sous-vide cooker is by attaching one of my SerialCouple prototypes to a junction box which I built with a solid state relay in it.  This SSR is then used to control a 615W lab hotplate, which heats the pot of water which I'm monitoring with the SerialCouple.  The SerialCouple handles all of the thermostat logic internally, with the SSR connected to the CTS pin of the serial port connector.  With the addition of a >4V battery, this can operate entirely independently of a computer (after using the computer to set the target temperature).
I used a 9V battery clip and a 6x0.1" female header to make the adapter cable, although only the bottom three pins are used, so a smaller socket could have been used.
I had to blue-wire jumper the CTS and RTS lines on my prototypes, since I only bothered routing the transmit and receive on the PCB itself.  In the next batch, I'm going to route all six pins, as well as correct all of the other routing mistakes I've made.

Water Temperature Performance

I played with implementing a PID algorithm on the SerialCouple a little bit, but I eventually came to the conclusion that the simplicity of a basic thermostat (heater on if below set point) algorithm, coupled with a correctly sized heater, have adequate performance for my needs.  In the initial trials, I only used 2 cups of water in the pot to see how well the SerialCouple could maintain a set temperature.  Unfortunately, the hot plate was powerful enough that the transfer delay between the hot plate and the pot caused the system to oscillate, but turning down the power, and later adding more water, significantly improved performance.
The first trial was with various power settings on the hot plate to a set point of 50C for 2 cups of water.  As can be seen in the graph, this tended to oscillate a couple degrees, but not as much at lower power settings.  These graphs were made by tapping the serial connector with a USB adapter and logging the output to a file with PuTTY, then graphing them in MATlab.
The next trial was with 6 cups of water at a temperature set point of 64C.  This was to test soft boiled eggs, which you need to cook for at least 45 minutes.  Since you're cooking eggs (which you can just leave in the shell) in a low temperature bath, the proteins won't over-cook and become unappealing, because they never get hot enough to.  The power settings for this trial was 4/6, like the red line in the previous graph, except for the middle third of the heating up ramp, where I got impatient and turned the hot plate full power (which you can see in the graph as the change in slope on the way up). 
Zooming in on the set point when the water bath reached it, it can be seen that there is minimal oscillation, considering the ADC's resolution.  I'm happy with this level of stability, considering that it's monitoring an unagitated water bath (which tends to have a few quarters of a degree of noise just due to turbulence).  You can clearly see the quarter degree limit in the ADC's resolution in the graph, which is what causes the jaggedness of the lines as it jumps between possible readings.

So how did my overly-complicated soft-boiled eggs turn out?  Amaaaazing!  I just had to crack off a nickle-sized piece of shell, and was able to pour then entire egg out onto a piece of toast.  The yoke was tacky firm, and all of the whites were a consistent creamy consistency; almost a runny pudding or a custard consistency.  If you're a fan of soft-boiled or over-easy eggs, I highly suggest you try cooking them like this.  It is quite outstanding.

As I said, work is progressing slowly on revising the SerialCouple boards for production.  I'm planning on fixing all of the routing errors, and adding the option of a PCB thermocouple jack instead of the screw terminals I'm currently using.  Current expected cost is going to be about $30 (plus an FTDI cable if you don't have one already).  Email me if you're interested in possibly buying one when they become available (sometime around January 2012, I expect) and would like to be kept updated.