Mikrocontroller Programmierung in MicroPython WiSe 2025/26: Unterschied zwischen den Versionen

Aus Technische Beeinflussbarkeit der Geschmacksache Kaffee
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 49: Zeile 49:


Für den Ablauf zwischen Einschalten der Maschine und Betriebsbereitschaft zum Kaffeebezug, im Weiteren Betriebsbereitschaft zum Dampfbezug, wird eine Startprozedur definiert und soweit es die vorhandene Hardware zulässt getestet.
Für den Ablauf zwischen Einschalten der Maschine und Betriebsbereitschaft zum Kaffeebezug, im Weiteren Betriebsbereitschaft zum Dampfbezug, wird eine Startprozedur definiert und soweit es die vorhandene Hardware zulässt getestet.
== Display ==
Zur Visualisierung der Startprozedur und Darstellung der Systemparameter wird ein Display in die Maschinensteuerung hinzugefügt. Das Display ist mit der Hardware (adafruit 2478) definiert und verfügt über eine resistive Touchfunktion. Die Touchfunktion wird in Verbindung mit dem Vertikalhebel und den beiden Anschlagtaster zur Interaktion mit dem Bediener verwendet.
Während der Startprozedur werden entsprechende Loggings dargestellt.
In der Betriebsbereitschaft zum Kaffeebezug werden 4 Flächen für Kaffeebezug ausgewiesen. Ein Druck auf diese Flächen soll einen Kaffeebezug mit einem definierten Kaffeerezept auslösen. Ein Kaffeerezept besteht aus der menge Kaffeepulver als In bezeichnet in [g], der menge Kaffeebezug als Out bezeichnet in [ml oder g], der Bezugszeit, der Preinfusionszeit und der Bezugstemperatur (Sollwert für den Mischtemperaturregler).
Im Weiteren wird eine Fläche für den Dampfbezug und eine weitere Fläche für den Teewasserbezug bereit gestellt. Drücken auf Dampfbezug öffnet den Dampfhahn (Y113) und für den Teewasserbezug ist eine Teewasserbezugstemperatur erforderlich.
== Vertikalhebel ==
Zum Display ist ein Vertikalhebel mit zwei Endanschlagtaster zugehörig. Der vordere Anschlagschalter wird immer als Flush/Rückspülreinigung interpretiert. Der hintere Anschlagtaster löst im Normalmodus einen Kaffeebezug mit dem als Default definierten Kaffeerezept aus.
Der Vertikalhebel ist im Normalmodus funktionslos. Im Handhebelmodus wird über den Vertikalhebel eine Handhebelmaschine simuliert. Der Druck auf den hinteren Anschlagschalter startet dann den Handhebelprozess und sorgt für die Bereitstellung des Kaffeebezugswassers. Wenn der Mischregler sich im eingeschwungenen zustand befindet, wird dies über das Display signalisiert und der Handhebelbezug kann gestartet werden. Die jeweils aktuelle Hebelstellung ist proportional zur bis dahin geförderten Bezugswassermenge. Es kann allerdings auch „gepumpt“ werden, indem die Hebelstellung wieder zurückgenommen wird. Diese Funktionalität kann als Programmcode erstellt und getestet werden. Eine Prozessüberprüfung an der Hardware ist aufgrund des Fehlens dieser nicht möglich.
Alle Parameter werden über den Token übermittelt.
Die Setup-Funktionalitäten zum Erstellen von Kaffeerezepten, Einstellung der Teewasserbezugstemperatur, usw. werden nicht betrachtet.


== Maschinensimulator ==
== Maschinensimulator ==

Version vom 13. November 2025, 19:13 Uhr

Breites Logoband.png


Mikrocontroller Programmierung in MicroPython Wintersemetser 2025/26

Für das Projekt der labortechnischen und Glasboiler Espressomaschine soll die vorhandene Master (MATLAB®-App) Client (RPi RP2040 MCUs in MicroPython) Steuerung auf eine autarke Multi-MCU-Steuerung mit mehreren RPi RP2040 und/oder RPi RP2350 mit einer MATLAB®-App als Service-Tool umgestellt werden.

