Elektronik_Header_3Lüftersteuerung mit ESP-01

 

Quickmill Saver

Überwachung für Kaffee-Vollautomat Quickmill 5000A

Quickmill 5000A

Der Quickmill 5000A Kaffee-Vollautomat hat leider keine Überwachung für zu wenig Wasser oder zu vollen Kaffeesatzbehälter. In Folge passiert es häufiger, dass entweder die Tasse nicht voll wird, weil die Durchflussüberwachung wegen zu wenig Wasser den Brühvorgang stoppt - dass dabei die Pumpe hässliche Geräusche von sich gibt, weil sie auf Block geht, kommt nervend hinzu - oder der Kaffeesatz staut sich im Innern des Technikraums bis an dessen Oberkante, weil vergessen wurde, den Satzbehälter rechtzeitig zu leeren. In diesem Fall ist eine Komplettreinigung angesagt, denn die Mechanik der Maschine lässt sich von solchen Kleinigkeiten nicht irritieren und stopft den ausgebrühten Kaffeesatz in alle erreichbaren Löcher und Zwischenräume.

Entschuldigend muss ich erklären, dass unsere Maschine in einer dunklen Ecke steht und man schon sehr genau hinsehen muss, um die Füllstände zu erkennen - die dunkelgraue Tönung der Behälter ist dabei wenig hilfreich. Und mal ehrlich: Genaues Hinsehen auf der dringenden Suche nach Kaffee... das passt irgendwie nicht zusammen ;-)

Folglich muss diese Überwachung zusätzlich eingebaut werden.

Im Bild oben sieht man oberhalb des “Professional” Schriftzuges das neue Display. Ich habe die “Gelb-Blau” Version verwendet, die Kopfzeile ist jeweils in gelber Schrift dargestellt, der Rest der Inhalte ist Blau. Das sieht recht cool aus, die Version in einfach Blau oder Weiß funktioniert aber genauso. Siehe dazu auch die Erfahrungswerte weiter unten.

Den Ausschnitt für das Display habe ich mit der CNC-Fräse erstellt. Der Deckel wurde dabei in einer gefrästen Führung fixiert und der vordere, sichtbare Rand des Ausschnitts wurde mit einer Fase in mehreren feinen Stufen versehen.

Ausschnitt für OLED-Display

In der starken Vergrößerung und mit Blitz fotografiert sieht der Ausschnitt viel schlimmer aus als im Original. Ehrlich! Und wir erinnern uns - Dunkle Ecke... :-)

Das OLED-Display mit 0,96 Zoll Diagonale und I²C-Anschluss wird von einem Arduino Nano V3 angesteuert und visualisiert sowohl den Wasserstand als auch den Füllgrad des Satzbehälters.

Optional und per Menü ein-/ausschaltbar wird während des Brühvorgangs eine stilisierte Tasse gezeigt, die sich langsam füllt. Die Zeit von leer bis voll ist parametrierbar und läuft frei, also rein zeitgesteuert, parallel zum Füllvorgang (nicht von der Hardware geführt).

Im Bild unten die Innenansicht des Deckels:

Display und Sensor-Platine

Der weiße Rahmen für das Display ist aus PVC-Abschnitten erstellt und mit Kunststoffkleber am Deckel befestigt. Das Display wird von oben eingeschoben und ist somit austauschbar, sollte es mal kaputt gehen. Immerhin sitzt es an dieser Stelle nur ein paar Zentimeter von der Heizpatrone der Maschine entfernt und ich weiß nicht, welche Temperaturen dem OLED-Display anfangen zuzusetzen.

Die vier kupferfarbenen, um das Display herum angeordneten Flächen sind die vier Sensoren, deren Zustand (aktiviert oder nicht) vom Controller über I²C an den Arduino übermittelt wird. Das Display wird ebenfalls über I²C angesteuert, die graue Leitung im Vordergrund führt den Bus und die Versorgungsspannung zu.

Die Ansteuerung des OLED-Display erfolgt über die von Adafruit zur Verfügung gestellte Library (Text und Grafik).


Ursprünglich wollte ich die Füllstände der beiden zu überwachenden Behälter mit Ultraschallsensoren erfassen. Da aber die Gefahr besteht, dass Ultraschallsensoren in der feuchten Umgebung oberhalb des Wasser- und des Satzbehälters vergammeln, habe ich von der Idee Abstand genommen. Die Tatsache, dass ich für die Sensoren relativ große Löcher/Ausschnitte in das Blech des Gehäuses hätte zaubern müssen, hat ebenfalls bei der Entscheidung gegen diese Version geholfen.

