Brüherkennung
Inhaltsverzeichnis
Einleitung
Es wird empfohlen, das brew detection Feature beim ersten Test zu deaktivieren. Wenn der normale PID gut läuft, es sich ein für dich angenehmes Heizverhalten beim Starten zeigt und die Regelung stabil am Soll-Wert läuft, dann kannst du dir die Brüherkennung genauer anschauen.
Konfiguration der Erkennung
Die Bezugserkennung wird bei PID Only, PID Only+ und Vollausbau unterschiedlich realisiert. Mit den folgenden Parametern der User Config, kann die Bezugserkennung aktiviert und die Methode der Erkennung konfiguriert werden.
User Config Parameter für Version < 4.x:
#define BREWDETECTION 1
// 0 = off, 1 = Software, 2 = Hardware, 3 = Sensor/Hardware for Only PID
User Config Parameter für Version ab v4.x:
#define FEATURE_BREWDETECTION 1 // 0 = deactivated, 1 = activated
#define BREWDETECTION_TYPE 3 // 1 = Software (Onlypid 1), 2 = Hardware (Onlypid 0), 3 = optocoupler for Only PID
Die folgende Tabelle gibt einen Überblick über die drei möglichen Methoden der Bezugserkennung, welche in den folgenden Kapiteln detailliert beschrieben werden.
Auswahl | Methode | Beschreibung |
---|---|---|
1 | Erkennung mittels Software (PID Only) | Bei PID Only ist dem Controller nicht bekannt, ob der Bezugsschalter gedrückt ist oder nicht. Daher wird der Brühvorgang per Software anhand des Temperatur-/Heizverlaufs ermittelt. |
2 | Erkennung mittels Hardware (Vollausbau) | Beim Vollausbau wird der Brühschalter direkt an den Controller angeschlossen, daher kann der Zustand des Schalters direkt abgefragt werden. |
3 | Erkennung mittels Sensor (PID Only+) | Der Brühschalter wird (mit seiner regulären 230 Volt Verschaltung) mit einem zusätzlichen Sensor überwacht, welcher dem Controller mitteilt, ob dieser betätigt wurde oder nicht. |
Brüherkennung mittels Sensor (PID Only+)
Als Ergänzung wurde eine Lösung zwischen PID Only und Vollausbau entwickelt: PID Only+. Hierbei wird der Brühschalter mit seiner regulären 230 Volt Verschaltung mit einem zusätzlichen Sensor überwacht, welcher dem Controller mitteilt, ob dieser betätigt wurde oder nicht. Da es unterschiedliche Sensoren gibt, muss konfiguriert werden wie das Signal dem Controller übermittelt wird.
User Config Parameter für Version < 4.x:
#define VOLTAGESENSORTYPE HIGH
#define PINMODEVOLTAGESENSOR INPUT // Mode INPUT_PULLUP, INPUT or INPUT_PULLDOWN_16 (Only Pin 16)
#define PINVOLTAGESENSOR 15 //Input pin for voltage sensor
PINVOLTAGESENSOR
gibt den gewählten PIN am ESP an.VOLTAGESENSORTYPE
HIGH
bedeutet, dass der Sensor ein HIGH Signal (3,3 Volt) ausgibt, wenn der Schalter gedrückt ist.LOW
muss gewählt werden, wenn bei gedrücktem Schalter am Sensor ein LOW Signal (GND) ausgegeben wird.
- Je nach gewählten PIN und Aufbau muss ggf. ein INPUT Pullup oder Pulldown (nur Pin 16) erfolgen (
PINMODEVOLTAGESENSOR INPUT
oderINPUT_PULLUP
oderINPUT_PULLDOWN_16
). Hintergrund ist, dass durch ein Pullup oder Pulldown der PIN am ESP definiert in LOW oder HIGH gehalten wird, um dann genau das gegensätzliche Signal vom Sensor zu messen.
User Config Parameter für Version ab v4.x:
#define OPTOCOUPLER_TYPE HIGH // BREWDETECTION 3 configuration; HIGH or LOW trigger optocoupler
Ab Version 4.x und dem PCB v1.5 vereinfacht sich die Konfiguration. Es muss lediglich der User Config Parameter OPTOCOUPLER_TYPE
gesetzt und die dazu passende Verbindung am Lötjumper JP2
auf dem PCB (per Lötverbindung) gesetzt werden. Der Lötjumper bestimmt, ob ein Pullup- oder Pulldown-Widerstand aktiviert wird und der PIN am ESP definiert in LOW oder HIGH gehalten wird, um dann genau das gegensätzliche Signal vom Sensor zu messen.
OPTOCOUPLER_TYPE HIGH
bedeutet, dass der Sensor ein HIGH Signal (3,3 Volt) ausgibt, wenn der Schalter gedrückt ist.JP2
muss in diesem Fall aufpull down
gesetzt werden.OPTOCOUPLER_TYPE LOW
muss gewählt werden, wenn bei gedrücktem Schalter am Sensor ein LOW Signal (GND) ausgegeben wird.JP2
muss in diesem Fall aufpull up
gesetzt werden.
Folgende Beispielkonfigurationen gelten für folgende Sensoren:
Der Sensor erhält 3,3 Volt und die andere Seite wird mit PIN 15 verbunden.
User Config Parameter für Version < 4.x:
// PID & Hardware
[...]
#define VOLTAGESENSORTYPE HIGH
#define PINMODEVOLTAGESENSOR INPUT // Mode INPUT_PULLUP, INPUT or INPUT_PULLDOWN_16 (Only Pin 16)
[...]
// Pin Layout
[...]
#define PINVOLTAGESENSOR 15 //Input pin for voltage sensor
User Config Parameter für Version ab v4.x:
#define OPTOCOUPLER_TYPE HIGH // BREWDETECTION 3 configuration; HIGH or LOW trigger optocoupler
JP2
wird auf pull down
gesetzt.
Der Sensor erhält 3,3 Volt und die Signalleitung wird mit PIN 16 bzw. BREW
(ab PCB v1.5) verbunden.
User Config Parameter für Version < 4.x:
// PID & Hardware
[...]
#define VOLTAGESENSORTYPE LOW
#define PINMODEVOLTAGESENSOR INPUT // Mode INPUT_PULLUP, INPUT or INPUT_PULLDOWN_16 (Only Pin 16)
[...]
// Pin Layout
[...]
#define PINVOLTAGESENSOR 16 //Input pin for voltage sensor
User Config Parameter für Version ab v4.x:
#define OPTOCOUPLER_TYPE LOW // BREWDETECTION 3 configuration; HIGH or LOW trigger optocoupler
JP2
wird auf pull up
gesetzt.
<summary>Details zum Einbau Optokoppler</summary>
Im Fall zwei (220V Sensor / Optokoppler) sollte es dann wie folgt verbunden sein:
Board | Opto |
---|---|
GND | GND |
3,3V | VCC |
PIN 16 / BREW | OUT |
Brüherkennung mittels Software (PID Only)
Ohne zu tief in die technischen Details der Erkennung einzusteigen soll dir dennoch kurz die grundlegende Funktionsweise erläutert werden. Der Mikrocontroller überwacht bei aktivierter ‘Brüherkennung mittels Software’ (BREWDETECTION 1
bzw. FEATURE_BREWDETECTION 1
+BREWDETECTION_TYPE 1
) kontinuierlich die Temperatur. Dabei wird die zeitliche Veränderung der Heizrate/Kühlrate für ein fortlaufendes Zeitfenster analysiert. Das Ergebnis ist dann die „heat average“. Kühlt die Maschine ab wird dieser Wert negativ, bei einem Hochheizen entsprechend positiv.
Die Brüherkennung „horcht“ nun auf diesen „heat average“ und überprüft ob ein definierter, negativer Grenzwert überschritten wird ab dem die Maschine von einem Bezug ausgehen soll. Dieser wird bei „brew heater detection limit“ definiert. Hierbei ist zu beachten, dass hier der absolute Werte eingetragen wird: 70 entspricht -70. Die Übersetzung in den negativen Wert erfolgt im Quellcode!
Vereinfacht kann festgehalten werden, dass die „brew heater detection limit“ letztendlich die Empfindlichkeit der Erkennung wiedergibt: Je kleiner der Wert ist, je empfindlicher reagiert die Brüherkennung. Ist die Erkennung zu empfindlich eingestellt (kleiner Wert, z.B. 5), wird jedes normale Abkühlung als Brühvorgang erkannt, ist der Wert zu groß (z.B. 1000) wird die Brüherkennung erst zu spät oder gar nicht ausgelöst. Es kann dazu hilfreich sein den Verlauf der heat average über eine längere Zeit zu beobachten und somit einen geeigneten Wert zu finden.
Wenn die Erkennung ausgelöst wird, dann gelten für den definierten Zeitraum - welcher in „brew timer Software Seconds“ (im oberen Screenshot, 120 Sekunden) definiert ist - andere PID Werte. Somit kann der Regler nun aggressiver auf den Brühvorgang reagieren und schneller hochheizen. Wichtig ist hierbei dass jede Unterschreitung des Grenzwertes zu einer Auslösung der Erkennung führt. Der Verlauf nach dem Auslösen wird nicht weiter ausgewertet, sondern die geänderten PID Werte gelten fix für die definierte Zeit nach der Erkennung des Bezuges.
PID Werte
Die geänderten PID Werte gelten immer, wenn ein Brühvorgang erkannt wird, sei es per Software oder im Vollausbau durch die Abfrage am Brühschalter. Die Zeitdauer wird mit “brew timer Software Seconds” in der Blynksteuerung festgelegt. Für den kurzen Zeitraum muss der PID schnell wieder auf Temperatur kommen, ohne überzuschwingen. Hierzu muss vor allem der I-Anteil erhöht werden, damit sich der Regler nicht die erfolgte Abweichung vom Soll-Wert für die Zukunft „merkt“. Der D-Anteil kann auch erhöht werden, um den Regler beim Abfallen der Temperatur zu „beschleunigen“ und „abzubremsen“, wenn die Temperatur wieder Richtung Soll-Wert geht. Als Größenordnung können die Werte aus dem oberen Screenshot genommen werden. In der nachfolgenden Tabelle sind bewährte PID für die Brüherkennung zu finden.
Maschine | P | I | D | Timer | Limit |
---|---|---|---|---|---|
Rancilio Silvia (nicht isoliert) | 50 | 0 | 20 | 120 | 45 |
Rancilio Silvia E (isoliert) | 70 | 0 | 20 | 240 | 65 |
Gaggia | 75 | 0 | 15 | 180 | 90 |
Quick Mill (Modell 0835 & 3000) | 80 | 0 | 80 | 100 | tbd. |
Vergleich bei einem Bezug
Ausgangssituation sind folgende PID Parameter:
Bei dem Vergleich von einem Bezug mit und ohne Brüherkennung ist zu sehen, dass die Solltemperatur zu einem ähnlichen Zeitpunkt „durchschritten“ wird, aber ohne Erkennung die Temperatur nach oben ausschlägt (96 °C). Die Erkennung kann hier ein deutlich besseres Ergebnis liefern (ca. 93,5 °C). Auch fällt die Temperatur beim Bezug nicht so rapide nach unten ab, da die Heizung schneller reagieren kann.
In der Praxis zeigt sich bei mir zu Hause, dass zügig und reproduzierbar mehrere Espresso hintereinander gezogen werden können, da meistens die 3 Minuten ausreichen den Kaffee zu verteilen und neue Bohnen zu mahlen.