A Flicker of Hope!

I noticed a marked flicker in the Newhaven Display. It turns out, it’s a glitch in the firmware based on any active communication with the display. Luckily, Newhaven Display acknowledges this, and is willing to exchange / upgrade the firmware. Thank goodness!

I’m at a point where things are really starting to come together piece-wise. I have a few things left to test, including the MID400 line sensors to detect the rocker-switch status’. So far, I have the ADS1247 analog-to-digital converter, LCD display, DS3231M real-time clock, and solid-state relay integrated together. Theoretically, it could operate as an effective PID. But of course, I’m looking to implement much more before I put it to practice.

I’m also fussing around a bit with the code – trying to get everything neat and tidy as opposed to the rats nest that I’ve been using. I’m toying with different looks on the display and how to implement a lean yet effective visual menu.

You can see on the display, the first line is dynamic and displays the real-time clock, boiler status and current temperature (I’ve got a resistor in place to simulate the PT100). The second line of the display shows the custom characters that I’ve designed so far – the thermometer, “Brew”, “Hot Water”, and “Steam” icons. I intend for the latter three to activate as appropriate depending on the switch status.

I’m imagining two modes within the system – Automatic or Manual. In automatic mode, the system would wait for the brew switch to be thrown and then activate the pump. The system would then toggle the pump to control pre-infusion and extraction as programmed. In this mode, the three-way solenoid valve would remain engaged during the pre-infusion to prevent the pre-infusion from back-flushing through the solenoid valve. The solenoid valve disengages when the brew switch is turned off. In manual mode, the system will wait for the brew switch and engage the pump until the switch is turned off. Throwing the hot-water switch has much the same effect in both modes, except that the solenoid valve is not engaged. Switching temperature on the controller to a “steam” temperature (greater than 120°C) and throwing the steam switch will automatically pulse the pump to fill up the boiler. Of course there will be a number of programmable presets so that you can tailor pre-infusions and brew temperatures (or even tea temperatures!). These presets will be able to be set by “learning” how you operate the controls.

It might be a bit before I get the code worked out, but I suppose a few extra espressos might keep me on the ball.

5 Replies to “A Flicker of Hope!”

    1. Hey Mike!

      With all the settings (brew, hot water, steam), the user must first select the temperature on the controller. The controller will then intelligently respond to the mechanical switch thrown. It’s up to you to make sure the Steam knob and Steam Switch are coincident (in Automatic Mode at least).

      To explain the Steam behaviour a bit better: there are two possibilities depending on whether it is running in Automatic Mode or Manual Mode. In Automatic Mode, throwing the Steam Switch will force the boiler to the Steam temperature (if it’s not already set there) and then begin to pulse the pump (regardless of whether the Steam valve is open or not). If the controller is set to the Steam temperature, having the switch off will stop the pump pulsing but maintain it at the Steam temperature. If the controller is set to a different temperature, the boiler will revert to this original temperature when the Steam Switch is off. In the case of Manual Mode, throwing the Steam Switch simply forces the system to a Steam temperature mimicking the current (unmodified) behaviour of Silvia. This is identical to setting the controller to a Steam temperature in Automatic Mode (without the Steam Switch on), and simply opening the Steam valve.

      Short of adding some sort of capacitive sensor to the boiler, I think this is probably the best I can do at this point. I did contemplate a capacitive-to-digital converter (Analog Devices AD7746) to measure boiler and water tank levels, but I can’t be bothered with the calibration required for this.

      Any ideas however are welcome!



  1. Hi Josh, impressive work so far on this project! I’m keen to follow your lead and build this for my Silvia so just wondering how its all progressing as haven’t seen any updates for a while.

    1. Hey Andre!

      As always, life keeps me busy. I’ve been set back in the design process by the NewHaven Displays – the firmware installed on them is rather glitchy. While I’ve had them reprogrammed, the displays are still not functioning to the specifications outlined in the datasheet. Consequently, I’ve shifted development over to a new display module – the CrystalFontz CFA533-TMI-KC (http://www.crystalfontz.com/product/CFA533TMIKC). I suppose this is a bit of a blessing in disguise as the module has a builtin keypad so it will make the final design a whole lot easier. The only downside is that nobody has written an Arduino compatible C library for it. So I’ve written one from scratch. So far so good. I’ll have an update on it soon enough!



Leave a Reply