Stattdessen habe ich einen Tassenzähler implementiert, der jede gezapfte Tasse zählt. Nach einer empirisch zu ermittelnden Anzahl Tassen wird davon ausgegangen, dass der Wasserbehälter nachzufüllen ist. Dasselbe Vorgehen ist für den Satzbehälter anzuwenden, der bei Erreichen des Grenzwertes geleert werden muss. Beide Stati, also “Satzbehälter leeren” oder “Wasser nachfüllen”, werden in großer Schrift anstelle der Füllstände angezeigt, gegebenenfalls nacheinander, wenn beide Ereignisse gleichzeitig eintreffen.

Diese Zähler müssen im EEPROM geführt werden, da der Kaffeeautomat im ausgeschalteten Zustand komplett stromlos ist.

Das EEPROM im AtMega hat 100000 zugesicherte Schreibzyklen, das dürfte die zu erwartende Restlaufzeit des Kaffeeautomaten weit überschreiten, eine Strategie zur Verteilung der Schreibzyklen auf die Speicherzellen erübrigt sich also.

Anhaltspunkt für diese Annahme: In den ersten 15 Jahren wurden rund 5000 Tassen gezapft (hier existiert eine gewisse Unsicherheit, weil ich einmal glaubte beobachtet zu haben, dass der eingebaute mechanische Tassenzähler längere Zeit nicht verändert wurde. Bei der nächsten Inspektion habe ich das angesprochen und möglicherweise wurde der Zähler getauscht. Es können also auch ein- oder zweitausend Tassen mehr gewesen sein). Der Tassenzähler im Programm ist unsigned int (65535) und reicht somit noch ca. 50 bis 100 Jahre...

Falls die verwendeten EEPROM-Zellen (15 Byte) vorher den Geist aufgeben, kann

#define EESTARTADRESSE 100    // Startadresse fuer die Speicherung der Tassenzahlen im EEPROM

im Programm geändert werden, z.B. auf 200. Die Zähler laufen dann die nächsten 50 .. 100 Jahre problemfrei in einem anderen Bereich des EEPROM. Nach der Änderung werden sinnvolle Defaults gesetzt. Danach sind die korrekten Einstellungen über das Menü neu zu setzen.


Um zu erkennen wenn einer der Behälter "bedient" wird, ist unter jedem Behälter ein kleiner Magnet eingeklebt, der jeweils einen Halleffekt-Sensor vom Typ "A3144" betätigt, der den zugehörigen Zähler wieder rücksetzt. Die Magnete sitzen jeweils am hinteren Ende in der rechten Ecke des Behälters (von unten betrachtet).

Hier die Unterseite des Satzbehälters:

Satzbehälter mit Magnet

Hier der Wasserbehälter von unten:

Wasserbehälter mit Magnet

Der unterschiedliche Abstand der Magnete vom Rand ergibt sich aus der möglichen Platzierung der Halleffekt-Sensoren unterhalb der Bodenplatte der Maschine. Die Verstrebungen schränken die Platzierung etwas ein - im Bild rechts ist vorne.

Bodenplatte von unten mit Hallsensoren

Der Sensor für den Satzbehälter (der Untere im Bild) ist hier noch nicht befestigt.

Um die Leitungen unterhalb der Bodenplatte verlegen zu können, musste ich Löcher in die Stege bohren, groß genug die Halleffekt-Sensoren passieren zu lassen. Die Länge der Leitungen habe ich großzügig bemessen, da bei der Konfektionierung (Stecker am einen Ende, Sensor am Anderen) die genaue Führung der Leitung noch unbekannt war. Die überschüssige Länge wird in Schlaufen in den Fächern unterhalb der Bodenplatte verstaut. Innerhalb der Maschine wollte ich zu lange Leitungen vermeiden um zufälligen Berührungen mit heißen Teilen aus dem Weg zu gehen.

Durch die unterschiedliche Anordnung (Wasserbehälter-Sensor weit hinten, Satzbehälter-Sensor weiter vorne) kann der Satzbehälter ein Stück bewegt werden, bevor der Sensor anspricht. Dadurch kann z.B. der Satz durch Rütteln am Behälter etwas verdichtet werden und es passen noch ein paar Tassen zusätzlich hinein ;-)

