About my blog
I am multithreaded, and sometimes the threads get tangled.
- December 2012 (1)
- March 2012 (1)
- December 2011 (1)
- May 2011 (1)
- April 2011 (1)
- March 2011 (1)
- January 2011 (1)
- December 2010 (1)
- October 2010 (2)
- September 2010 (1)
- June 2010 (1)
- May 2010 (1)
- April 2010 (3)
- February 2010 (2)
- November 2009 (2)
- October 2009 (1)
- September 2009 (1)
- August 2009 (2)
- July 2009 (1)
- June 2009 (2)
- May 2009 (1)
- April 2009 (2)
- March 2009 (6)
- February 2009 (5)
- January 2009 (3)
a Studiolab production.
the wind I am enjoying
I realize that, if I wait until all is done before writing it up here, it will simply never happen. Also, the motto of this blog means "a little and frequently" in my hometown dialect: I should heed my own advice.
I have more or less succeeded in subverting the bread machine for my purposes, and I have added temperature control via a PID controller running on an Arduino (I am using the arduino-pid-library). It works, after a fashion, although
- I have not calibrated the NTCR (aka thermistor), so I have no clue about real temperature, only very arbitrary units: room temperature is around 90.
- this thing is sluggish. It takes several seconds before you see any effect from the 500W heater.
- the bread machine has a built-in thermal safety that will melt and cut the power when the vessel overheats. But I have no clue at what temperature this happens, so I feel very nervous whenever it gets a bit hot.
The idea behind this activity is that, ultimately, a bread machine is just a pot surround by a vessel with a heater, plus a stirring device. If you ignore the bread aspect of it, you could do many things with such hardware, ranging from pasta sauces to desserts to rice. But, all the bread machines I know of are not programmable. They have a number of pre-programmed sequences of stirring, heating and cooling, and you are limited to them – I became acutely aware of the issue when playing around with sourdough bread and very long raising times.
Just for fun, here is the temperature graph with the current parameters:
Tick marks on the X axis are at 250 seconds divisions, and the setpoint is at 400. The Y axis is, as I said before, in arbitrary units where 400 is probably around 100 degrees and 1000 is even brandweer bellen (call the fire brigade, please). The PID controller is running with a 1 second duty cycle, and the parameters are
P = 10.0
I = 0
D = 2.0
In the graph above you can see a little overshoot at the beginning, moderate oscillations, a sag at the 4th division when I opened the machine and then recovery. The noise on the pink line is due to sensor noise being amplified by the derivative term – I think. Since I am just driving a heater, the noise is not a reason for concern. You can also see that the temperature never quite reaches the setpoint: this is as expected, because the integral term is zero. I tried to give the integral term a non-zero value, but this gave me big scary overshoots, even with ridiculously small values (I went as low as 10-17 before I gave up.) This is relatively easy to fix by adding a little bias to the setpoint. Since everybody likes graphs, I am including another one with a longer run. Here I am changing the setpoint, as indicated by the orange line.
Tick marks are again at 250 second intervals. The orange line is the setpoint. Somewhere around the 10th division I had to go to teach in Food, Design and Culture (that I keep mixing up with a journal called Food, Culture and Society). Since I don’t trust my hardware or software at all, I cut the power to the heater, but did not stop the PID, who tried desperately to do its job without any control authority. The temperature decays beautifully along what looks very much like an exponential. I am not publishing any pictures of the hardware because it both very simple and very messy. Just wires and loose components, not even a breadboard.
(I realize that any Industrial Design Engineering bachelor student can build and tune PID controllers in his sleep, but I did not study at TUDelft. Heck, I did not even know about the very existence of control theory until five years ago).
The temperature "program" here was just a switch statement inside an Arduino program, but in the future I will make it much more generic.
The next steps are: building a programming interface, so I can load my own sequences of activities and doing a workshop with food-obsessed people here in Delft. I trust that they will provide me with brilliant ideas on what to do with my toy. Publish the design (HW/SW) so that other people can play with it. And write a brilliant paper about it all. Maybe I will claim that it is action research, who knows.
In other news, ITD is going strong, and so are UTAR and Food, Design and Culture. Two papers are making their way through the review process, I am trying to get funding, together with Aadjan et al., for a startup (this sounds unnecessarily grand), there may be an exhibition project happening in Qatar this summer and of course my lovely and wonderful graduations students are progressing. Some of them will even graduate soon! There is indeed light at the end of the tunnel. I am also wondering if Petri Nets are an appropriate representation for recipes – this makes it difficult for me not to start playing around with a wonderful Python library for doing all things Petri. It is called, appropriately Snakes.
In other other news, I am currently in Romania on vacation. Will be back in Delft next week, right on time for the flavorful, exciting ending of Food, Design and Culture. I will be bringing back a typical Romanian product called ţuica: it is colorless, it smells good and it can knock you under the table with no effort at all.