Saturday, February 14, 2009

Programing is Done!!


It's been a while since my last blog post, but a lot of progress has been made!

It looks like the programing is complete at this point. The Arduino based modifications that I am completing were based upon the inspiration, encouragement, and hard work of Tim Hirzel.

The major departure that I made from Tim's design of the hardware and software, with a huge amount of programing help from my friend Arnold, was to switch to a 6-button interface for input rather than using the Wii nunchuck. The 6-button interface that I'm using, is physically really made of three buttons. One directional button (up, down, right, left) and then two buttons like those on the Wii nunchuck (i.e., C and Z). The functions are the same as the way Tim's Wii nunchuck works.

The button's that I am using are from Sparkfun, and they come in a three button set called:
where the split buttons are obviously 2 separate buttons, but not so obviously, the round button can be wired to act as a directional button (with up, down, right and left functions). I am just using one of the split buttons + the round button, creating a 6-button interface (I just cut off one of the split buttons!). The significant electronics with this button, and to efficiently utilize the sparse 5v outputs from Arduino, is to use a single common 5v input among all of the buttons. The outputs from each button are then directed to defined digital inputs where the state of these pins is either 5 volts or zero volts, depending on whether or not a button is pushed.

The other significant departure from Tim's design centered around using the Opto 22 IAC5 optosiolators, and PB4 data acquisition control board so that Silvia's face panel switches operate in all respect like a virgin (i.e., even the indicator lcd's work as in the original)

So the function controls that this modification has made possible are:

  • PID Brew and Steam temp control within + / - 0.5 deg F.
  • Ability to tune the PID algorithm and therefore control the time / temperature response.
  • Resettable shot timer, that starts automatically when the brew button is pushed to start the brew.
  • Ability to set two wake-up times (morning and afternoon) so Arduino automatically turns Silvia on whenever set to do so.
  • A sleep timer, so that Arduino puts Silvia to sleep, whenever set to do so.
  • A "forced" sleep function - can put Silvia to sleep with out waiting for the sleep timer.
  • Day Month Date Time read out on LCD.
  • Water level alarm - that prints the need to add water to the LCD (using an external tank sensor).

At this point I have all of the code posted under the name Silvia's Button Brain. Re-writing the code took a lot of effort to enable the functions listed above. It required a re-write of the code itself, and a change from Tim's organization of the Arduino libraries. The code compiles under Arduino 0010 (and probably not under other versions). So if you want to use this version of the code, be sure to copy both Silvia's Button Brain Code and Silvia's Libraries. A great place to learn more about the variations is to look at the Arduino Wiki CoffeeTronics.

Thanks again to Tim, Karl, Arnold... and everyone who has offered help and suggestions.

I am now, making the project box that will hold Arduino close to Silvia. It will be mounted like A Tail about Silvia and then put it all together! It is being constructed out of 0.25" aluminum sheet. I already have all of the pieces cut and milled, and will be welding this week! After that, a little finishing.... then on to anodizing.

Will post more as it progresses!