Beim Wasserbehälter bin ich davon ausgegangen, dass der nur dann bewegt wird, wenn er auch gefüllt werden muss, dessen Halleffekt-Sensor spricht also sehr früh an.

Anekdote am Rand:
Für eine Ersatzteilbestellung hätte ich den Typ der Maschine sowie das Baujahr angeben müssen, um Unsicherheiten auszuschließen. Leider habe ich weder außen an der Maschine noch im Innern (ja, ich habe extra das Gehäuse aufgeschraubt) das Typenschild gefunden, das diese Angaben zur Verfügung stellt. Die Bestellung hat dennoch fehlerfrei geklappt.

Als ich die Maschine dann auf die Seite gelegt habe um die Sensoren zu montieren, habe ich das Typenschild überraschend entdeckt - in einer der Vertiefungen zwischen den Verstrebungen. Diese Anordnung verhindert zuverlässig, dass man das Typenschild sehen kann, wenn man die Maschine nur anhebt um auf der Unterseite danach zu suchen.

Hier die beiden original verbauten Halleffekt-Sensoren für obere und untere Endlage des Kolbens:

Original Hallsensoren für Endlagen

Der zusätzliche Sensor für die Erkennung eines Zapf-Vorgangs nutzt den bereits vorhandenen Magneten auf der Achse des Getriebes und wird über einen Adapter aus Kunststoff mit doppelseitig klebendem Spiegeltape an den beiden vorhandenen Sensoren für obere und untere Endlage befestigt.

2018-06-07_P1100075_resize

Der halbrunde Ausschnitt im Adapter vereinfacht die Positionierung, ist aber für die Funktion unnötig.


Der Arduino sitzt auf einer Adapterplatine mit den passenden Steckanschlüssen für die Sensoren, den I²C-Bus sowie die Spannungsversorgung.

QuickmillSaver-NanoAdapter

Das zugehörige Schaltbild ist recht übersichtlich geraten.

QuickmillSaver-NanoAdapter         (Click auf das Bild für größere Darstellung)

Die Unterlagen für den Arduino-Adapter im EAGLE 7.7 Format stelle ich zur Verfügung.

Nachtrag
Bei der Implementierung des Quickmill Saver V2 für unsere neue Quickmill fiel auf, dass der Arduino nicht angelaufen ist, sobald alle Teile der Schaltung in der Kaffeemaschine eingebaut sind.

Es stellte sich heraus, dass die lange, geschirmte Leitung zwischen Arduino und Display bzw. Touchcontroller die Kurvenform auf der SCL Leitung mehr oder weniger stark verschliffen hat, so dass die Kommunikation über I²C nicht mehr zuverlässig funktioniert.

Abhilfe schafft der Einbau von externen PullUps auf SCL und SDA, die bereits im Layout vorgesehen sind. Den Hinweis im Schaltbild bitte geflissentlich ignorieren.

Bliebe zu erwähnen, dass ich auf der Suche nach der Ursache für den sporadischen Hänger der Firmware auch den hier beschriebenen Quickmill Saver der alten Maschine mit dem neuen Programm geflasht habe. Diese Kombination lief 17 Jahre problemfrei ohne die externen PullUps. Der geneigte Leser ahnt es sicher bereits... mit der neuen Firmware hat auch dieser Arduino identische Anlaufprobleme bekommen.

Ich gehe also davon aus, dass aktualisierte Libraries aus dem Arduino Umfeld für I²C oder OLED-Displays für die Verschlechterung des Kommunikationsverhaltens über I²C verantwortlich sind, kann das allerdings nicht belegen. Der Einbau der externen PullUps löst dieses Problem auf jeden Fall.


