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.

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 doch recht dicke 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 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 bis100 Jahre...

Falls die verwendeten EEPROM-Zellen vorher den Geist aufgeben, kann

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

im Programm ge├Ąndert werden, die Z├Ąhler laufen dann 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 (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.


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 Frontplatte, 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


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).

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

 


Besucherzaehler

Besucher seit
25.11.2000

>