Der X1-THERMOMETER

(There’s a nicely translated english page HERE)

Ich bin stolzer Besitzer einer FrancisFrancis! X1 Espressomaschine. Die Maschine hat ein ganz wunderbares Design und ausreichend Druck um sich tatsächlich auch Espressomaschine schimpfen zu dürfen. Also eigentlich ein super Teil; Problem: Das Thermometer, das die Kesseltemperatur anzeigt war erstens sehr ungenau und zweitens hat es von heute auf morgen den Geist aufgegeben. Nach einer explorativen Demontage hab ich festgestellt, dass es sich bei dem Zeigerinstrument um einen barometrischen Thermometer handelt, und wohl auch einen vom billigeren Typ. Es gibt zwar Ersatzteile, aber der stolze Preis von ~50€ hat mich jetzt nicht so ganz überzeugt. Also frisch ans Werk!

Das neue Thermometer sollte die folgenden Features bekommen:

  • Genaue Anzeige der Temperatur
  • Grafik-Display mit hübschen, farbigen Zahlen
  • Brew Timer (für das standardgerechte Timing)

Nach längerem Hin und Her fanden sich eine ganze Reihe TFTs, die sich alle geeignet hätten, wären sie nicht 2″ 16:9 gewesen (oder ähnlich), denn das ganze sollte ja schließlich in die bestehende Gehäusebohrung von 52mm passen. Die Wahl fiel dann auf ein 1,04″ OLED-Display mit 16 bit Farbtiefe. Kostet nur $7 und wird mit Breakout-Board geliefert. Normalerweise bin ich kein Breakout-Board-Fan; weil ich normalerweise meine Platinen serlber mache, und da dann entsprechende Footprints gleich mit gelayoutet werden können. In dem Fall war das aber gar nicht so schlecht, die Grundschaltung war schon fertig, ausserdem war das dann relativ einfach zu montieren. Also zu Testzwecken an einen Mega88 angeschlossen, und die Initialisierung und erste Gehversuche unternommen.

Nächstes Problem: Ein Zeichensatz. Ich hatte keine Lust, einen Zeichensatz Pixel für Pixel selber zusammenzubasteln, also habe ich ‚GLCD font Creator‚ von MikroElektronika benutzt. Das ist wirklich ein super Programm, hat allerdings ein Problem, es erzeigt nämlich nur Bibliotheken, die zusammen mit der GLCD-Bibliothek des MikroElektronika-C-Compilers zusammen funktionieren, which is bad. ABER da man so schnell nicht aufgibt hab ich mir mal die Dateien angeschaut, die das Tool speichert, also gespeicherte Projektdateien, und die Jungs und Mädels von MikroElektronika sind tatsächlich so nett, die Daten in XML zu speichern! Mit ein bisschen Find-And-Replace und Spalten-Zählen erhält man seinen Charset in einer schönen Pixel-Matrix. Alles was man jetzt noch tun muss, ist ihn ein bisschen zu optimieren (leere Pixelspalten löschen, nicht jedes Zeichen ist gleich breit etc.) und ein kleines Tool zu programmieren, das 0 und 1 in Bytes umwandelt. Alles in Allem etwa ein Nachmittag Arbeit, und schon hat man einen Charset, in meinem Fall mit Arial Bold in 21pt für die Temperatur (nur 0-9 und ein ‚°C‘-Zeichen) und in 8pt für die ASCII-Zeichen 32-127. Das Charset für die Zahlen wurde mit Adresse für jedes Zeichen implementiert, für den Text-Charset wurde ein Index errechnet, der die Breite (in Spalten – bei konstanter Höhe von 8px) für jedes Zeichen enthält.Ich werde dazu noch einen gesonderten Post schreiben; der dann auch die verwendeten (schlecht programmierten) Tools enthält.
Jetzt musste der gespeicherte Charset-Inhalt nur noch in das Grafik-Ram des Displays kopiert werden, und schon waren Schriftzeichen auf das Display gezaubert…

So weit, so gut, das Display tat also, was man von ihm verlangte; zeit die Platine zu entwickeln. Ursprünglich war ein Atmega168 geplant, da klein, billig, mit viel Speicher und ‚lege artis‘. Beim Erstellen des Schaltplans fiel allerdings auf, dass der Mega168 für das Projekt (und für meinen Geschmack) etwas zu wenige IOs bereitstellte, was mich dazu brachte einen Atmega16 zu verwenden. Der Atmega16 ist prinzipiell ähnlich dem Atmega168, nur mit mehr IOs (keine Doppelbelegungen mehr). Anforderungen:

  • Kleine Platine
  • Interface zum OLED-Breakout Board
  • MA6674 Thermocouple converter
  • 3 IOs mit Analog-In als multi purpose IO
  • I²C Erweiterbarkeit