Die verschiedenen Zähler und Grenzwerte sind einstellbar, die Bedienung erfolgt mit Touchsensoren vom Typ TTP223 (z.B. https://www.ebay.de/itm/253381740902) durch die Tür des Technikraumes hindurch. Die Sensoren arbeiten durch 3 mm Kunststoff hindurch, so dass keine Löcher für die Bedienung im Gehäuse notwendig sind. Alternativ arbeitet das Programm auch mit einem Kreuztasten-Joystick. In beiden Fällen müsste für jeden Kanal eine eigene Leitung zum Arduino verdrahtet werden.

Um diesen Verdrahtungsaufwand klein zu halten bietet sich die Verwendung eines QTouch QT1070 von Atmel an. Dieses IC erlaubt die Ansteuerung von bis zu sieben Touchsensoren und übermittelt deren Zustände über I²C an den Microcontroller. Das verwendete Display wird ebenfalls über I²C angesteuert, das passt prima zusammen - nur zwei Leitungen für Anzeige und Sensoren zwischen Arduino und Frontplatte.

Im Programm ist diese Variante über #define USEQTOUCH aktiviert.

Für die Sensoren wird die Library "Seeed_QTouch" von Seeed Studio, https://github.com/Seeed-Studio/Seeed_QTouch verwendet.

Achtung!

    Der Returnwert von QTouch.isTouch() ist nicht 0 und 1, wie im Beispiel der Library beschrieben!

    Mit "if(QTouch.isTouch(QTRIGHT) == 1)" wird der Tastendruck nicht erkannt, mit "if(QTouch.isTouch(QTRIGHT))" hingegen schon.

    Die Abfrage auf nicht gedrückte Taste ist somit "if(!QTouch.isTouch(QTRIGHT))".

Der QT1070 sitzt auf der Sensorplatine, die weiter oben schon gezeigt wurde. Die Schaltung ist unspektakulär...

QTouch_QT1070_I2C         (Click auf das Bild für größere Darstellung)

...die Platine entsprechend einfach aufgebaut:

QTouch_QT1070_I2C

Die obere Reihe mit Lötpads dient dem Anschluss der Sensoren, verwendet werden hier nur die ersten vier Eingänge Key0..Key3. Key4 und Key5 bleiben frei, Key6 ist nicht auf ein Pad geführt. An der unteren Reihe Lötpads wird das Kabel zum Display angelötet, am Display ist ein Stecker vorgesehen, diese Verbindung ist also trennbar. Am Stecker kommen die Signale und die Spannungsversorgung vom Arduino an. Diese Verbindung steckbar ausgeführt erlaubt die einfache Demontage der Tür, sollte das notwendig sein.

Die Unterlagen für den QTouch Adapter im EAGLE 7.7 Format stelle ich zur Verfügung.


Die Bedienung erfolgt über die vier rund um das Display angeordneten Touchsensoren:

  • Nicht im Menü - Rechts: Menü wird gestartet.
  • Im Menü - kurz Rechts: Parameter werden reihum zum Ändern aktiviert. Der jeweils änderbare Parameter wird invers dargestellt.
  • Im Menü - Hoch/Runter: Der selektierte Parameter wird geändert (Wasser - mögliche Anzahl Tassen 12..18, Satz - mögliche Anzahl Tassen 25..35, bisher insgesamt gezapfte Tassen  im Bereich 5000..65535, Tassengrafik anzeigen (Ja/Nein), Zeit in Sekunden bis die Tasse voll ist (10 s..59 s), Zeit in Sekunden wie lange nach Füllung der Tasse die Dampf-Animation angezeigt wird (1 s..9 s).
  • Im Menü - lange Rechts, >1s:  Parameter Tassen (gesamt) wird aktiviert, Hoch/Runter ändert jetzt kontinuierlich.
    Das wird normalerweise nur einmal nach dem Einbau des Display benötigt um die Zähler aufeinander abzustimmen (der Tassenzähler im Arduino ist Kür, die Überwachung der Behälter funktioniert auch ohne diesen Gesamtzähler).
  • Im Menü - Links: Das Menü wird verlassen.

Alle Einstellungen im Menü werden sofort übernommen und persistent im EEPROM gespeichert.

Wird im Menü keine Taste bedient, erfolgt automatisch nach 15 Sekunden der Rücksprung in die Anzeigeebene.

Nach den Seiten mit den Parametern werden die Smileys präsentiert, hier kann man mit Hoch/Runter die vorhandenen Smileys durchblättern.

Mit einem weiteren Druck auf Rechts wird eine Seite aufgebaut, die die Sensordaten numerisch visualisiert. Einen Zusammenhang zwischen Nähe des Fingers zu einer der Sensorflächen und den dargestellten Zahlen kann ich beim besten Willen nicht erkennen, aber keine Sorge, das IC ist dazu offensichtlich in der Lage.
Diese Seite kann nur durch langen Druck auf den Rechts-Sensor verlassen werden, das Menü wird dabei ebenfalls verlassen, man landet wieder in der Anzeigeebene.

Die Sensoren sind empfindlich genug, so dass deren exakte Position nicht bekannt sein muss. Einfach die Frontplatte ober- oder unterhalb, bzw. links oder rechts des Display berühren reicht vollkommen.


Der Atmel hat noch genug Programmspeicher zur Darstellung einer Animation einer sich füllenden Tasse während des Zapfvorgangs sowie einen sporadisch für einige Sekunden anstelle der Balkengrafik auftauchenden Smiley ;-). Momentan sind zehn verschiedene Smileys vorhanden, die zufällig ausgewählt und angezeigt werden.

Der Randomgenerator (seed) des Arduino wird mit der Gesamt-Tassenzahl randomisiert, sollte also immer schön zufällig laufen. Wird zufällig derselbe Smiley zweimal hintereinander ausgewählt, wird der Smiley-Pointer um 1 inkrementiert (mit wrap around). Der Smiley kommt immer, die animierte Tasse kann im Menü Ein/Aus geschaltet werden.

Die verschiedenen Zeiten vor Bezug-Start, die Dauer des Bezugs sowie die Pause mit visualisiertem Dampf danach sind parametrierbar, so dass der optische Effekt auf die Hardware abgestimmt werden kann und die echte Tasse und die Tassengrafik synchron gefüllt werden.

Falls ein geneigter Nachbauer eine schönere Tasse oder einen weiteren Smiley entwirft, würde ich mich freuen, wenn er mir diese Grafik für den Eigengebrauch und ggf. zur Veröffentlichung hier auf meiner Seite zur Verfügung stellt. Danke!


Ich habe darauf geachtet, dass ich keine bereits vorhandenen Schalter oder Sensoren verwende um die Eingriffe in die Maschine minimal zu halten. Deshalb erfolgt die Synchronisierung zwischen Kaffee-Automat und Ãœberwachungselektronik zeitgesteuert.

Lediglich das Startsignal für das Timing sowie die Zähler wird vom selben Magneten erzeugt, der auch den oberen und unteren Totpunkt des Kolbens überwacht. Der zugehörige Sensor ist aber wieder ein zusätzlich eingebauter Halleffekt-Sensor.

Die einzigen elektrischen Verbindungen zur Original-Hardware sind Masse und der 5V Anschluss (siehe Pfeil) für die Versorgung des Arduino sowie des Display und der Sensoren:

5V Anschluss

Das Netzteil der Originalelektronik ist stark genug, die Ãœberwachungsschaltung mit zu versorgen.

Die Adapterplatine wurde mit einem Sandwich aus zwei Lagen Spiegeltape und einer dünnen Kunststoffplatte an der Edelstahl-Umhüllung des Wasserbehälters angebracht:

Platzierung des Arduino

Das Sandwich zur Befestigung ist notwendig, da die Pins der verschiedenen Steckkontakte auf der Unterseite der Platine überstehen und ohne diese Maßnahme Kurzschlüsse verursacht hätten.

In der Rückwand ist an passender Stelle ein Loch gebohrt, groß genug für einen mini USB-B Stecker. So kann die Firmware des Arduino aktualisiert werden, ohne das Gehäuse öffnen zu müssen.

Spontan fällt mir als Grund für eine Aktualisierung ein weiterer Zähler für die Überwachung des Bohnenbehälters ein ;-)