Die Umstellung soll im ersten Schritt über Demonstratoren vorbereitet werden. Die erforderlichen Steuerungsplatinen sind in mehrfacher Ausfertigung vorhanden, so dass Teilaufgaben voneinander unabhängig abgearbeitet werden können.

Die Programmcodes in MicroPython für die Realisierung der Grundfunktionen (Schalten, Messwerte erfassen, Display ansteuern, UART Kommunikation, MATLAB® Kommunikation) sind in MATLAB® meets MicroPython [40] vorhanden. Hierzu wird die zweite (noch nicht veröffentlichte) Ausgabe zur Verfügung gestellt.

Diese Projektarbeit dient der Weiterentwicklung der modularisierten Systemsteuerung im Gesamtprojekt zur Entwicklung der Siebträger-Espressomaschinen.

Aufgabenanalyse

Maschinensimulator - Hardware

Für die Steuerungselektronik besteht die Siebträger Espressomaschine aus Messwerten. Dies sind in der aktuellen Form

  • 4 NTC Temperatursensoren mit 10 kOhm
  • 2 Druckmesswerte im Spannungsbereich 0,5 bis 4,5 V
  • Leitwert und Temperatur des zufließenden Wassers im Spannungsbereich 0 bis 5 V
  • Flowmeter mit 39,9 Impulsen je ccm
  • 4 Füllstandssensoren über Kurzschlussdetektion

Realisiert werden diese Messwerte über ein digitales Potentiometer MCP4151 mit 10 kOhm, welches über eine SPI-Schnittstelle eingestellt werden kann. Damit werden die 4 NTC Temperatursensoren und über die Spannungsteilerfunktion des Bauelements werden die Druckmesswerte, der Leitwert und die Temperatur des zufließenden Wassers simuliert.

Die Kurzschlusserzeugung der Füllstandssensoren werden mit einem digitalen Analogschalter (DG411) realisiert und das Flowmetersignal wird über eine Transistorfolgeschaltung erzeugt.

Die Schaltung benötigt eine MCU mit mindestens 17 für Kommunikation und Elektronikansteuerung verfügbaren PINs. Hierzu ist eine Raspberry Pi Pico MCU vorgesehen.

Maschinensimulator - Hardware

Auf der MCU selbst ist zwingend die SPI-Kommunikation zu den digitalen Potentiometer mit insgesamt 8 verschiedenen Chipselect erforderlich. Die digitalen Analogschalter benötigen lediglich ein PIN mit Digoutfunktion während das Flowmetersignal als PWM-Signal mit variabler Frequenz realisiert wird. Für die variable Frequenz kann über die Anweisung PWM.freq([Frequenz]) eingestellt werden.

Die Einstellwerte für das digitale Potentiometer sollten für die 4 NTC Temperatursensoren als Temperaturwerte eingegeben werden. Aus dem Eingabewert wird und über die Beachtung der nichtlinearen Kennlinie der NTCs sowie dem nichtlinearen Zusammenhang aus Einstellwert und Widerstandswert der Einstellwert des jeweiligen digitalen Potentiometers. Die normierten Kennlinien der NTCs liegen vor. Eventuell lassen sich darüber die erforderlichen Einstellwerte ermitteln.

Auch die Einstellwerte für die Simulation der Druckmesswerte sollten in bar für den Brühgruppendruck bzw. in mbar für den Boilerdruck erfolgen. Auch hier muss die nichtlinearität des digitalen Potentiometers berücksichtigt werden.

Es erscheint sinnvoll, dass der Maschinensimulator in den Kommunikationsring eingebunden wird. Aus dem Token kann der Sollwert für die Pumpensteuerung entnommen werden, welches wiederum für die Generierung des Flowmetersignals verwendet werden kann. Ebenso können aus dem Token die Heizleistungen entnommen werden, was für die Temperatursignale sowei Boilerdrucksignal verwendet werden könnte.