Das Board war relativ schnell gelayoutet; nur wie sich herausstellte gab es mehrere Fehler:

  • Das OLED-Modul benötigt 12V; ein Step Up converter hätte auch noch auf die Platine gepasst. Nicht immer glauben dass 12V schon irgendwo herkommen.
  • Der Daten-Connector war um 180° verdreht. Das ließ sich zwar in Software kompensieren, führte aber zu einer langsameren Schreibgeschwindigkeit.

Das ist natürlich erst später aufgefallen… 😉

Die Platine sollte zunächst gefräst werden, da dies ein only-once Prototyp werden sollte. Da allerdings mein 36° Gravurstichel entweder abgebrochen war oder ich was beim Setup verschlafen habe hat das nicht so ganz geklappt. Danach habe ich mich entschlossen mount-Holes und Umriss der Platine aus FR4 mit Fotoresist zu fräsen um dann das Artwork fotolithografisch aufzubringen und zu ätzen. Gesagt getan, nach einem Samstag Arbeit sah das dann so aus…

…mit huckepack montiertem und funktionierendem OLED…

Nun wurde die Firmware entwickelt. Mittlerweile waren die Anforderungen (ob des wunderbaren 16-bit OLEDs) gestiegen:

  • Farbe der Temperatur soll sich mit der Temperatur ändern.
  • Diagramm soll Temperaturverlauf anzeigen
  • Minimum-, Maximum- und Durchschnittstemperatur
  • Mode-Anzeige auf dem Display

OK, dies ist jetzt vielleicht der Punkt an dem das Projekt beginnt, etwas overengineered zu sein… 😉

Das Diagramm war Programmiertechnisch etwas Arbeit, da die Linienbefehle des Displaycontrollers, die ich eigentlich verwenden wollte, viel zu langsam für den Zweck waren und ich daher das Diagramm on-the-go beim Schreiben in das Grafik-RAM des Controllers erstellen musste. Aber die Routine ist garnicht schlecht geworden, sie erstellt ein Diagramm, macht die Linie rot, wenn der angezeigte Datenpunkt ausserhalb des Anzeigebereichs liegt und stellt den Anzeigebereich automatisch auf passende Werte ein.
Der Brew-Timer war dann auch kein großes Problem mehr, Funktionen zum Ausgeben und konvertieren von Strings waren ja bereits entwickelt.

Nun musste das Gerätchen nur noch in der Kaffeemaschine montiert werden. Dazu kam ein CNC-Gefrästes Aluminiumteil zum Einsatz, welches einfach mit Kapton-Tape am Gehäuse fixiert wurde. Strom wurde der Einfachheit halber vom ISP-Header der Kaffeemaschine (die übrigens einen Atmega8 zur Steuerung verwendet) abgezwackt (was vielleicht zu Störungen führt..)t. Ausserdem musste ein 12V-Stepup-Wandler dazwischengeschaltet werden. Ich habe dann noch 2 der 3 IOs mit den beiden Schaltern für Brew und Steam verbunden, die praktischerweise TTL-Logik schalten… 😉

Und tada… so sieht das dann aus…

 

Update

Es hat sich tatsächlich herausgestellt dass der 12V Step-Up converter Probleme mit der eingebauten Elektronik verursacht. Das interne 5V-Rail der Maschine wird von einem 7805 bedient, der aber auf der Ausgangsseite nur einen lächerlichen Keramikkondensator hat. Ich habe zur Korrektur 1000µF in die Leitung des Thermometers eingebaut; seither gab es keine Probleme mehr.

…und natürlich eine Blende muss noch drauf. Daher die 4 Löcher in der Blende.

 

Files…

4 Kommentare

  • Hi, leider nein. Das war ein one-off. Die X1 mit Messingboiler hat eigentlich eine PID-Steuerung, die Temperatur ist auf 1..2°C genau.
    LG Tobi

  • Hallo Tobias,
    gibt’s es das Thermometer bei dir kaufen. Ich würde sehr gene auch so eines haben 🙂 Gibte es auch die Möglichkeit einer PID Steuerung?

    Beste Grüße Thomas

  • Hi Alex,
    danke!
    Leider kann man den thermostat nicht kaufen, es ist eher ein proof of concept und ein Prototyp geblieben.
    Du bist allerdings nicht der erste der fragt. Wenn noch ein paar Leute fragen lege ich vielleicht einen
    Bausatz-Kaffeemaschinen-Thermostat auf… 😉

  • Hallo Tobias!

    Genialer arbeitet wie ich finde..

    Gibt es irgend eine Chance eine fertiges Thermostat bei dir zu erwerben? Ich bin leider elektronisch nicht im Stande so etwas herzustellen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.