Das verdrillte Kabel führt die beiden I²C-Signale und die Versorgungsspannung zur Sensorplatine hinter der Frontplatte. Zwei der drei dreiadrigen Leitungen für die Sensoren sind hier ebenfalls zu erkennen.

Anschlüsse am Arduino

Die verdrillte Leitung wird so im Gehäuse verlegt, dass sie keine heißen Teile berühren kann. Im Bereich des Netzschalters und der Temperaturschalter an der Heizpatrone ist sie zusätzlich durch eine Kunststoffumhüllung (grüner Plastikschlauch im Bild unten) geschützt.

Hinweis

Die vier Leitungen (I²C und Spannungsversorgung) müssen geschirmt oder eben verdrillt  bzw. geflochten werden, damit die EMV-Störungen beim Schalten der verschiedenen Relais und Temperaturschalter in der Maschine keine Probleme verursachen. Eine vorher verwendete vieradrige Flachbandleitung hat nur bis zum ersten Schaltvorgang der Pumpe funktioniert.

Den von Computerflachbandkabeln bekannten Trick, jede zweite Ader mit Masse zu belegen, habe ich nicht getestet, könnte aber auch funktionieren. Dafür müsste dann aber das Layout der beiden Platinen angepasst werden und das Kabel wäre mit 9 Adern breiter und dadurch insgesamt schlechter zu verlegen.

Hier die Durchführung aus dem Innenraum in den Bereich hinter der Frontplatte:

Durchbruch zur Frontplatte

Anmerkung
Im endgültigen Zustand sind die verdrillten Leitungen durch eine geschirmte, 4-adrige Steuerleitung ersetzt worden.


Die Sourcen für den Arduino stelle ich als Download zur Verfügung, sie sind ausführlich kommentiert, so dass eigene Ideen leicht selbst eingebracht werden können :-)

Die ZIP-Datei enthält neben der INO-Datei noch alle im Programm verwendeten Bitmaps (Smileys, Kaffeetasse, Dampffahnen).

Hinweis
Verwendet man die Firmware in der für normale Tasten oder einzelne Touchsensoren compilierten Version, kann der Einstellungen-Bildschirm mit der Zahlendarstellung der Touchsensorwerte nicht mehr verlassen werden. Der Arduino muss dazu neu gestartet werden (Reset Taster oder Spannung AUS/EIN). Dieses Manko ist in der Version V1.2 (siehe unten) behoben.

Update
Im Laufe der Zeit nutzen sich die Pixel des OLED Display ab. Pixel, die über längere Zeit aktiv, also eingeschaltet sind, werden dunkler. Das äußert sich beim Quickmill Saver dadurch, dass z.B. die Smileys an den Grenzen der Füllstandanzeige-Rechtecke senkrechte Striche im Gesicht haben.

Ich habe deshalb einen Timer eingebaut, der die Anzeige nach zwei Minuten soweit wie möglich dimmt, um diesen Effekt zu minimieren. Da ich schon dabei war, werden jetzt die Warnanzeigen für “Satzbehälter leeren” und “Wasser nachfüllen“ in der Intensität pulsierend dargestellt.
Zusätzlich wird jetzt im Menü “Einstellen” die Version und das Erstellungsdatum der installierten Firmware angezeigt, wenn man im Smiley-Menü durchscrollt.

Die aktualisierte Firmware V1.2 stelle ich zur Verfügung. Die ZIP-Datei enthält diesmal nur die INO-Datei, die Bitmaps sind bereits codiert in der INO-Datei enthalten.

Update
Um die Abnutzung der Pixel anzugleichen, wird das Display zusätzlich im Minutentakt invertiert.

Die Anzeige der Warnungen “Satzbehälter leeren” und “Wasser nachfüllen” geht hin und wieder doch durch die Lappen, wie die Erfahrung in den letzten Jahren zeigt, man übersieht die kleine Anzeige des Textes. Zusätzlich zum bereits in V1.2 implementierten Pulsieren flackert jetzt die Anzeige zweimal kurz innerhalb jeder Pulsiersequenz um Aufmerksamkeit zu erheischen. Das Display wird dazu kurz invertiert.

Hier die aktualisierte Firmware V1.3.

Update
Die invertierte Darstellung sieht auf dem Blau/Gelb Display ziemlich gruselig aus, die aktiven Pixel der beiden Farbbereiche sind durch  einen schwarzen Strich getrennt, die Fläche ist also nicht homogen.

Inverse Darstellung Blau/Gelb

Wenn das das eigene ästhetische Empfinden stört - das ist bei mir definitiv der Fall - kann die zyklische Invertierung im Menü abgeschaltet werden.

Im Bild sieht man auch sehr schön die verschiedenen eingebrannten Texte und Formen.

  • Hinter “Einstellungen” ist “Satz” erkennbar.
  • Der dargestellte Smiley hat keinen runden Rand, nur den Mund mit Zunge und die Augen. Der angedeutete Kreis ist eingebrannt.
  • Die beiden senkrechten Rechtecke stammen von der Darstellung der beiden Füllstände.

Die sporadische Einblendung der Smileys kann jetzt ebenfalls per Menü parametriert werden.

Im Zuge dieser Erweiterungen ist die Darstellung der Sensorwerte im Menü entfallen, die Angaben haben sowieso keinen sittlichen Nährwert.

Die Bedienungsanleitung von weiter oben gilt - bis auf die erwähnten Änderungen - weiterhin.

Die zugehörige aktualisierte Firmware V1.4 biete ich zum Download an.

Hinweis
Das Pulsieren der Helligkeit ist bei weißen Displays recht gut erkennbar, die Displays in Blau/Gelb hingegen stellen die unterschiedlichen Helligkeiten nicht so gut dar.