Für die einfachere Bedienung und um die Anzahl der benötigten PCs zu minimieren ist eine MATLAB®-GUI nützlich. In dieser sollten die simulierten Signale per numerischer Eingabe, Schalter oder Slider einstellbar sein. ebenso sollten darin Umschaltungen möglich sein, so dass die simulierten Signale in Abhängigkeit der Pumpensteuerung und Heizleistung erzeugt werden. Auch denkbar wären die generierung von Messwerten über bekannte Messwertverläufe von gemessenen Kaffeebezügen.

Leistungsvereinbarung

Kommunikation

Es wird eine Kommunikation zwischen den MCUs (Platinen) der Maschinensteuerung aufgebaut. Dazu wird die auf den einzelnen Platinen herausgeführte UART-Schnittstelle so verbunden, dass ein Kommunikationsring entsteht. Über den Kommunikationsring wird ein als Token bezeichnetes Datenpaket mit allen für den Maschinenbetrieb erforderlichen Messdaten, Stellgrößen, Anforderungen, Einstellparametern und Logging-Informationen im Kreis durchgereicht. Der Token wird so gestaltet, dass dieser dynamisch an spätere Anforderungen (2. Brühgruppe) angepasst werden kann. Der Token wird für eine möglichst kleine Anzahl an Kommunikations-Bytes binär ausgeführt. Es wird eine Definitionstabelle des Tokens im öffentlichen Wiki erstellt. Das Verfahren wird als Espressomaschinen-Kommunikations-Ring (EKR) bezeichnet.

Mehrkernnutzung

Es wird versucht, über die MicroPython-Funktionalität „_thread“ die Kommunikation von den anderweitigen Prozessaufgaben auf allen MCUs zu trennen und auf den zweiten Prozessorkern zu verlagern.

Verlagerung der Regelkreise

Die aktuell über die MATLAB®-GUI ausgeführten Regelkreise, Füllstandsregelung (Boiler und Tanks), Boilerdruckregelung, Mischtemperaturregelung und Durchflussregelung werden auf die dafür prädestinierten MCUs verlagert. Die Reglercodes dazu sind im Prinzip in MATLAB® vorhanden, müssen aber an das MCU-Umfeld und die Programmiersprache MicroPython angepasst werden. Funktionstest der Regler an einer realen Hardware sind nicht möglich, da diese soweit noch nicht vorhanden ist. Ziel ist die vollständige Implementierung der Reglerlogik in MicroPython einschließlich Schnittstellenanpassung und Variablenmanagement. Die Funktionsprüfung erfolgt auf Codeebene sowie über simulierte Testfälle.

Für den Ablauf zwischen Einschalten der Maschine und Betriebsbereitschaft zum Kaffeebezug, im Weiteren Betriebsbereitschaft zum Dampfbezug, wird eine Startprozedur definiert und soweit es die vorhandene Hardware zulässt getestet.

Maschinensimulator

Zur Überprüfung des MCU-Verbunds, der implementierten Reglerlogik sowie der Startprozedur ohne vorhandene reale Maschinenhardware wird ein Maschinensimulator eingesetzt.

Die Hardware für den Maschinensimulator wird bereitgestellt. Der Maschinensimulator generiert die Widerstandswerte der NTC-Temperatursensoren sowie die Spannungswerte der analogen Sensoren im Bereich von 0,5 V bis 4,5 V. Die Füllstandssensoren werden über Kurzschlussschalter simuliert, der Durchflusssensor über eine getaktete Transistorfolgeschaltung mit PWM-Ansteuerung. Zur Nachbildung der Temperatursensoren, Drucksensoren, Füllstandssensoren, Leitwert- und Durchflusssignale werden geeignete bereits festgelegte elektronische Komponenten verwendet. Die Ansteuerung der einzelnen Signalerzeuger ist dabei offen zu gestalten und kann im Verlauf der Implementierung festgelegt werden.

Der Maschinensimulator wird in den bestehenden Kommunikationsring integriert. Dadurch können Sollwerte und Systemparameter aus dem Token ausgelesen und zur Erzeugung der simulierten Sensorsignale genutzt werden.

Besprechungsprotokolle