Mikrocontroller Programmierung in MicroPython SoSe 2026: Unterschied zwischen den Versionen
| Zeile 115: | Zeile 115: | ||
== Verlagerung der Regler Syntax == | == Verlagerung der Regler Syntax == | ||
Ziel dieser Arbeit ist die vollständige Übertragung der in MATLAB® implementierten Regelalgorithmen aus [114] in MicroPython sowie deren Vorbereitung für die Implementierung auf einer STM32‑MCU. | Ziel dieser Arbeit ist die vollständige Übertragung der in MATLAB® implementierten Regelalgorithmen aus [114] in MicroPython sowie deren Vorbereitung für die Implementierung auf einer STM32‑MCU. Die Umsetzung erfolgt entlang der bestehenden Reglerstruktur: Füllstandsregler, Boilerdruckregelung, Mischtemperaturregler und Durchflussregler. | ||
Die Umsetzung erfolgt entlang der bestehenden Reglerstruktur: Füllstandsregler, Boilerdruckregelung, Mischtemperaturregler und Durchflussregler. | |||
= Besprechungsprotokolle und weitere Unterlagen = | = Besprechungsprotokolle und weitere Unterlagen = | ||
Version vom 21. April 2026, 17:41 Uhr
Mikrocontroller Programmierung in MicroPython Sommersemester 2026
Für die Projekte zur labortechnischen Espressomaschine (und weiteren Derivaten) ist die Mikrokontroller-Programmierung einer Steuerungselektronik erforderlich.
Die Programmierung der Mikrocontroller erfolgt in MicroPython und die übergeordnete Steuerung ist eine MATLAB®-APP mit einem Prozessschaubild. Die Grundfunktionalität dieses Vorgehensweise ist in der Quellenliste unter [40] (MATLAB® meets MicroPython) beschrieben.
Das Projekt wurde bereits durch eine Projektgruppe bearbeitet und hat einen Projektstand, der jedoch noch nicht die gesamte erforderliche Steuerungsfunktionalität umfasst.
Es wird angestrebt eine Steuerung auf Basis eines Nucleo STM32H743ZI2 zu erstellen. Dies würde die aktuell drei Steuerungsplatinen und Mikrocontroller auf einen reduzieren. Kommunikation wäre dann lediglich zum Displaycontroller erforderlich.
Aufgabenanalyse
UART-Kommunikation
Es soll eine Stern-Topologie implementiert werden, welche die UART-Kommunikation zu einem separaten Display-Controller, dem Maschinensimulator und der Wartungs- App herstellt. Dabei sind Sende- und Empfangs-Token f¨ ur das Display, die Wartungs-App und den Maschinensimulator einzuf¨ uhren. Es gilt dabei, den Umfang und Takt der neuen Token festzulegen.
Mehrkernnutzung und/oder Multitasking
Es gibt bestimmte Vorgänge, welche regelmäßig zur Unterbrechung des Pro- grammablaufs führen. Es gilt, diese Vorgänge zu identifizieren und umzuleiten, damit diese den Programmablauf nicht mehr unterbrechen. Die Möglichkeit der Mehrkernnutzung fällt dabei aus, da der STM32H753ZI nur über einen M7-Kern verfügt. Dank der Hardware-Unterstützung DMA sowie der Nutzung der uasyncio-Library besteht die Möglichkeit, die Vorgänge umzuleiten. Somit können die Unterbrechungen des Programmablaufs reduziert werden.
Maschinensimulator
Füllstandsregler
Die Füllstandsregelung erkennt den Füllstand über eine Kurzschlussdetektion. Liegt kein Kurzschluss vor, wird dies als zu niedriger Füllstand interpretiert und der Boilerdruckregler zur Vermeidung von Trockenheizen gesperrt. Beim Erreichen des Sollfüllstands erfolgt eine gezielte Überfüllung bei reduzierter Pumpenspannung, um ein periodisches Ein- und Ausschalten der Regelung zu vermeiden. Da die in der MATLAB®-GUI realisierte Boiler Füllstandsregelung aus [114] bereits in einem ersten Stand in MicroPython übertragen wurde, liegt der Fokus hier auf der Validierung am Maschinensimulator sowie der Abstimmung mit den Schnittstellenpartnern.
Boilerdruckregelung
Ziel ist es, die bisher in der MATLAB®-GUI realisierte Boilerdruckregelung aus [114], die auf einem PD-Regler basiert, vollständig zu übertragen, sodass die Regelung unabhängig von der externen PC-Umgebung arbeitet.
Mischtemperaturregler
Der Mischtemperaturregler nach [114] dient zur Regelung der Kaffee- und Teewassertemperatur und wird als PID-Regler für das Mischventil umgesetzt. Die Stellgröße ist dabei die Verstellung des Mischventils. Der Temperatursollwert wird aus dem jeweils aktiven Rezept vorgegeben. Da die Regelung vom aktuellen Durchfluss abhängt, wird eine Kaskadenstruktur verwendet. In dieser Struktur arbeitet der Durchflussregler als innerer, schneller Regelkreis, während der Mischtemperaturregler den äußeren Regelkreis bildet und die Ergebnisse des inneren Kreises berücksichtigt. Daraus ergibt sich ein besonderes Augenmerk auf das Testen des Zusammenspiels der beiden Regler anhand des Maschinensimulators, um das Ziel – die Implementierung dieser Kaskadenregelung auf dem STM32 – zu erreichen.
Durchflussregler
Ein Durchflussregler, der in MATLAB® gemäß [114] vorliegt, wird als PID-Regler in MicroPython umgesetzt. Durch die Anpassung der Pumpendrehzahl über einen Spannungssollwert von 0–5 V kann ein konstanter oder ein profildefinierter Volumenstrom entsprechend der Sollwertvorgabe realisiert werden. Als innerer Regelkreis liefert er kontinuierlich Durchflusswerte an den Mischtemperaturregler. Daraus ergibt sich der Fokus auf der Implementierung und dem Test des Reglers sowie auf der Validierung seines Zusammenspiels mit dem übergeordneten Mischtemperaturregler im Maschinensimulator, um die Integration auf dem STM32 sicherzustellen.
Startprozedur
Display
STM32
Als Haupt-MCU soll ein STM32H753ZI-Controller verwendet werden. Es soll sichergestellt
werden, dass die vorinstallierten Steckerleisten CN7 bis CN10 ausreichend Pins für
Definition der benötigten UART-, ADC-, DAC- und GPIO-Pins aufweisen.
Die Boilerdruck-, die Wassertemperatur-, die Durchfluss- und die Füllstandsregelung des
Boilers müssen implementiert werden. Es soll ebenfalls eine UART-Kommunikation für ein
Touch-Display, einen Maschinensimulator sowie eine Möglichkeit zum Anschließen einer
Wartungs-App programmiert werden. Um einen geordneten Ablauf der einzelnen
Komponenten bei Inbetriebnahme der Maschine zu gewährleisten, soll eine Startprozedur
programmiert werden
Wartungs - APP
Es müssen der Inhalt des Wartungs-Token definiert werden, ein GUI-Layout erstellt werden, ein Kommunikationsaufbau mit dem Maschinensimulator hergestellt werden, die Darstellung der Messwerte, eine manuelle Startprozedur, das Schalten von Magnetventilen, die Einstellung von Sollwertvorgaben (Boilerdruck, Bezugswassertemperatur, Durchfluss) und manuellen Stellwerten für das PWM-Heizelement, die Pumpenansteuerung und die Stellung des Dosierventils sowie die Messwertspeicherung und das Logging programmiert werden. Die App ist bis zu einem funktionsfähigen Prototypen erforderlich.
Leistungsvereinbarung
Wartungs - APP
Die aktuelle MATLAB®-GUI soll in eine komfortable Bedienoberfläche für Wartungs- und Einstellarbeiten überführt werden. Bei aktivierter Wartungs-App sollen sämtliche Tastenfunktionen und die Vertikalhebelfunktion nutzbar sein und zudem alle Aktoren (Magnetventile, Pumpenleistung und Schrittmotorverstellungen) über diese App angesteuert werden können. Des Weiteren soll die bisherige Visualisierung der Messwerte und Schaltzustände erhalten bleiben. Dies allerdings mit einer geringeren Aktualisierungsrate, da vier Aktualisierungen pro Sekunde als ausreichend angesehen werden.
UART-Kommunikation
Um die spezifischen Daten von dem STM32H7 auf das Display zu übertragen, sowie Steuerbefehle des Displays für den STM32H7, wird ein neue UART-Schnittstelle mit Display-Token eingeführt. Ebenfalls wird eine UART-Kommunikation mit entsprechendem Token für Maschinensimulator und der Wartungs-App implementiert. Dabei soll ein Gateway den Zugriff für die Wartungs-App integriert werden.
Multitasking
Die direkte Hardware-Unterstützung über DMA gestaltet sich schwierig in MicroPython, da sie von MicroPython automatisch verwendet wird (bspw. bei Buffern) und nur über Registeraccess direkt ausgeführt werden kann. Daher wird die Nutzung der uasyncio-Library bevorzugt, welche die Vorgänge, die den Programmablauf verzögern, umleitet. Dadurch soll das Programm reibungsfreier ablaufen.
STM32H7
Die bestehenden Regelkreise, Füllstandsregelung (Boiler und Tanks), Boilerdruckregelung,
Mischtemperaturregelung und Durchflussregelung werden von den drei Microcontroller auf
den STM32H7 verlagert. Ebenfalls erfolgt die Migration der Messwerterfassung aller
verbauten Sensoren auf die neue STM32H7-Plattform.
Zusätzlich wird eine UART-Kommunikation implementiert, die die Anbindung des Displays,
eines Maschinensimulators sowie für den Zugriff durch eine externe Wartungs-App über
einem Gateway ermöglicht.
Um einen geordneten Ablauf der einzelnen Komponenten bei Inbetriebnahme der Maschine
zu gewährleisten, wird eine Startprozedur programmiert.
Die Hardware-Umsetzung wird von LfbA Armin Rohnen übernommen.
Verlagerung der Regler Syntax
Ziel dieser Arbeit ist die vollständige Übertragung der in MATLAB® implementierten Regelalgorithmen aus [114] in MicroPython sowie deren Vorbereitung für die Implementierung auf einer STM32‑MCU. Die Umsetzung erfolgt entlang der bestehenden Reglerstruktur: Füllstandsregler, Boilerdruckregelung, Mischtemperaturregler und Durchflussregler.
Besprechungsprotokolle und weitere Unterlagen
- Übergabepräsentation Vorgänger
- Aktueller Projektstand
- Projektstart 26.03.2026
- Projektrücksprache 02.04.2026
- Projektrücksprache 09.04.2026
- Projektrücksprache 17.04.2026
- Projektrücksprache 24.04.2026
- Projektrücksprache 08.05.2026
- Projektrücksprache 15.05.2026
- Projektrücksprache 22.05.2026
- Projektrücksprache 29.05.2026
- Projektrücksprache 05.06.2026
- Projektrücksprache 12.06.2026
- Projektrücksprache 19.06.2026
- Projektrücksprache 03.07.2026
- Projektrücksprache 10.07.2026
- Projektrücksprache 24.07.2026
- Abschlusspräsentation 31.07.2026