Tipp
Sehr sporadisch zeigt das Display beim Einschalten nur “weißes Rauschen”, also ein zufälliges Pixelmuster. Die Initialisierung hat dann aus ungeklärten Gründen nicht richtig funktioniert. Zuerst sollte versucht werden, durch Festhalten der Taste “Rechts” länger als 2 Sekunden, den Watchdog zu triggern. Der µC startet dadurch neu und durchläuft das Setup erneut. Funktioniert das nicht, muss die Kaffeemaschine Aus- und wieder Eingeschaltet werden.

Update
Die Tage brach bei uns im Hause der Kaffeenotstand aus. Unsere Quickmill hat nach mehr als 17 Jahren mit zwei lauten Knalls den Geist aufgegeben :(
Der obere Stempel zum Pulver verdichten muss sich beim Runterfahren irgendwie verkantet haben. Die Messingstange ist daraufhin abgebrochen. Da Motor und Getriebe der Maschine vom eher robusten Typ sind, waren die nicht weiter beeindruckt und haben zusätzlich die Stahlstange hinter der Montageplatte abgerissen. Das war der zweite Knall.

Auf die Schnelle waren keine Ersatzteile zu beschaffen, also habe ich eine neue 5000A geordert, die auch innerhalb einer dreiviertel Woche da war. Danke dafür an das Team von Kaffee24!

Diese neue Maschine hat natürlich wieder keine Überwachungsfunktionen und der Umbau wie oben beschrieben muss in nächster Zeit angegangen werden.

Da ich insgeheim den Plan habe, unsere treue alte 5000A wieder zu reanimieren, müssen die AddOns natürlich in der alten Maschine bleiben, was im Umkehrschluss bedeutet, dass die neue Maschine eine neue Überwachung bekommt.

Mit den Erkenntnissen von weiter oben zum Display war klar, diese Maschine bekommt ein weißes Display. Somit stand eine umfangreiche Ãœberarbeitung der Firmware ins Haus, denn durch den Wegfall der Trennung zwischen gelbem und blauem Displayteil steht für alle Bitmaps, also die Smileys und die Tassenanimation, die komplette Höhe des Display zur Verfügung. Die Smileys können also größer sein, nicht nur 48 x 48 Pixel, sondern jetzt 56 x 56 Pixel. Hierbei ist zu beachten, dass die verwendete SSD1306  Library von Adafruit die Bitmap-Daten im Format Modulo 8 erwartet. Zulässige Bildbreiten für die Smileys und die Tasse sind also 48, 56 oder 64 Bit, für den Dampf 8 oder 16 Bit.

Alle Warnungen über volle oder leere Behälter können jetzt vertikal zentriert dargestellt werden, die Smileys und die Tasse ebenfalls.

Ich habe mich also erneut auf die Suche gemacht und Vektorgrafiken für nette Smileys und die Tasse gesucht. Bei den Smileys bin ich bei AnnaliseART auf Pixabay.com fündig geworden, leider hat Annalise ihren Account auf Pixabay deaktiviert. Die Tasse ist an einen Entwurf auf iStockPhoto angelehnt, halb dreidimensional und deutlich gefälliger als mein erster Entwurf.

So gerüstet habe ich die Firmware überarbeitet, schnell noch ein drittes Dampfbildchen zugefügt und eine neue Version V2.0 erstellt.

Über Defines können mehrere Optionen vor der Compilierung eingestellt werden, insbesondere der Typ des verwendeten Display. Wird das Define DISPLAYWEISS nicht aktiviert, ist die Firmware kompatibel zur Version 1.4, kann also die Blau/Gelbe Anzeige ansteuern, die Grafiken und Texte sind identisch wie dort. Mit aktiviertem Define DISPLAYWEISS werden alle oben beschriebenen Optionen aktiviert, inklusive Dimmen der Anzeige und zyklischem Invertieren, beides, um die Abnutzung des OLED Display zu minimieren oder zumindest gleichmäßig erfolgen zu lassen.

Im Prinzip ist also diese neue Firmware geeignet, eine vorhandene Anzeige auf ein weißes Display umzurüsten. Hierbei muss aber beachtet werden, dass die Displays ggf. unterschiedliche Anschlussbelegungen haben, das ist zumindest bei den mir vorliegenden Typen der Fall.

Um diesem Umstand Rechnung zu tragen, habe ich eine erweiterte Version V2.1 der Sensorplatine erstellt. Mehr oder weniger identisch zur ersten Version, aber es gibt eine zweite Reihe Anschlüsse für das Display.

QT1070 Adapter V2.1.1

Die untere Reihe Anschlüsse - Kennzeichnung “ws” - passt für meine Version der weißen Displays, die Reihe darüber - Kennzeichnung “bg” - für meine Displays in der Ausführung Blau-Gelb.

Man sieht, die beiden Anschlüsse für P5V und GND sind vertauscht, also bitte nicht versehentlich das Display am falschen Port anschließen. Das würde unweigerlich zur Zerstörung des Display führen.

Das zugehörige Schaltbild hat lediglich die vier zusätzlichen Testpunkte mehr, die ich zur Kontaktierung des Display verwende.

QT1070 Adapter V2.1.1        (Click auf das Bild für größere Darstellung)

Hier findet ihr die Designfiles für den Sensoradapter V2.1.1 im EAGLE V7.7 Format.

Aktualisierung
Mit der Version V2.0 der Firmware ist auf einem Arduino Nano ausschließlich der Betrieb mit normalen Tasten möglich, weil bei Aktivierung der QTouch Sensor-Bibliothek der Speicher überläuft (Flash zu klein). In der Version V2.1 der Firmware kann wahlweise auch die Bedienung über QTouch Sensoren verwendet werden.

Aktualisierung
In der Zwischenzeit habe ich die Firmware des Quickmill Saver auch auf ESP8266 portiert. Ich dachte mir, damit kann ich eine aktualisierte Firmware einfach über WLAN OTA auf den Prozessor spielen und spare mir das Loch in der Rückwand für das USB-Kabel.

Die Portierung an sich hat ganz gut geklappt, der Code funktioniert prinzipiell. Da ich einen meiner überzähligen ESP-01 verwenden wollte, habe ich mir für die Sensoren I2C-Typen besorgt und mit intensiver Hilfe von Eike - genaugenommen hat er den Job alleine erledigt - eine Library für die Anbindung dieser Si7210 Halleffekt-Sensoren an die ESPs adaptiert.

Leider stellte sich heraus, dass die Schleifenzeit der Firmware mit dem ESP viel zu langsam ist. Meine Hoffnung, dass das an der noch fehlenden Anbindung der Tasten für die Menübedienung liegt (weil die Abfrage der Tasten via I2C in Timeouts läuft), hat sich nicht erfüllt. Auch mit Tasten bleibt die Schleifenzeit weit hinter der des Arduino Nano zurück und erzeugt zwei Probleme:

  • Die Reaktion auf Tasten und Sensoren ist nicht gesichert, man muss das Zeitfenster treffen, in dem die betreffende Taste abgefragt wird (ich polle die Tasten/Sensoren).
  • Die Aufmerksamkeitsfunktion bei leerem Wassertank oder vollem Satzbehälter blitzt nicht zweimal kurz auf, sondern blinkt gemütlich vor sich hin.

Zusätzlich befürchte ich, dass ein ESP8266 eine zu hohe Stromaufnahme gegenüber dem Arduino Nano hat. Das könnte zu Problemen führen, da ich wieder das Netzteil der Quickmill zur Versorgung der Überwachung verwenden will.

Alle Punkte zusammengenommen wird also auch die zweite Kaffeemaschine eine Arduino Nano befeuerte Überwachung eingepflanzt bekommen. Damit besteht dann auch nicht mehr die Notwendigkeit, I2C-Sensoren zu verwenden, der Nano hat ausreichend IOs zum Anschluss der ursprünglich verwendeten A3144 Sensoren... tut mir Leid Eike ;)

Wenn ein geneigter Nachbauer dennoch Lust hat dem ESP 8266 eine Chance zu geben, hier die vorbereitete ESP8266 Firmware V3.0. Wenigstens die Tasten- und Sensorabfragen müssten nach meinem Dafürhalten dann auf Interrupts umgebaut werden... viel Spaß!

Tipp
Die von Eike auf Arduino angepasste Library für den SI7210 besteht aus den zwei Dateien SI7210.h und SI7210.cpp, zu finden im ZIP mit der Firmware V3.0.

Die Implantierung dieser zweiten Version des Quickmill Saver mit Arduino Nano in unsere neue 5000A beschreibe ich auf einer eigenen Seite.


Viel Spaß beim Nachbau und mit der deutlich aufgewerteten Quickmill 5000A!

 


Beim Aufruf dieser Funktion werden Daten an Google in USA übermittelt. Neben Ihrer IP-Adresse wird auch die URL der besuchten Seite übertragen.
Besucherzaehler

Besucher seit
25.11.2000