<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Konstantin+Rupprecht</id>
	<title>Technische Beeinflussbarkeit der Geschmacksache Kaffee - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Konstantin+Rupprecht"/>
	<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Spezial:Beitr%C3%A4ge/Konstantin_Rupprecht"/>
	<updated>2026-05-02T09:30:30Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.2</generator>
	<entry>
		<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Systemsoftware&amp;diff=4901</id>
		<title>Systemsoftware</title>
		<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Systemsoftware&amp;diff=4901"/>
		<updated>2026-04-27T21:39:49Z</updated>

		<summary type="html">&lt;p&gt;Konstantin Rupprecht: Das ToDo Mehrkernnutzung und/oder Multitasking abgeschlossen (100)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;htmltag tagname=&amp;quot;img&amp;quot; src=&amp;quot;http://vg04.met.vgwort.de/na/4531f1734b324b72b2d7e566cdf639f0&amp;quot;  width=&amp;quot;1&amp;quot; height=&amp;quot;1&amp;quot; alt=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/htmltag&amp;gt;&lt;br /&gt;
[[Datei:Breites Logoband.png|mini|zentriert|hochkant=2.5]]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Systemsoftware lässt sich nicht ohne die Beachtung der Systemelektronik erstellen.&lt;br /&gt;
&lt;br /&gt;
Für die Systemsoftware wurde ein mehrstufiger Entwicklungsprozess definiert:&lt;br /&gt;
# Nutzung einer MCU auf der MicroPython verwendet werden kann. Dies ist durch das STM32F411 nucleo Board der Basiselektronik bzw. durch den Raspberry Pi Pico der Multi-MCU-Elektronik gegeben.&lt;br /&gt;
# Auf der MCU werden lediglich die elementaren Grundfunktionen (GPIO schalten und erfassen, Messwert erfassen, PWM Ausgeben, Sollwert ausgeben, etc.) realisiert und über eine MicroPython zu MATLAB® Schnittstelle [41] wird die Funktionalität in einer MATLAB® GUI hergestellt.&lt;br /&gt;
# Die Softwareentwicklung startet mit der labortechnischen Espressomaschine und wird auf die weiteren Projekte schrittweise transportiert. Dazu ist die Maschinenelektronik gleich zu halten und es sind die gleichen Anschluss-Pins zu verwenden.&lt;br /&gt;
# Nach Abschluss der Testphase der MATLAB® Bedienung wird schrittweise die Betriebssoftware in MicroPython auf der MCU implementiert, so dass am Ende dieses Prozessschrittes die MATLAB®-Verbindung lediglich für weiterführende Datenerfassung und grafische Darstellungen verwendet wird, welche nicht mit dem Display der Maschine möglich ist oder dort nicht dargestellt werden soll.&lt;br /&gt;
# Ob eine Portierung des MicroPython-Codes nach Microcontroller C durchgeführt wird, ist derzeit nicht entschieden.&lt;br /&gt;
&lt;br /&gt;
Es wurden mehrere, die Softwareentwicklung vorbereitende FMEAs durchgeführt.  Die hierdurch entstandenen Dokumentation befinden sich in der Dokumentationsauflistung. Im weiteren wurde eine Projektarbeit zur Konzeptfindung für die Badienung durchgeführt. Auch die hierdurch entstandenen, teilweise auf die FMEA aufbauenden Dokumente befinden sich in der Dokumentationsliste.&lt;br /&gt;
&lt;br /&gt;
= Projektdokumentationen und Beschreibungen =&lt;br /&gt;
* [[:Datei:20210228 Konzept Systemelektronik.pdf|Konzeptbeschreibung Systemelektronik]]&lt;br /&gt;
* [[:Datei:20210605 Workflow Embedded Systems.pdf|Workflow Embedded Systems]]&lt;br /&gt;
* [[:Datei:20200521 Bericht1 NerminArbi.pdf|Funktionsanalyse Boilerbefüllung, Tassenwärmung, Milchschäumen]]&lt;br /&gt;
* [[:Datei:20200518 Bericht halbauto Entkalkung Egger Alexander.pdf|Funktionsanalyse zur halbautomatischen Entkalkung]]&lt;br /&gt;
* [[:Datei:20200518 V0 4 Bericht Funktionsanalyse Rückspulung-Spulung Sladoje.pdf|Funktionsanalyse Rückspülung und Spülung]]&lt;br /&gt;
* [[:Datei:20200521 Bericht Espresso-Teewasserbezug Urbin.pdf|Funktionsanalyse Espresso und Teewasserbezug]]&lt;br /&gt;
* [[:Datei:20200522 Bericht Funktionsanalyse Energieeffizienz Egger Alexander.pdf|Funktionsanalyse Energieeffizienz]]&lt;br /&gt;
* [[:Datei:20200521 V2 Bericht Funktionsanalyse Bedienung Sladoje.pdf|Funktionsanalyse Bedienung]]&lt;br /&gt;
* [[:Datei:20200525 Bericht Abbildung aller Maschinen Urbin V2.pdf|Funktionsanalyse Abbildung aller Maschinen]]&lt;br /&gt;
* [[:Datei:20200609 Bericht Fehleranalyse Entschichtung.pdf|Fehleranalyse Entschichtung]]&lt;br /&gt;
* [[:Datei:20200610 Fehleranalyse Dampf Brühgruppe Sladoje.pdf|Fehleranalyse Brühgruppe und Dampfbezug]]&lt;br /&gt;
* [[:Datei:20200613 Bericht Fehleranalyse Mischer;Magnetventile V2.pdf|Fehleranalyse Mischer und Magnetventile]]&lt;br /&gt;
* [[:Datei:20200611 Bericht3 NerminArbi.pdf|Fehleranalyse Boiler]]&lt;br /&gt;
* [[:Datei:20200705 Dichtheitsprüfung.pdf|Dichtheitsprüfung]]&lt;br /&gt;
* [[:Datei:20200704 Massnahmen Urbin.pdf|Prüfkonzepte Magnetventile und Mischer]]&lt;br /&gt;
* [[:Datei:20200701 Maßnahmenanalyse NerminArbi.pdf|Maßnahmen Boiler]]&lt;br /&gt;
* [[:Datei:20200628 Maßnahmen Entschichtung zweiter Stand.pdf|Maßnahmen Entschichtung]]&lt;br /&gt;
* [[:Datei:20200627 Maßnahmenkonzept Brühguppe Dampf Sladoje.pdf|Maßnahmen Brühgruppe und Dampf]]&lt;br /&gt;
* [[:Datei:20200707_FMEA.xlsx|FMEA Tabelle]]&lt;br /&gt;
* [[:Datei:20201207_Bedienkonzept.pptx|PPT Simulation des Bedienkonzeptes]]&lt;br /&gt;
* [[:Datei:20210207_Bedienkonzept_Funktionsliste.xlsx|Bedienkonzept Funktionsliste]]&lt;br /&gt;
* [[:Datei:20210219_Bedienkonzept_Projektdokumentation.pdf|Bedienkonzept Projektdokumentation]]&lt;br /&gt;
* [[:Datei:HMProjektBedienoberflaecheEspresso.zip|MATLAB® GUI]]&lt;br /&gt;
* [[Entwicklung Systemsoftware SoSe2022]]&lt;br /&gt;
* [[Entwicklung Systemsoftware SoSe2023]]&lt;br /&gt;
* [[Mikrocontroller Programmierung in MicroPython WiSe 2025/26]]&lt;br /&gt;
* [[Mikrocontroller Programmierung in MicroPython SoSe 2026]]&lt;br /&gt;
&lt;br /&gt;
= [http://www.institut-fuer-kaffeetechnologie.de/Intern/index.php?title=Programmcode Programmcode] =&lt;br /&gt;
Aktueller Programmcode und Änderungsdokumentation ab Jan 2023&lt;br /&gt;
&lt;br /&gt;
= [http://www.institut-fuer-kaffeetechnologie.de/Intern/index.php?title=Software-Bugs Software-Bugs] =&lt;br /&gt;
&lt;br /&gt;
= ToDo-Liste(n) Systemsoftware =&lt;br /&gt;
&lt;br /&gt;
== Prioritätsangabe ==&lt;br /&gt;
Prio 1 - Abarbeitung zeitnah erforderlich&amp;lt;br&amp;gt;&lt;br /&gt;
Prio 2 - Abarbeitung erforderlich&amp;lt;br&amp;gt;&lt;br /&gt;
Prio 3 - Abarbeitung kann warten&amp;lt;br&amp;gt;&lt;br /&gt;
Prio 99 - Abarbeitung erfordert Vorarbeiten&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
10 - Erfasst&amp;lt;br&amp;gt;&lt;br /&gt;
30 - in Bearbeitung&amp;lt;br&amp;gt;&lt;br /&gt;
50 - Lösung definiert&amp;lt;br&amp;gt;&lt;br /&gt;
70 - in Umsetzung&amp;lt;br&amp;gt;&lt;br /&gt;
90 - Umsetzung abgeschlossen&amp;lt;br&amp;gt;&lt;br /&gt;
99 - Abbruch per Beschluss (Dokumentation dazu erforderlich)&amp;lt;br&amp;gt;&lt;br /&gt;
100 - Maßnahme bestätigt&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ToDo-Liste: MCUs - Verlagerung der Regelkreise aus der MATLAB®-GUI auf die Mikrocontroller der Steuerungselektronik =&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Arbeitspaket !! Wer !! Prio !! Status !! WV&lt;br /&gt;
|-&lt;br /&gt;
| [[Startprozedur]] || Konstantin Rupprecht / Loic Aboufiras|| 1 || 30 ||08.05.2026&lt;br /&gt;
|-&lt;br /&gt;
| [[Kommunikation per UART|UART Kommunikation zwischen den einzelnen MCUs]] || Konstantin Rupprecht|| 1 || 70 ||08.05.2026&lt;br /&gt;
|-&lt;br /&gt;
| [[Evaluation STM32H7 |Umstellung auf STM32H7]] || Konstantin Rupprecht|| 1 || 10 ||08.05.2026&lt;br /&gt;
|-&lt;br /&gt;
| [[Mehrkernnutzung und/oder Multitasking]] || Konstantin Rupprecht||  1 || 100 ||08.05.2026&lt;br /&gt;
|-&lt;br /&gt;
| [[Integration eines Displays mit Touchfunktion]] || Loic Aboufiras|| 1 || 30 ||08.05.2026&lt;br /&gt;
|-&lt;br /&gt;
| [[Integration eines Vertikalhebels]] || Loic Aboufiras|| 1 || 30 ||12.06.2026&lt;br /&gt;
|-&lt;br /&gt;
| [[Maschinensimulator]] || Francis Booth|| 1 || 70 ||08.05.2026&lt;br /&gt;
|-&lt;br /&gt;
| [[Visualisierung und Interaktion über die MATLAB®-GUI|Wartungs-App]] || Felix Kerner|| 1 || 10 ||08.05.2026&lt;br /&gt;
|-&lt;br /&gt;
| [[Verlagerung des Füllstandsreglers auf das Basisboard|Verlagerung des Füllstandsreglers]] || Tillmann Haas|| 1 || 30 ||08.05.2026&lt;br /&gt;
|- &lt;br /&gt;
| [[Verlagerung der Boilerdruckregelung auf die Messplatine|Verlagerung der Boilerdruckregelung]] || Tillmann Haas|| 1 || 30 ||15.05.2026&lt;br /&gt;
|-&lt;br /&gt;
| [[Verlagerung des Mischtemperaturreglers auf das Basisboard|Verlagerung des Mischtemperaturreglers]] || Tillmann Haas|| 1 || 10 ||10.06.2026&lt;br /&gt;
|-&lt;br /&gt;
| [[Verlagerung des Durchflussreglers auf das Basisboard|Verlagerung des Durchflussreglers]] || Tillmann Haas|| 1 || 10 ||08.07.2026&lt;br /&gt;
|-&lt;br /&gt;
| [[Erstellung der Funktionssteuerung - Preinfusion auf dem Basisboard]] || || 2 || 10 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Erstellung der Funktionssteuerung - Kaffeebezug auf dem Basisboard]] || || 2 || 10 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Erstellung der Funktionssteuerung - Wasserbezug auf dem Basisboard]] || || 2 || 10 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Erstellung der Funktionssteuerung - Dampfbezug auf dem Basisboard]] || || 2 || 10 || 	 &lt;br /&gt;
|-&lt;br /&gt;
| [[Erstellung der Funktionssteuerung - Spülen auf dem Basisboard]] || || 2 || 10 ||  &lt;br /&gt;
|-&lt;br /&gt;
| [[Erstellung der Funktionssteuerung - Grundreinigung auf dem Basisboard]] || || 2 || 10 ||  &lt;br /&gt;
|-&lt;br /&gt;
| [[Visualisierung und Interaktion über eine WEB-Anwendung]] || || 1 || 10 ||  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= ToDo-Liste: Allgemeines =&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Arbeitspaket !! Wer !! Prio !! Status !! WV&lt;br /&gt;
|-&lt;br /&gt;
| [[Sicherheitsfunktionen]] || || 99 || 50 ||&lt;br /&gt;
|-&lt;br /&gt;
| [[ Übersicht über verbaute Aktorik und Sensorik in Tabellenform]] || || 2 || 90 ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Stromsparmodus]] || || 99 || 10 ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= ToDo-Liste: Mechatronische Inbetriebnahme Glasboilermaschine =&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Arbeitspaket !! Wer !! Prio !! Status !! WV&lt;br /&gt;
|-&lt;br /&gt;
| [[Fehlerbehebungen]] || || 1 || 10 ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Startprozedure]] || ||  1 || 10 ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Tankfüllstandsregelung]] || || 1 || 10 ||&lt;br /&gt;
|- &lt;br /&gt;
| [[Boilerfüllstandsregelung]] || || 1 || 10 ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Boilerdruckregelung]] || || 1 || 10 ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Mischwassertemperaturregelung]] || || 1 || 10 ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Durchflussregelung]] || || 1 || 10 ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Kaffeebezug]] || || 2 || 10 ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Teebezug]] || || 1 || 10 ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Temperatureinstellung über Vertikalhebel]] || || 1 || 10 ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Simulation Handhebelmaschine]] || || 1 || 10 ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Flush/Rückspülreinigung]] || || 1 || 10 ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= ToDo-Liste: MCUs - Hardwarenahe Software =&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Arbeitspaket !! Wer !! Prio !! Status !! WV&lt;br /&gt;
|-&lt;br /&gt;
| [[Grundfunktionen der MCU und mehrere MCUs]] || || || 100 ||&lt;br /&gt;
|-	&lt;br /&gt;
| Basisboard: [[Schalten Magnetventile (Labor) STM32-Basisboard]] MATLAB®GUI || || || 100&lt;br /&gt;
|-&lt;br /&gt;
| Basisboard: [[Pumpenansteuerung Basisboard Multi-MCU]] || || || 100 ||&lt;br /&gt;
|- 	 &lt;br /&gt;
| Basisboard: [[Schrittmotorsteuerungen Basisboard Multi-MCU]] || || || 100 ||&lt;br /&gt;
|-&lt;br /&gt;
| Basisboard: [[Tastenerkennung Basisboard Multi-MCU]] || || 1 || 10 || &lt;br /&gt;
|- 	 &lt;br /&gt;
| Basisboard: [[Füllstandserkennung Basisboard Multi-MCU]] || || || 100 ||&lt;br /&gt;
|- 	 &lt;br /&gt;
| Basisboard: [[Durchflussmessung Basisnoard Multi-MCU]] || || || 100 ||&lt;br /&gt;
|- 	  	 	  	 &lt;br /&gt;
| SSR-Platine: [[Schalten Magnetventile SSR-Platine Multi-MCU]] || || || 100 ||&lt;br /&gt;
|- 	 &lt;br /&gt;
| SSR-Platine: [[Schrittmotorsteuerungen SSR-Platine Multi-MCU]] || || || 100 ||&lt;br /&gt;
|-&lt;br /&gt;
| Messplatine: [[Messdatenerfassung Multi-MCU]] || || || 100 ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= ToDo-Liste der Grundlagenprogrammierung - MATLAB®-Funktionen und GUI =&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Arbeitspaket !! Wer !! Prio !! Status !! WV&lt;br /&gt;
|-&lt;br /&gt;
| [[MATLAB®-GUI Start der App]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[MATLAB®-GUI Initialisierung Multi-MCU]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[MATLAB®-GUI Schalten Magnetventile]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[MATLAB®-GUI Datensicherung]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Messwerte erfassen Multi-MCU]] || || || ||&lt;br /&gt;
|- &lt;br /&gt;
| [[Pumpenansteuerung Multi-MCU]] || || || ||&lt;br /&gt;
|- &lt;br /&gt;
| [[Füllstandsregler Multi-MCU]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Regler Boilerdruck Multi-MCU]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Mischregler Multi-MCU]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Durchflussregler Multi-MCU]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Misch-Durchfluss Kaskadenregelung Multi-MCU]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Preinfusion Multi-MCU]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[einfacher Kaffeebezug Multi-MCU]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Kaffeebezug Multi-MCU]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Wasserbezug Multi-MCU]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Dampfbezug Multi-MCU]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Spülvorgänge Multi-MCU]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Grundreinigung Multi-MCU]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Tastenbedienung Multi-MCU]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Display Multi-MCU]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Glasboiler Abtropfwanne]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Schrittmotorensteuerung Bypass]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Schrittmotorensteuerung Mischer]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Schrittmotorensteuerung Brühgruppendrossel]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Adaption an Multi-MCU - Neuprogrammierung MATLAB® GUI]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Dokumentation der Software mit STM32-Elektronik. &amp;lt;br&amp;gt;Ein Betrieb dieser wird nicht mehr weiter verfolgt. || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Messwerte erfassen (Labor)]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Pumpenansteuerung (Labor)]] || ||  || || &lt;br /&gt;
|-&lt;br /&gt;
| [[Füllstandsregler (Labor)]] || ||  || || &lt;br /&gt;
|-&lt;br /&gt;
| [[Regler Boilerdruck (Labor)]] || ||  || ||  &lt;br /&gt;
|-&lt;br /&gt;
| [[Mischregler (Labor)]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Durchflussregler (Labor)]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[einfacher Kaffeebezug (Labor)]] || ||  || ||  &lt;br /&gt;
|-&lt;br /&gt;
| [[Kaffeebezug (Labor)]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Wasserbezug (Labor)]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Dampfbezug]] || ||  || ||  &lt;br /&gt;
|-&lt;br /&gt;
| [[Spülvorgänge (Labor)]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Tastenbedienung (Labor)]] || || || ||  &lt;br /&gt;
|-&lt;br /&gt;
| [[Anpassungen für Schrittmotorensteuerung]] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= ToDo-Liste: APP =&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Arbeitspaket !! Wer !! Prio !! Status !! WV&lt;br /&gt;
|-&lt;br /&gt;
| [[APP - Konzept]] || || 2 || 10 || &lt;br /&gt;
|- 	 &lt;br /&gt;
| [[Messwerte erfassen APP]] || || 99 || 10 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Preset / Profilverwaltung]] || || 99 || 10 || &lt;br /&gt;
|-&lt;br /&gt;
| || || || ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Konstantin Rupprecht</name></author>
	</entry>
	<entry>
		<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Mehrkernnutzung_und/oder_Multitasking&amp;diff=4900</id>
		<title>Mehrkernnutzung und/oder Multitasking</title>
		<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Mehrkernnutzung_und/oder_Multitasking&amp;diff=4900"/>
		<updated>2026-04-27T21:37:20Z</updated>

		<summary type="html">&lt;p&gt;Konstantin Rupprecht: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Konstantin Rupprecht, 27.04.2026&amp;lt;br&amp;gt; Multitasking mittels Uasyncio=&lt;br /&gt;
Uasyncio ist eine Implementierung von der asyncio library von C-Python für Microcontroller. &lt;br /&gt;
Es wird eingesetzt, um ein ähnliches Ergebnis wie bei Multithreading zu erzielen. Dabei &lt;br /&gt;
werden die Aufgaben jedoch nicht parallel ausgeführt, sondern laufen kooperativ ab. Das &lt;br /&gt;
erzielt die uasyncio über den sogenannte Event-Loop. Er läuft kontinuierlich in einer Schleife &lt;br /&gt;
und verwaltet sämtliche Aufgaben. Dabei stellt eine Aufgabe eine gekapselte Coroutine dar, &lt;br /&gt;
also eine Funktion, die ihren eigenen Ausführungszustand speichern kann. Im Gegensatz zu &lt;br /&gt;
normalen Funktionen wird ein Task nicht einmal vollständig durchlaufen, sondern kann an &lt;br /&gt;
bestimmten Punkten unterbrochen und später fortgesetzt werden. Dadurch ist es möglich, &lt;br /&gt;
Aufgaben effizient zu pausieren und später exakt an derselben Stelle weiterzuführen. Der &lt;br /&gt;
Wechsel zwischen verschiedenen Aufgaben erfolgt ausschließlich an definierten &lt;br /&gt;
Übergabepunkten. Das bedeutet, dass eine Aufgabe aktiv die Kontrolle an den Event-Loop &lt;br /&gt;
zurückgeben muss, damit eine andere Aufgabe ausgeführt werden kann. Dieser kontrollierte &lt;br /&gt;
Eingriff ermöglich uasyncio die Aufgaben effektiv zu strukturieren und den Programmablauf &lt;br /&gt;
damit zu optimieren, ohne das komplexe Synchronisationsmechanismen benötigt werden, &lt;br /&gt;
wie es bei Multithreading nötig ist. Gleichzeitig ergibt sich daraus jedoch die Anforderung, &lt;br /&gt;
dass Aufgaben so gestaltet sein müssen, dass sie regelmäßig die Kontrolle abgeben &lt;br /&gt;
können. Andernfalls kann ein einzelner Task den gesamten Ablauf blockieren.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit uasyncio verwendet werden kann, muss es zunächst im Programm importiert und der &lt;br /&gt;
Event-Loop gestartet werden. Dies geschieht durch das Definieren von asynchronen &lt;br /&gt;
Funktionen mit „async def“, die anschließend als Tasks eingeplant werden. Der &lt;br /&gt;
Einstiegspunkt ist meist eine Haupt-Coroutine, die alle weiteren Aufgaben startet. Der Event&lt;br /&gt;
Loop wird dann mit „uasyncio.run()“ initialisiert und ausgeführt, wobei diese Funktion die &lt;br /&gt;
Kontrolle übernimmt und alle registrierten Tasks verwaltet. Innerhalb der Coroutinen werden &lt;br /&gt;
an geeigneten Stellen „await“-Ausdrücke verwendet, um die Kontrolle gezielt an den Event&lt;br /&gt;
Loop zurückzugeben. Ohne einen solchen Start des Event-Loops und das explizite &lt;br /&gt;
Einplanen von Tasks würde uasyncio nicht aktiv werden, da es vollständig ereignisgesteuert &lt;br /&gt;
arbeitet.&lt;br /&gt;
&lt;br /&gt;
= Peter Vogginger, 15.01.2025&amp;lt;br&amp;gt;Versuch der Mehrkernnutzung =&lt;br /&gt;
Die Mehrkernnutzung wird versuchshalber mit einem zusätzlichen Schrittmotor und der bereits programmierten UART-Kommunikation getestet. Die Schrittmotorsteuerung wird auf den Hauptkern (Core 0) und die Kommunikation auf den 2. Kern (Core 1) verlagert. Diese Aufteilung wird gewählt, da es vermutlich zu einem besserem Motorlauf führt. Dies wird im weiteren Verlauf auch versucht, zu bestätigen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Versuchsaufbau besteht aus zwei RP2040-Platinen, dem Schrittmotor, sowie dessen Ansteuerung/ Stromversorgung (realisiert auf einer zusätzlichen Platine). Die RP2040-Platinen sind miteinander verkabelt (siehe hierzu Seite [[Kommunikation_per_UART]]). Die Platine mit der Schrittmotorsteuerung ist als Relais in dem Kommunikationsring ausgeführt. Die zweite RP2040 beinhaltet den Code für den ersten Token (Messwert-Platine) und startet die Kommunikation.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Versuchsdurchführung sieht vor, dass der Schrittmotor permanent drehen soll und bei Beginn der Kommunikation die Drehbewegung des Motors beobachtet wird. Der Programmcode des Motors wurde in Teilen aus einer früheren Projektarbeit entnommen, sowie aus dem &lt;br /&gt;
offiziellen MicroPython-Wiki (siehe: https://docs.micropython.org/en/latest/library/rp2.html). Die Kommunikation über UART wird als reines Relais ausgeführt, das heißt der eingehende Token wird kontrolliert und weitergesendet. Dies wurde bereits erfolgreich angewendet. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Läuft sowohl die Kommunikation, ersichtlich über das Ausgabefenster in THONNY, und dreht der Motor ebenso, ist die Mehrkernnutzung erfolgreich getestet. Im weiteren Verlauf wird das Drehverhalten der Motorwelle mit und ohne parallele Kommunikation beurteilt und verfeinert.&lt;br /&gt;
Im ersten Versuch zeigt sich, dass sich die Welle des Motors ohne Mehrkernnutzung nahezu ruckfrei dreht, allerdings in paralleler Ausführung sich ein starkes Rucken einstellt. Um dies zu reduzieren, wird die Motor-Ansteuerung auf die spezialisierte Hardware-Einheit PIO des RP2040 verlegt. Sie ermöglicht es, Ein- und Ausgabesignale sehr präzise und unabhängig von der CPU zu steuern, indem eigene kleine Programme (ASM-Code) direkt in der PIO-Hardware ausgeführt werden. Diese ist fest auf dem RP2040 integriert, es wird nur der Programmcode der Schrittmotorsteuerung angepasst.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daraufhin zeigt sich, dass sich mit dieser Art der Motorsteuerung ein weniger ruckeliges Verhalten während der parallel ablaufenden Kommunikation einstellt. Allerdings ist die Drehung der Motorwelle, ohne die Verwendung der Mehrkernnutzung, weniger flüssig. Dies ist hier allerdings nicht entscheidend.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ebenso zeigt sich, dass die Verlagerung der Kommunikation auf den Nebenkern nicht zu dem oben erwähnten besseren Motorlauf führt. Ganz im Gegenteil, eine Verlagerung der Motorsteuerung auf den Nebenkern (Core1), wobei zugleich die Kommunikation auf dem Hauptkern (Core0) ausgeführt wird, erweist sich als deutlich besser im Hinblick auf den sofortigen Kommunikationsaufbau, und die Motorbewegung ist weniger ruckelig.&amp;lt;br&amp;gt;&lt;br /&gt;
Link zum bisherigen Programmcode: [[Datei:20260108_Test_Dualcorenutzung.zip]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im weiteren Verlauf wird die Positionierung der Schrittmotorwelle mittels Datenwert im Token &lt;br /&gt;
übermittelt und dessen korrekte Anfahrung getestet. Der Schrittmotor hat hierzu die Position 0.  &lt;br /&gt;
&lt;br /&gt;
Die Ausarbeitung des Programmcodes ist aufwendig und wird im Folgenden anhand der drei &lt;br /&gt;
Ablaufdiagramme (Abb..) vorgestellt.  &lt;br /&gt;
[[Datei:20260210 Ablaufdiagramm Schrittmotorsteuerung ssr Teil1.png|thumb|300px|gerahmt|zentriert|alternativtext=Ablaufdiagramm der Funktion schrittmotor_steuerung, (c) Peter Vogginger|Ablaufdiagramm der Funktion schrittmotor_steuerung, (c) Peter Vogginger]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:20260210 Ablaufdiagramm Schrittmotorsteuerung ssr Teil2.png|thumb|899px|gerahmt|zentriert|alternativtext=Ablaufdiagramme der Funktionn set_target_steps und motor_run, (c) Peter Vogginger|Ablaufdiagramme der Funktionen set_target_steps und motor_run, (c) Peter Vogginger]]&lt;br /&gt;
&lt;br /&gt;
=== schrittmotor_steuerung === &lt;br /&gt;
Die Funktion schrittmotor_steuerung ist Teil der main.py der SSR-Platine und wird bei jedem Aufruf der lokalen Funktion on_receive_ssr ausgeführt. Somit wird sie bei jedem Eintreffen eines neuen Tokens über die UART-Schnittstelle aufgerufen (http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Kommunikation_per_UART). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Aufgaben dieser Funktion sind:   &amp;lt;br&amp;gt;&lt;br /&gt;
:• das Auslesen der Zielposition der Motorwelle aus dem Token,  &amp;lt;br&amp;gt;&lt;br /&gt;
:• das Schreiben der aktuellen Istposition des Motors in den Token,  &amp;lt;br&amp;gt;&lt;br /&gt;
:• sowie der Aufruf der Funktion set_target_steps, sofern erforderlich. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Schrittanzahl wird in Halbschritten angegeben und aus dem Token mithilfe eines Getters &lt;br /&gt;
ausgelesen. Hierbei ist zu beachten, dass es sich um einen Integerwert mit Vorzeichen handelt &lt;br /&gt;
und somit der Setter entsprechend set_signed_bytes() heißt  (http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Kommunikation_per_UART Setter und Getter für Bits und Bytes). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Istposition ist die absolute Schrittanzahl vom Zustand 0 (beim Dosierventil ist das der &lt;br /&gt;
Zustand „geschlossen“). Die Istposition wird bei jedem Tokenempfang mithilfe eines Setters in &lt;br /&gt;
den Token geschrieben und somit fortlaufend aktualisiert. Der Wertebereich des Dosierventils &lt;br /&gt;
ist 0…550. Somit wird der Setter set_bytes() verwendet, da keine negativen Werte vorkommen &lt;br /&gt;
können. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zusätzlich überprüft die Funktion, ob der Motor im Moment dreht. Hierzu dient das Flag &lt;br /&gt;
motor_dreht. Dieses Flag wird in den Funktionen set_target_steps und motor_run gesetzt bzw. &lt;br /&gt;
zurückgesetzt. Dreht der Motor aktuell, wird kein neuer Positionierbefehl ausgelöst, um den &lt;br /&gt;
Bewegungsablauf nicht zu stören. Nur wenn der Motor steht und die Zielposition von der &lt;br /&gt;
Istposition abweicht, wird die Funktion set_target_steps erneut aufgerufen. &lt;br /&gt;
&lt;br /&gt;
=== set_target_steps ===&lt;br /&gt;
Die Funktion set_target_steps ist Teil der Klasse MOTORSTEUERUNG in der Datei &lt;br /&gt;
motorsteuerung.py auf der SSR-Platine. Die Aufgaben dieser Funktion sind: &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
:• der Vergleich der vorgegebenen Schrittanzahl mit der Minimal- und der Maximalposition &amp;lt;br&amp;gt;&lt;br /&gt;
:• die Festlegung der Drehrichtung des Motors, sowie &amp;lt;br&amp;gt;&lt;br /&gt;
:• das Setzen und Zurücksetzen des Status-Flags motor_dreht. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im ersten Schritt wird überprüft, ob die vorgegebene Schrittanzahl target_steps kleiner als die &lt;br /&gt;
minimal mögliche Position (0) ist. Falls dies zutrifft, wird die Schrittanzahl auf die &lt;br /&gt;
Minimalposition 0 gesetzt. Anschließend wird geprüft, ob die Schrittanzahl größer als die &lt;br /&gt;
Maximalposition des Dosierventils (550) ist. Ist dies der Fall, wird die Schrittanzahl auf die &lt;br /&gt;
Maximalposition gesetzt. Die Zielposition ist nun die Schrittanzahl. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Darauffolgend wird die Zielposition mit der aktuellen Istposition verglichen, um die Drehrichtung &lt;br /&gt;
des Motors festzulegen. Ist die Zielposition größer als die Istposition, wird der Motor in positiver &lt;br /&gt;
Drehrichtung (= rechtsdrehend bzw. schließend) betreiben, ist sie kleiner, erfolgt die Bewegung &lt;br /&gt;
in negativer Drehrichtung (= linksdrehend bzw. öffnend &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Abschließend wird das Flag motor_dreht gesetzt. Dieses dient dazu, dass während einer &lt;br /&gt;
laufenden Motorbewegung die Funktion set_target_steps nicht erneut aufgerufen wird. Dadurch &lt;br /&gt;
wird eine Störung der Motorbewegung und des Ablaufs verhindert. Die Funktion &lt;br /&gt;
motor_steuerung wird weiterhin bei jedem Eintreffen eines neuen Tokens aufgerufen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== motor_run === &lt;br /&gt;
Die Funktion motor_run ist Teil der Klasse MOTORSTEUERUNG in der Datei motorsteuerung.py &lt;br /&gt;
auf der SSR-Platine.  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Aufgabe dieser Funktion ist die kontinuierliche Ansteuerung des Schrittmotors auf dem &lt;br /&gt;
zweiten Prozessorkern (Core 1).&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Die Funktion wird mit dem Aufruf _thread.start_new_thread(motor.motor_run,()) gestartet und &lt;br /&gt;
läuft über eine Endlosschleife während der gesamten Einschaltdauer der Platine. Diese Struktur &lt;br /&gt;
ist notwendig, um die Mehrkernnutzung des RP2040 zu realisieren und eine gleichzeitige &lt;br /&gt;
Motorbewegung sicherzustellen. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zu Beginn wird der Index idx der Schrittsequenz auf null gesetzt. Dieser dient als Laufvariable zur &lt;br /&gt;
Auswahl des aktuellen Spulenzustandes. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend wird innerhalb einer Schleife permanent überprüft, ob das Flag motor_dreht &lt;br /&gt;
gesetzt ist. Dieses Flag wird in der Funktion set_target_steps aktiviert, sobald eine neue &lt;br /&gt;
Zielposition angefordert wurde.  &lt;br /&gt;
Ist das Flag gesetzt, wird ein vorgegebenes Schrittmuster ausgegeben. Das Schrittmuster ist &lt;br /&gt;
motorabhängig und besteht bei dem verwendeten bipolaren zweiphasigen Schrittmotor aus &lt;br /&gt;
acht verschiedenen Spulenzuständen:  STEP_SEQ = (0b0100, 0b0101, 0b0001, 0b1001, 0b1000, &lt;br /&gt;
0b1010, 0b0010, 0b0110). Die Gesamtheit der Einträge ist die Schrittfrequenz. Hierbei handelt &lt;br /&gt;
es sich um die Halbschritt-Sequenz, welche für das Dosierventil vorgesehen ist. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe des aktuellen Spulenzustands erfolgt über den Aufruf self.sm.put(self.STEP_SEQ[idx]). Jeder Eintrag der Schrittfrequenz entspricht genau einem &lt;br /&gt;
Halbschritt. &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Der Schrittindex wird anschließend durch den Aufruf idx = (idx + self.drehrichtung) % 8 &lt;br /&gt;
aktualisiert. Abhängig von der Drehrichtung ergibt sich dabei folgender Zusammenhang: &lt;br /&gt;
 &lt;br /&gt;
:• Ist die Drehrichtung +1, lautet die Abfolge 0 → 1 → 2 → 3 → 4 → 5 → 6 → 7 → 0 → … &amp;lt;br&amp;gt;&lt;br /&gt;
:• ist die Drehrichtung -1, lautet die Abfolge 0 → 7 → 6 → 5 → 4 → 3 → 2 → 1 → 0 → … &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Durch den Modulo-Operator wird sichergestellt, dass der Index stets im gültigen Bereich der &lt;br /&gt;
Schrittfrequenz bleibt. Bei jedem Schleifendurchlauf wird die Variable idx genau einmal &lt;br /&gt;
verändert, somit entspricht jeder Schleifendurchlauf exakt einem Motor-Halbschritt.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Die aktuelle Position wird anschließend mit self.aktuelle_position += self.drehrichtung &lt;br /&gt;
aktualisiert.  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ob die Zielposition erreicht wurde, wird durch den Vergleich self.aktuelle_position == &lt;br /&gt;
self.ziel_position überprüft. Ist dies der Fall, wird das Flag motor_dreht auf False gesetzt, &lt;br /&gt;
wodurch die Motorbewegung beendet wird. Die Schleife läuft weiterhin. &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Der Zugriff auf das Flag motor_dreht wird in der Funktion motor_run benötigt, da es die &lt;br /&gt;
Motorverstellung aus der Bewegung heraus stoppt. In der Funktion set_target_steps wird &lt;br /&gt;
dagegen entschieden, ob der Motor überhaupt drehen soll und das Flag wird entspechend &lt;br /&gt;
gesetzt.&lt;br /&gt;
&lt;br /&gt;
= Armin Rohnen, 11.04.2024 =&lt;br /&gt;
Grundsätzlich verfügt der ARM-Prozessor der Raspberry Pi Pcio MCU RP2040 über zwei Kerne, die im Gegensatz zu anderen MCUs gleichwertig sein sollen. Die Quellenlage hierzu lässt jedoch eine eindeutige Beurteilung dieser Annahme nicht zu. Eine ggf. verbessernde Quellenlage könnte hierzu neue Ansätze liefern. Für die Verlagerung der Regelkreise auf die MCUs ist zuvor eine Festlegung zu treffen in welcher Form eine Mehrkernnutzung und/oder ein Multitasking implementiert wird.&lt;br /&gt;
&lt;br /&gt;
Damit ist ein Framework für die Systemsteuerung zu definieren. Hierzu sind in der Linksammlung [119] unter Scheduling, Threading und Frameworks einige Libraries aufgelistet. &lt;br /&gt;
&lt;br /&gt;
MicroPython stellt hierzu die Module uasyncio und _thread zur Verfügung. Letzteres verwendet für die Programmausführung den zweiten Prozessorkern. _thread wird allerdings als sehr experimentell bezeichnet. Allerdings lassen sich keine Negativinformation recherchieren.&lt;/div&gt;</summary>
		<author><name>Konstantin Rupprecht</name></author>
	</entry>
	<entry>
		<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Mehrkernnutzung_und/oder_Multitasking&amp;diff=4899</id>
		<title>Mehrkernnutzung und/oder Multitasking</title>
		<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Mehrkernnutzung_und/oder_Multitasking&amp;diff=4899"/>
		<updated>2026-04-27T21:36:39Z</updated>

		<summary type="html">&lt;p&gt;Konstantin Rupprecht: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Konstantin Rupprecht, 27.04.2026&amp;lt;br&amp;gt;Multitasking mittels Uasyncio=&lt;br /&gt;
Uasyncio ist eine Implementierung von der asyncio library von C-Python für Microcontroller. &lt;br /&gt;
Es wird eingesetzt, um ein ähnliches Ergebnis wie bei Multithreading zu erzielen. Dabei &lt;br /&gt;
werden die Aufgaben jedoch nicht parallel ausgeführt, sondern laufen kooperativ ab. Das &lt;br /&gt;
erzielt die uasyncio über den sogenannte Event-Loop. Er läuft kontinuierlich in einer Schleife &lt;br /&gt;
und verwaltet sämtliche Aufgaben. Dabei stellt eine Aufgabe eine gekapselte Coroutine dar, &lt;br /&gt;
also eine Funktion, die ihren eigenen Ausführungszustand speichern kann. Im Gegensatz zu &lt;br /&gt;
normalen Funktionen wird ein Task nicht einmal vollständig durchlaufen, sondern kann an &lt;br /&gt;
bestimmten Punkten unterbrochen und später fortgesetzt werden. Dadurch ist es möglich, &lt;br /&gt;
Aufgaben effizient zu pausieren und später exakt an derselben Stelle weiterzuführen. Der &lt;br /&gt;
Wechsel zwischen verschiedenen Aufgaben erfolgt ausschließlich an definierten &lt;br /&gt;
Übergabepunkten. Das bedeutet, dass eine Aufgabe aktiv die Kontrolle an den Event-Loop &lt;br /&gt;
zurückgeben muss, damit eine andere Aufgabe ausgeführt werden kann. Dieser kontrollierte &lt;br /&gt;
Eingriff ermöglich uasyncio die Aufgaben effektiv zu strukturieren und den Programmablauf &lt;br /&gt;
damit zu optimieren, ohne das komplexe Synchronisationsmechanismen benötigt werden, &lt;br /&gt;
wie es bei Multithreading nötig ist. Gleichzeitig ergibt sich daraus jedoch die Anforderung, &lt;br /&gt;
dass Aufgaben so gestaltet sein müssen, dass sie regelmäßig die Kontrolle abgeben &lt;br /&gt;
können. Andernfalls kann ein einzelner Task den gesamten Ablauf blockieren.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit uasyncio verwendet werden kann, muss es zunächst im Programm importiert und der &lt;br /&gt;
Event-Loop gestartet werden. Dies geschieht durch das Definieren von asynchronen &lt;br /&gt;
Funktionen mit „async def“, die anschließend als Tasks eingeplant werden. Der &lt;br /&gt;
Einstiegspunkt ist meist eine Haupt-Coroutine, die alle weiteren Aufgaben startet. Der Event&lt;br /&gt;
Loop wird dann mit „uasyncio.run()“ initialisiert und ausgeführt, wobei diese Funktion die &lt;br /&gt;
Kontrolle übernimmt und alle registrierten Tasks verwaltet. Innerhalb der Coroutinen werden &lt;br /&gt;
an geeigneten Stellen „await“-Ausdrücke verwendet, um die Kontrolle gezielt an den Event&lt;br /&gt;
Loop zurückzugeben. Ohne einen solchen Start des Event-Loops und das explizite &lt;br /&gt;
Einplanen von Tasks würde uasyncio nicht aktiv werden, da es vollständig ereignisgesteuert &lt;br /&gt;
arbeitet.&lt;br /&gt;
&lt;br /&gt;
= Peter Vogginger, 15.01.2025&amp;lt;br&amp;gt;Versuch der Mehrkernnutzung =&lt;br /&gt;
Die Mehrkernnutzung wird versuchshalber mit einem zusätzlichen Schrittmotor und der bereits programmierten UART-Kommunikation getestet. Die Schrittmotorsteuerung wird auf den Hauptkern (Core 0) und die Kommunikation auf den 2. Kern (Core 1) verlagert. Diese Aufteilung wird gewählt, da es vermutlich zu einem besserem Motorlauf führt. Dies wird im weiteren Verlauf auch versucht, zu bestätigen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Versuchsaufbau besteht aus zwei RP2040-Platinen, dem Schrittmotor, sowie dessen Ansteuerung/ Stromversorgung (realisiert auf einer zusätzlichen Platine). Die RP2040-Platinen sind miteinander verkabelt (siehe hierzu Seite [[Kommunikation_per_UART]]). Die Platine mit der Schrittmotorsteuerung ist als Relais in dem Kommunikationsring ausgeführt. Die zweite RP2040 beinhaltet den Code für den ersten Token (Messwert-Platine) und startet die Kommunikation.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Versuchsdurchführung sieht vor, dass der Schrittmotor permanent drehen soll und bei Beginn der Kommunikation die Drehbewegung des Motors beobachtet wird. Der Programmcode des Motors wurde in Teilen aus einer früheren Projektarbeit entnommen, sowie aus dem &lt;br /&gt;
offiziellen MicroPython-Wiki (siehe: https://docs.micropython.org/en/latest/library/rp2.html). Die Kommunikation über UART wird als reines Relais ausgeführt, das heißt der eingehende Token wird kontrolliert und weitergesendet. Dies wurde bereits erfolgreich angewendet. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Läuft sowohl die Kommunikation, ersichtlich über das Ausgabefenster in THONNY, und dreht der Motor ebenso, ist die Mehrkernnutzung erfolgreich getestet. Im weiteren Verlauf wird das Drehverhalten der Motorwelle mit und ohne parallele Kommunikation beurteilt und verfeinert.&lt;br /&gt;
Im ersten Versuch zeigt sich, dass sich die Welle des Motors ohne Mehrkernnutzung nahezu ruckfrei dreht, allerdings in paralleler Ausführung sich ein starkes Rucken einstellt. Um dies zu reduzieren, wird die Motor-Ansteuerung auf die spezialisierte Hardware-Einheit PIO des RP2040 verlegt. Sie ermöglicht es, Ein- und Ausgabesignale sehr präzise und unabhängig von der CPU zu steuern, indem eigene kleine Programme (ASM-Code) direkt in der PIO-Hardware ausgeführt werden. Diese ist fest auf dem RP2040 integriert, es wird nur der Programmcode der Schrittmotorsteuerung angepasst.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daraufhin zeigt sich, dass sich mit dieser Art der Motorsteuerung ein weniger ruckeliges Verhalten während der parallel ablaufenden Kommunikation einstellt. Allerdings ist die Drehung der Motorwelle, ohne die Verwendung der Mehrkernnutzung, weniger flüssig. Dies ist hier allerdings nicht entscheidend.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ebenso zeigt sich, dass die Verlagerung der Kommunikation auf den Nebenkern nicht zu dem oben erwähnten besseren Motorlauf führt. Ganz im Gegenteil, eine Verlagerung der Motorsteuerung auf den Nebenkern (Core1), wobei zugleich die Kommunikation auf dem Hauptkern (Core0) ausgeführt wird, erweist sich als deutlich besser im Hinblick auf den sofortigen Kommunikationsaufbau, und die Motorbewegung ist weniger ruckelig.&amp;lt;br&amp;gt;&lt;br /&gt;
Link zum bisherigen Programmcode: [[Datei:20260108_Test_Dualcorenutzung.zip]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im weiteren Verlauf wird die Positionierung der Schrittmotorwelle mittels Datenwert im Token &lt;br /&gt;
übermittelt und dessen korrekte Anfahrung getestet. Der Schrittmotor hat hierzu die Position 0.  &lt;br /&gt;
&lt;br /&gt;
Die Ausarbeitung des Programmcodes ist aufwendig und wird im Folgenden anhand der drei &lt;br /&gt;
Ablaufdiagramme (Abb..) vorgestellt.  &lt;br /&gt;
[[Datei:20260210 Ablaufdiagramm Schrittmotorsteuerung ssr Teil1.png|thumb|300px|gerahmt|zentriert|alternativtext=Ablaufdiagramm der Funktion schrittmotor_steuerung, (c) Peter Vogginger|Ablaufdiagramm der Funktion schrittmotor_steuerung, (c) Peter Vogginger]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:20260210 Ablaufdiagramm Schrittmotorsteuerung ssr Teil2.png|thumb|899px|gerahmt|zentriert|alternativtext=Ablaufdiagramme der Funktionn set_target_steps und motor_run, (c) Peter Vogginger|Ablaufdiagramme der Funktionen set_target_steps und motor_run, (c) Peter Vogginger]]&lt;br /&gt;
&lt;br /&gt;
=== schrittmotor_steuerung === &lt;br /&gt;
Die Funktion schrittmotor_steuerung ist Teil der main.py der SSR-Platine und wird bei jedem Aufruf der lokalen Funktion on_receive_ssr ausgeführt. Somit wird sie bei jedem Eintreffen eines neuen Tokens über die UART-Schnittstelle aufgerufen (http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Kommunikation_per_UART). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Aufgaben dieser Funktion sind:   &amp;lt;br&amp;gt;&lt;br /&gt;
:• das Auslesen der Zielposition der Motorwelle aus dem Token,  &amp;lt;br&amp;gt;&lt;br /&gt;
:• das Schreiben der aktuellen Istposition des Motors in den Token,  &amp;lt;br&amp;gt;&lt;br /&gt;
:• sowie der Aufruf der Funktion set_target_steps, sofern erforderlich. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Schrittanzahl wird in Halbschritten angegeben und aus dem Token mithilfe eines Getters &lt;br /&gt;
ausgelesen. Hierbei ist zu beachten, dass es sich um einen Integerwert mit Vorzeichen handelt &lt;br /&gt;
und somit der Setter entsprechend set_signed_bytes() heißt  (http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Kommunikation_per_UART Setter und Getter für Bits und Bytes). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Istposition ist die absolute Schrittanzahl vom Zustand 0 (beim Dosierventil ist das der &lt;br /&gt;
Zustand „geschlossen“). Die Istposition wird bei jedem Tokenempfang mithilfe eines Setters in &lt;br /&gt;
den Token geschrieben und somit fortlaufend aktualisiert. Der Wertebereich des Dosierventils &lt;br /&gt;
ist 0…550. Somit wird der Setter set_bytes() verwendet, da keine negativen Werte vorkommen &lt;br /&gt;
können. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zusätzlich überprüft die Funktion, ob der Motor im Moment dreht. Hierzu dient das Flag &lt;br /&gt;
motor_dreht. Dieses Flag wird in den Funktionen set_target_steps und motor_run gesetzt bzw. &lt;br /&gt;
zurückgesetzt. Dreht der Motor aktuell, wird kein neuer Positionierbefehl ausgelöst, um den &lt;br /&gt;
Bewegungsablauf nicht zu stören. Nur wenn der Motor steht und die Zielposition von der &lt;br /&gt;
Istposition abweicht, wird die Funktion set_target_steps erneut aufgerufen. &lt;br /&gt;
&lt;br /&gt;
=== set_target_steps ===&lt;br /&gt;
Die Funktion set_target_steps ist Teil der Klasse MOTORSTEUERUNG in der Datei &lt;br /&gt;
motorsteuerung.py auf der SSR-Platine. Die Aufgaben dieser Funktion sind: &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
:• der Vergleich der vorgegebenen Schrittanzahl mit der Minimal- und der Maximalposition &amp;lt;br&amp;gt;&lt;br /&gt;
:• die Festlegung der Drehrichtung des Motors, sowie &amp;lt;br&amp;gt;&lt;br /&gt;
:• das Setzen und Zurücksetzen des Status-Flags motor_dreht. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im ersten Schritt wird überprüft, ob die vorgegebene Schrittanzahl target_steps kleiner als die &lt;br /&gt;
minimal mögliche Position (0) ist. Falls dies zutrifft, wird die Schrittanzahl auf die &lt;br /&gt;
Minimalposition 0 gesetzt. Anschließend wird geprüft, ob die Schrittanzahl größer als die &lt;br /&gt;
Maximalposition des Dosierventils (550) ist. Ist dies der Fall, wird die Schrittanzahl auf die &lt;br /&gt;
Maximalposition gesetzt. Die Zielposition ist nun die Schrittanzahl. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Darauffolgend wird die Zielposition mit der aktuellen Istposition verglichen, um die Drehrichtung &lt;br /&gt;
des Motors festzulegen. Ist die Zielposition größer als die Istposition, wird der Motor in positiver &lt;br /&gt;
Drehrichtung (= rechtsdrehend bzw. schließend) betreiben, ist sie kleiner, erfolgt die Bewegung &lt;br /&gt;
in negativer Drehrichtung (= linksdrehend bzw. öffnend &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Abschließend wird das Flag motor_dreht gesetzt. Dieses dient dazu, dass während einer &lt;br /&gt;
laufenden Motorbewegung die Funktion set_target_steps nicht erneut aufgerufen wird. Dadurch &lt;br /&gt;
wird eine Störung der Motorbewegung und des Ablaufs verhindert. Die Funktion &lt;br /&gt;
motor_steuerung wird weiterhin bei jedem Eintreffen eines neuen Tokens aufgerufen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== motor_run === &lt;br /&gt;
Die Funktion motor_run ist Teil der Klasse MOTORSTEUERUNG in der Datei motorsteuerung.py &lt;br /&gt;
auf der SSR-Platine.  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Aufgabe dieser Funktion ist die kontinuierliche Ansteuerung des Schrittmotors auf dem &lt;br /&gt;
zweiten Prozessorkern (Core 1).&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Die Funktion wird mit dem Aufruf _thread.start_new_thread(motor.motor_run,()) gestartet und &lt;br /&gt;
läuft über eine Endlosschleife während der gesamten Einschaltdauer der Platine. Diese Struktur &lt;br /&gt;
ist notwendig, um die Mehrkernnutzung des RP2040 zu realisieren und eine gleichzeitige &lt;br /&gt;
Motorbewegung sicherzustellen. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zu Beginn wird der Index idx der Schrittsequenz auf null gesetzt. Dieser dient als Laufvariable zur &lt;br /&gt;
Auswahl des aktuellen Spulenzustandes. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend wird innerhalb einer Schleife permanent überprüft, ob das Flag motor_dreht &lt;br /&gt;
gesetzt ist. Dieses Flag wird in der Funktion set_target_steps aktiviert, sobald eine neue &lt;br /&gt;
Zielposition angefordert wurde.  &lt;br /&gt;
Ist das Flag gesetzt, wird ein vorgegebenes Schrittmuster ausgegeben. Das Schrittmuster ist &lt;br /&gt;
motorabhängig und besteht bei dem verwendeten bipolaren zweiphasigen Schrittmotor aus &lt;br /&gt;
acht verschiedenen Spulenzuständen:  STEP_SEQ = (0b0100, 0b0101, 0b0001, 0b1001, 0b1000, &lt;br /&gt;
0b1010, 0b0010, 0b0110). Die Gesamtheit der Einträge ist die Schrittfrequenz. Hierbei handelt &lt;br /&gt;
es sich um die Halbschritt-Sequenz, welche für das Dosierventil vorgesehen ist. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe des aktuellen Spulenzustands erfolgt über den Aufruf self.sm.put(self.STEP_SEQ[idx]). Jeder Eintrag der Schrittfrequenz entspricht genau einem &lt;br /&gt;
Halbschritt. &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Der Schrittindex wird anschließend durch den Aufruf idx = (idx + self.drehrichtung) % 8 &lt;br /&gt;
aktualisiert. Abhängig von der Drehrichtung ergibt sich dabei folgender Zusammenhang: &lt;br /&gt;
 &lt;br /&gt;
:• Ist die Drehrichtung +1, lautet die Abfolge 0 → 1 → 2 → 3 → 4 → 5 → 6 → 7 → 0 → … &amp;lt;br&amp;gt;&lt;br /&gt;
:• ist die Drehrichtung -1, lautet die Abfolge 0 → 7 → 6 → 5 → 4 → 3 → 2 → 1 → 0 → … &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Durch den Modulo-Operator wird sichergestellt, dass der Index stets im gültigen Bereich der &lt;br /&gt;
Schrittfrequenz bleibt. Bei jedem Schleifendurchlauf wird die Variable idx genau einmal &lt;br /&gt;
verändert, somit entspricht jeder Schleifendurchlauf exakt einem Motor-Halbschritt.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Die aktuelle Position wird anschließend mit self.aktuelle_position += self.drehrichtung &lt;br /&gt;
aktualisiert.  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ob die Zielposition erreicht wurde, wird durch den Vergleich self.aktuelle_position == &lt;br /&gt;
self.ziel_position überprüft. Ist dies der Fall, wird das Flag motor_dreht auf False gesetzt, &lt;br /&gt;
wodurch die Motorbewegung beendet wird. Die Schleife läuft weiterhin. &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Der Zugriff auf das Flag motor_dreht wird in der Funktion motor_run benötigt, da es die &lt;br /&gt;
Motorverstellung aus der Bewegung heraus stoppt. In der Funktion set_target_steps wird &lt;br /&gt;
dagegen entschieden, ob der Motor überhaupt drehen soll und das Flag wird entspechend &lt;br /&gt;
gesetzt.&lt;br /&gt;
&lt;br /&gt;
= Armin Rohnen, 11.04.2024 =&lt;br /&gt;
Grundsätzlich verfügt der ARM-Prozessor der Raspberry Pi Pcio MCU RP2040 über zwei Kerne, die im Gegensatz zu anderen MCUs gleichwertig sein sollen. Die Quellenlage hierzu lässt jedoch eine eindeutige Beurteilung dieser Annahme nicht zu. Eine ggf. verbessernde Quellenlage könnte hierzu neue Ansätze liefern. Für die Verlagerung der Regelkreise auf die MCUs ist zuvor eine Festlegung zu treffen in welcher Form eine Mehrkernnutzung und/oder ein Multitasking implementiert wird.&lt;br /&gt;
&lt;br /&gt;
Damit ist ein Framework für die Systemsteuerung zu definieren. Hierzu sind in der Linksammlung [119] unter Scheduling, Threading und Frameworks einige Libraries aufgelistet. &lt;br /&gt;
&lt;br /&gt;
MicroPython stellt hierzu die Module uasyncio und _thread zur Verfügung. Letzteres verwendet für die Programmausführung den zweiten Prozessorkern. _thread wird allerdings als sehr experimentell bezeichnet. Allerdings lassen sich keine Negativinformation recherchieren.&lt;/div&gt;</summary>
		<author><name>Konstantin Rupprecht</name></author>
	</entry>
	<entry>
		<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Mikrocontroller_Programmierung_in_MicroPython_SoSe_2026&amp;diff=4881</id>
		<title>Mikrocontroller Programmierung in MicroPython SoSe 2026</title>
		<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Mikrocontroller_Programmierung_in_MicroPython_SoSe_2026&amp;diff=4881"/>
		<updated>2026-04-20T19:18:07Z</updated>

		<summary type="html">&lt;p&gt;Konstantin Rupprecht: /* Leistungsvereinbarung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;htmltag tagname=&amp;quot;img&amp;quot; src=&amp;quot;https://vg07.met.vgwort.de/na/3e58d840a91b42ac97ee493cdd085245&amp;quot; width=&amp;quot;1&amp;quot; height=&amp;quot;1&amp;quot; alt=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/htmltag&amp;gt;&lt;br /&gt;
[[Datei:Breites Logoband.png|mini|zentriert|hochkant=2.5]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Mikrocontroller Programmierung in MicroPython Sommersemester 2026 =&lt;br /&gt;
Für die Projekte zur labortechnischen Espressomaschine (und weiteren Derivaten) ist die Mikrokontroller-Programmierung einer Steuerungselektronik erforderlich.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Das Projekt wurde bereits durch eine Projektgruppe bearbeitet und hat einen Projektstand, der jedoch noch nicht die gesamte erforderliche Steuerungsfunktionalität umfasst.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= Aufgabenanalyse =&lt;br /&gt;
==UART-Kommunikation==&lt;br /&gt;
Es soll eine Stern-Topologie implementiert werden, welche die UART-Kommunikation&lt;br /&gt;
zu einem separaten Display-Controller, dem Maschinensimulator und der Wartungs-&lt;br /&gt;
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&lt;br /&gt;
neuen Token festzulegen.&lt;br /&gt;
&lt;br /&gt;
==Mehrkernnutzung und/oder Multitasking==&lt;br /&gt;
&lt;br /&gt;
Es gibt bestimmte Vorgänge, welche regelmäßig zur Unterbrechung des Pro-&lt;br /&gt;
grammablaufs führen. Es gilt, diese Vorgänge zu identifizieren und umzuleiten,&lt;br /&gt;
damit diese den Programmablauf nicht mehr unterbrechen. Die Möglichkeit&lt;br /&gt;
der Mehrkernnutzung fällt dabei aus, da der STM32H753ZI nur über einen&lt;br /&gt;
M7-Kern verfügt. Dank der Hardware-Unterstützung DMA sowie der Nutzung&lt;br /&gt;
der uasyncio-Library besteht die Möglichkeit, die Vorgänge umzuleiten. Somit&lt;br /&gt;
können die Unterbrechungen des Programmablaufs reduziert werden.&lt;br /&gt;
&lt;br /&gt;
== Maschinensimulator ==&lt;br /&gt;
&lt;br /&gt;
== Füllstandsregler ==&lt;br /&gt;
Die Füllstandsregelung erkennt den Füllstand über eine Kurzschlussdetektion. Liegt kein &lt;br /&gt;
Kurzschluss vor, wird dies als zu niedriger Füllstand interpretiert und der Boilerdruckregler &lt;br /&gt;
zur Vermeidung von Trockenheizen gesperrt. Beim Erreichen des Sollfüllstands erfolgt eine &lt;br /&gt;
gezielte Überfüllung bei reduzierter Pumpenspannung, um ein periodisches Ein- und &lt;br /&gt;
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 &lt;br /&gt;
wurde, liegt der Fokus hier auf der Validierung am Maschinensimulator sowie der &lt;br /&gt;
Abstimmung mit den Schnittstellenpartnern.&lt;br /&gt;
&lt;br /&gt;
== Boilerdruckregelung ==&lt;br /&gt;
Ziel ist es, die bisher in der MATLAB®-GUI realisierte Boilerdruckregelung aus [114], die auf &lt;br /&gt;
einem PD-Regler basiert, vollständig zu übertragen, sodass die Regelung unabhängig von der &lt;br /&gt;
externen PC-Umgebung arbeitet.&lt;br /&gt;
&lt;br /&gt;
== Mischtemperaturregler ==&lt;br /&gt;
Der Mischtemperaturregler nach [114] dient zur Regelung der Kaffee- und &lt;br /&gt;
Teewassertemperatur und wird als PID-Regler für das Mischventil umgesetzt. Die Stellgröße &lt;br /&gt;
ist dabei die Verstellung des Mischventils. Der Temperatursollwert wird aus dem jeweils &lt;br /&gt;
aktiven Rezept vorgegeben. Da die Regelung vom aktuellen Durchfluss abhängt, wird eine &lt;br /&gt;
Kaskadenstruktur verwendet. In dieser Struktur arbeitet der Durchflussregler als innerer, &lt;br /&gt;
schneller Regelkreis, während der Mischtemperaturregler den äußeren Regelkreis bildet und &lt;br /&gt;
die Ergebnisse des inneren Kreises berücksichtigt. Daraus ergibt sich ein besonderes &lt;br /&gt;
Augenmerk auf das Testen des Zusammenspiels der beiden Regler anhand des &lt;br /&gt;
Maschinensimulators, um das Ziel – die Implementierung dieser Kaskadenregelung auf dem &lt;br /&gt;
STM32 – zu erreichen.&lt;br /&gt;
&lt;br /&gt;
== Durchflussregler ==&lt;br /&gt;
Ein Durchflussregler, der in MATLAB® gemäß [114] vorliegt, wird als PID-Regler in &lt;br /&gt;
MicroPython umgesetzt. Durch die Anpassung der Pumpendrehzahl über einen &lt;br /&gt;
Spannungssollwert von 0–5 V kann ein konstanter oder ein profildefinierter Volumenstrom &lt;br /&gt;
entsprechend der Sollwertvorgabe realisiert werden. Als innerer Regelkreis liefert er &lt;br /&gt;
kontinuierlich Durchflusswerte an den Mischtemperaturregler. Daraus ergibt sich der Fokus &lt;br /&gt;
auf der Implementierung und dem Test des Reglers sowie auf der Validierung seines &lt;br /&gt;
Zusammenspiels mit dem übergeordneten Mischtemperaturregler im Maschinensimulator, &lt;br /&gt;
um die Integration auf dem STM32 sicherzustellen.&lt;br /&gt;
&lt;br /&gt;
== Startprozedur ==&lt;br /&gt;
&lt;br /&gt;
== Display ==&lt;br /&gt;
&lt;br /&gt;
== STM32 ==&lt;br /&gt;
Als Haupt-MCU soll ein STM32H753ZI-Controller verwendet werden. Es soll sichergestellt &lt;br /&gt;
werden, dass die vorinstallierten Steckerleisten CN7 bis CN10 ausreichend Pins für &lt;br /&gt;
Definition der benötigten UART-, ADC-, DAC- und GPIO-Pins aufweisen.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Boilerdruck-, die Wassertemperatur-, die Durchfluss- und die Füllstandsregelung des &lt;br /&gt;
Boilers müssen implementiert werden. Es soll ebenfalls eine UART-Kommunikation für ein &lt;br /&gt;
Touch-Display, einen Maschinensimulator sowie eine Möglichkeit zum Anschließen einer &lt;br /&gt;
Wartungs-App programmiert werden. Um einen geordneten Ablauf der einzelnen &lt;br /&gt;
Komponenten bei Inbetriebnahme der Maschine zu gewährleisten, soll eine Startprozedur &lt;br /&gt;
programmiert werden&lt;br /&gt;
&lt;br /&gt;
== Wartungs - APP ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= Leistungsvereinbarung =&lt;br /&gt;
&lt;br /&gt;
== Wartungs - APP ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==UART-Kommunikation==&lt;br /&gt;
Um die spezifischen Daten von dem STM32H7 auf das Display zu übertragen, sowie &lt;br /&gt;
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 &lt;br /&gt;
Maschinensimulator und der Wartungs-App implementiert. Dabei soll ein Gateway den &lt;br /&gt;
Zugriff für die Wartungs-App integriert werden.&lt;br /&gt;
&lt;br /&gt;
==Multitasking==&lt;br /&gt;
Die direkte Hardware-Unterstützung über DMA gestaltet sich schwierig in MicroPython, da &lt;br /&gt;
sie von MicroPython automatisch verwendet wird (bspw. bei Buffern) und nur über &lt;br /&gt;
Registeraccess direkt ausgeführt werden kann. Daher wird die Nutzung der uasyncio-Library&lt;br /&gt;
bevorzugt, welche die Vorgänge, die den Programmablauf verzögern, umleitet. Dadurch soll &lt;br /&gt;
das Programm reibungsfreier ablaufen.&lt;br /&gt;
&lt;br /&gt;
==STM32H7==&lt;br /&gt;
Die bestehenden Regelkreise, Füllstandsregelung (Boiler und Tanks), Boilerdruckregelung, &lt;br /&gt;
Mischtemperaturregelung und Durchflussregelung werden von den drei Microcontroller auf &lt;br /&gt;
den STM32H7 verlagert. Ebenfalls erfolgt die Migration der Messwerterfassung aller &lt;br /&gt;
verbauten Sensoren auf die neue STM32H7-Plattform.&amp;lt;br&amp;gt;&lt;br /&gt;
Zusätzlich wird eine UART-Kommunikation implementiert, die die Anbindung des Displays, &lt;br /&gt;
eines Maschinensimulators sowie für den Zugriff durch eine externe Wartungs-App über &lt;br /&gt;
einem Gateway ermöglicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Um einen geordneten Ablauf der einzelnen Komponenten bei Inbetriebnahme der Maschine &lt;br /&gt;
zu gewährleisten, wird eine Startprozedur programmiert.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Hardware-Umsetzung wird von LfbA Armin Rohnen übernommen.&lt;br /&gt;
&lt;br /&gt;
= Besprechungsprotokolle und weitere Unterlagen =&lt;br /&gt;
* [[:Datei:20260214 Abschlusspraesentation.pdf|Übergabepräsentation Vorgänger]]&lt;br /&gt;
* [[:Datei:20260326 Projektstart.pdf|Aktueller Projektstand]]&lt;br /&gt;
* [[Projektstart 26.03.2026]]&lt;br /&gt;
* [[Projektrücksprache 02.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 09.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 17.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 24.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 08.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 15.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 22.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 29.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 05.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 12.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 19.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 03.07.2026]]&lt;br /&gt;
* [[Projektrücksprache 10.07.2026]]&lt;br /&gt;
* [[Projektrücksprache 24.07.2026]]&lt;br /&gt;
* [[Abschlusspräsentation 31.07.2026]]&lt;/div&gt;</summary>
		<author><name>Konstantin Rupprecht</name></author>
	</entry>
	<entry>
		<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Mikrocontroller_Programmierung_in_MicroPython_SoSe_2026&amp;diff=4880</id>
		<title>Mikrocontroller Programmierung in MicroPython SoSe 2026</title>
		<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Mikrocontroller_Programmierung_in_MicroPython_SoSe_2026&amp;diff=4880"/>
		<updated>2026-04-20T19:15:23Z</updated>

		<summary type="html">&lt;p&gt;Konstantin Rupprecht: /* Leistungsvereinbarung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;htmltag tagname=&amp;quot;img&amp;quot; src=&amp;quot;https://vg07.met.vgwort.de/na/3e58d840a91b42ac97ee493cdd085245&amp;quot; width=&amp;quot;1&amp;quot; height=&amp;quot;1&amp;quot; alt=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/htmltag&amp;gt;&lt;br /&gt;
[[Datei:Breites Logoband.png|mini|zentriert|hochkant=2.5]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Mikrocontroller Programmierung in MicroPython Sommersemester 2026 =&lt;br /&gt;
Für die Projekte zur labortechnischen Espressomaschine (und weiteren Derivaten) ist die Mikrokontroller-Programmierung einer Steuerungselektronik erforderlich.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Das Projekt wurde bereits durch eine Projektgruppe bearbeitet und hat einen Projektstand, der jedoch noch nicht die gesamte erforderliche Steuerungsfunktionalität umfasst.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= Aufgabenanalyse =&lt;br /&gt;
==UART-Kommunikation==&lt;br /&gt;
Es soll eine Stern-Topologie implementiert werden, welche die UART-Kommunikation&lt;br /&gt;
zu einem separaten Display-Controller, dem Maschinensimulator und der Wartungs-&lt;br /&gt;
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&lt;br /&gt;
neuen Token festzulegen.&lt;br /&gt;
&lt;br /&gt;
==Mehrkernnutzung und/oder Multitasking==&lt;br /&gt;
&lt;br /&gt;
Es gibt bestimmte Vorgänge, welche regelmäßig zur Unterbrechung des Pro-&lt;br /&gt;
grammablaufs führen. Es gilt, diese Vorgänge zu identifizieren und umzuleiten,&lt;br /&gt;
damit diese den Programmablauf nicht mehr unterbrechen. Die Möglichkeit&lt;br /&gt;
der Mehrkernnutzung fällt dabei aus, da der STM32H753ZI nur über einen&lt;br /&gt;
M7-Kern verfügt. Dank der Hardware-Unterstützung DMA sowie der Nutzung&lt;br /&gt;
der uasyncio-Library besteht die Möglichkeit, die Vorgänge umzuleiten. Somit&lt;br /&gt;
können die Unterbrechungen des Programmablaufs reduziert werden.&lt;br /&gt;
&lt;br /&gt;
== Maschinensimulator ==&lt;br /&gt;
&lt;br /&gt;
== Füllstandsregler ==&lt;br /&gt;
Die Füllstandsregelung erkennt den Füllstand über eine Kurzschlussdetektion. Liegt kein &lt;br /&gt;
Kurzschluss vor, wird dies als zu niedriger Füllstand interpretiert und der Boilerdruckregler &lt;br /&gt;
zur Vermeidung von Trockenheizen gesperrt. Beim Erreichen des Sollfüllstands erfolgt eine &lt;br /&gt;
gezielte Überfüllung bei reduzierter Pumpenspannung, um ein periodisches Ein- und &lt;br /&gt;
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 &lt;br /&gt;
wurde, liegt der Fokus hier auf der Validierung am Maschinensimulator sowie der &lt;br /&gt;
Abstimmung mit den Schnittstellenpartnern.&lt;br /&gt;
&lt;br /&gt;
== Boilerdruckregelung ==&lt;br /&gt;
Ziel ist es, die bisher in der MATLAB®-GUI realisierte Boilerdruckregelung aus [114], die auf &lt;br /&gt;
einem PD-Regler basiert, vollständig zu übertragen, sodass die Regelung unabhängig von der &lt;br /&gt;
externen PC-Umgebung arbeitet.&lt;br /&gt;
&lt;br /&gt;
== Mischtemperaturregler ==&lt;br /&gt;
Der Mischtemperaturregler nach [114] dient zur Regelung der Kaffee- und &lt;br /&gt;
Teewassertemperatur und wird als PID-Regler für das Mischventil umgesetzt. Die Stellgröße &lt;br /&gt;
ist dabei die Verstellung des Mischventils. Der Temperatursollwert wird aus dem jeweils &lt;br /&gt;
aktiven Rezept vorgegeben. Da die Regelung vom aktuellen Durchfluss abhängt, wird eine &lt;br /&gt;
Kaskadenstruktur verwendet. In dieser Struktur arbeitet der Durchflussregler als innerer, &lt;br /&gt;
schneller Regelkreis, während der Mischtemperaturregler den äußeren Regelkreis bildet und &lt;br /&gt;
die Ergebnisse des inneren Kreises berücksichtigt. Daraus ergibt sich ein besonderes &lt;br /&gt;
Augenmerk auf das Testen des Zusammenspiels der beiden Regler anhand des &lt;br /&gt;
Maschinensimulators, um das Ziel – die Implementierung dieser Kaskadenregelung auf dem &lt;br /&gt;
STM32 – zu erreichen.&lt;br /&gt;
&lt;br /&gt;
== Durchflussregler ==&lt;br /&gt;
Ein Durchflussregler, der in MATLAB® gemäß [114] vorliegt, wird als PID-Regler in &lt;br /&gt;
MicroPython umgesetzt. Durch die Anpassung der Pumpendrehzahl über einen &lt;br /&gt;
Spannungssollwert von 0–5 V kann ein konstanter oder ein profildefinierter Volumenstrom &lt;br /&gt;
entsprechend der Sollwertvorgabe realisiert werden. Als innerer Regelkreis liefert er &lt;br /&gt;
kontinuierlich Durchflusswerte an den Mischtemperaturregler. Daraus ergibt sich der Fokus &lt;br /&gt;
auf der Implementierung und dem Test des Reglers sowie auf der Validierung seines &lt;br /&gt;
Zusammenspiels mit dem übergeordneten Mischtemperaturregler im Maschinensimulator, &lt;br /&gt;
um die Integration auf dem STM32 sicherzustellen.&lt;br /&gt;
&lt;br /&gt;
== Startprozedur ==&lt;br /&gt;
&lt;br /&gt;
== Display ==&lt;br /&gt;
&lt;br /&gt;
== STM32 ==&lt;br /&gt;
Als Haupt-MCU soll ein STM32H753ZI-Controller verwendet werden. Es soll sichergestellt &lt;br /&gt;
werden, dass die vorinstallierten Steckerleisten CN7 bis CN10 ausreichend Pins für &lt;br /&gt;
Definition der benötigten UART-, ADC-, DAC- und GPIO-Pins aufweisen.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Boilerdruck-, die Wassertemperatur-, die Durchfluss- und die Füllstandsregelung des &lt;br /&gt;
Boilers müssen implementiert werden. Es soll ebenfalls eine UART-Kommunikation für ein &lt;br /&gt;
Touch-Display, einen Maschinensimulator sowie eine Möglichkeit zum Anschließen einer &lt;br /&gt;
Wartungs-App programmiert werden. Um einen geordneten Ablauf der einzelnen &lt;br /&gt;
Komponenten bei Inbetriebnahme der Maschine zu gewährleisten, soll eine Startprozedur &lt;br /&gt;
programmiert werden&lt;br /&gt;
&lt;br /&gt;
== Wartungs - APP ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= Leistungsvereinbarung =&lt;br /&gt;
&lt;br /&gt;
== Wartungs - APP ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==STM32H7==&lt;br /&gt;
Die bestehenden Regelkreise, Füllstandsregelung (Boiler und Tanks), Boilerdruckregelung, &lt;br /&gt;
Mischtemperaturregelung und Durchflussregelung werden von den drei Microcontroller auf &lt;br /&gt;
den STM32H7 verlagert. Ebenfalls erfolgt die Migration der Messwerterfassung aller &lt;br /&gt;
verbauten Sensoren auf die neue STM32H7-Plattform.&amp;lt;br&amp;gt;&lt;br /&gt;
Zusätzlich wird eine UART-Kommunikation implementiert, die die Anbindung des Displays, &lt;br /&gt;
eines Maschinensimulators sowie für den Zugriff durch eine externe Wartungs-App über &lt;br /&gt;
einem Gateway ermöglicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Um einen geordneten Ablauf der einzelnen Komponenten bei Inbetriebnahme der Maschine &lt;br /&gt;
zu gewährleisten, wird eine Startprozedur programmiert.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Hardware-Umsetzung wird von LfbA Armin Rohnen übernommen.&lt;br /&gt;
&lt;br /&gt;
= Besprechungsprotokolle und weitere Unterlagen =&lt;br /&gt;
* [[:Datei:20260214 Abschlusspraesentation.pdf|Übergabepräsentation Vorgänger]]&lt;br /&gt;
* [[:Datei:20260326 Projektstart.pdf|Aktueller Projektstand]]&lt;br /&gt;
* [[Projektstart 26.03.2026]]&lt;br /&gt;
* [[Projektrücksprache 02.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 09.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 17.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 24.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 08.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 15.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 22.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 29.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 05.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 12.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 19.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 03.07.2026]]&lt;br /&gt;
* [[Projektrücksprache 10.07.2026]]&lt;br /&gt;
* [[Projektrücksprache 24.07.2026]]&lt;br /&gt;
* [[Abschlusspräsentation 31.07.2026]]&lt;/div&gt;</summary>
		<author><name>Konstantin Rupprecht</name></author>
	</entry>
	<entry>
		<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Mikrocontroller_Programmierung_in_MicroPython_SoSe_2026&amp;diff=4879</id>
		<title>Mikrocontroller Programmierung in MicroPython SoSe 2026</title>
		<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Mikrocontroller_Programmierung_in_MicroPython_SoSe_2026&amp;diff=4879"/>
		<updated>2026-04-20T19:12:51Z</updated>

		<summary type="html">&lt;p&gt;Konstantin Rupprecht: /* STM32 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;htmltag tagname=&amp;quot;img&amp;quot; src=&amp;quot;https://vg07.met.vgwort.de/na/3e58d840a91b42ac97ee493cdd085245&amp;quot; width=&amp;quot;1&amp;quot; height=&amp;quot;1&amp;quot; alt=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/htmltag&amp;gt;&lt;br /&gt;
[[Datei:Breites Logoband.png|mini|zentriert|hochkant=2.5]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Mikrocontroller Programmierung in MicroPython Sommersemester 2026 =&lt;br /&gt;
Für die Projekte zur labortechnischen Espressomaschine (und weiteren Derivaten) ist die Mikrokontroller-Programmierung einer Steuerungselektronik erforderlich.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Das Projekt wurde bereits durch eine Projektgruppe bearbeitet und hat einen Projektstand, der jedoch noch nicht die gesamte erforderliche Steuerungsfunktionalität umfasst.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= Aufgabenanalyse =&lt;br /&gt;
==UART-Kommunikation==&lt;br /&gt;
Es soll eine Stern-Topologie implementiert werden, welche die UART-Kommunikation&lt;br /&gt;
zu einem separaten Display-Controller, dem Maschinensimulator und der Wartungs-&lt;br /&gt;
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&lt;br /&gt;
neuen Token festzulegen.&lt;br /&gt;
&lt;br /&gt;
==Mehrkernnutzung und/oder Multitasking==&lt;br /&gt;
&lt;br /&gt;
Es gibt bestimmte Vorgänge, welche regelmäßig zur Unterbrechung des Pro-&lt;br /&gt;
grammablaufs führen. Es gilt, diese Vorgänge zu identifizieren und umzuleiten,&lt;br /&gt;
damit diese den Programmablauf nicht mehr unterbrechen. Die Möglichkeit&lt;br /&gt;
der Mehrkernnutzung fällt dabei aus, da der STM32H753ZI nur über einen&lt;br /&gt;
M7-Kern verfügt. Dank der Hardware-Unterstützung DMA sowie der Nutzung&lt;br /&gt;
der uasyncio-Library besteht die Möglichkeit, die Vorgänge umzuleiten. Somit&lt;br /&gt;
können die Unterbrechungen des Programmablaufs reduziert werden.&lt;br /&gt;
&lt;br /&gt;
== Maschinensimulator ==&lt;br /&gt;
&lt;br /&gt;
== Füllstandsregler ==&lt;br /&gt;
Die Füllstandsregelung erkennt den Füllstand über eine Kurzschlussdetektion. Liegt kein &lt;br /&gt;
Kurzschluss vor, wird dies als zu niedriger Füllstand interpretiert und der Boilerdruckregler &lt;br /&gt;
zur Vermeidung von Trockenheizen gesperrt. Beim Erreichen des Sollfüllstands erfolgt eine &lt;br /&gt;
gezielte Überfüllung bei reduzierter Pumpenspannung, um ein periodisches Ein- und &lt;br /&gt;
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 &lt;br /&gt;
wurde, liegt der Fokus hier auf der Validierung am Maschinensimulator sowie der &lt;br /&gt;
Abstimmung mit den Schnittstellenpartnern.&lt;br /&gt;
&lt;br /&gt;
== Boilerdruckregelung ==&lt;br /&gt;
Ziel ist es, die bisher in der MATLAB®-GUI realisierte Boilerdruckregelung aus [114], die auf &lt;br /&gt;
einem PD-Regler basiert, vollständig zu übertragen, sodass die Regelung unabhängig von der &lt;br /&gt;
externen PC-Umgebung arbeitet.&lt;br /&gt;
&lt;br /&gt;
== Mischtemperaturregler ==&lt;br /&gt;
Der Mischtemperaturregler nach [114] dient zur Regelung der Kaffee- und &lt;br /&gt;
Teewassertemperatur und wird als PID-Regler für das Mischventil umgesetzt. Die Stellgröße &lt;br /&gt;
ist dabei die Verstellung des Mischventils. Der Temperatursollwert wird aus dem jeweils &lt;br /&gt;
aktiven Rezept vorgegeben. Da die Regelung vom aktuellen Durchfluss abhängt, wird eine &lt;br /&gt;
Kaskadenstruktur verwendet. In dieser Struktur arbeitet der Durchflussregler als innerer, &lt;br /&gt;
schneller Regelkreis, während der Mischtemperaturregler den äußeren Regelkreis bildet und &lt;br /&gt;
die Ergebnisse des inneren Kreises berücksichtigt. Daraus ergibt sich ein besonderes &lt;br /&gt;
Augenmerk auf das Testen des Zusammenspiels der beiden Regler anhand des &lt;br /&gt;
Maschinensimulators, um das Ziel – die Implementierung dieser Kaskadenregelung auf dem &lt;br /&gt;
STM32 – zu erreichen.&lt;br /&gt;
&lt;br /&gt;
== Durchflussregler ==&lt;br /&gt;
Ein Durchflussregler, der in MATLAB® gemäß [114] vorliegt, wird als PID-Regler in &lt;br /&gt;
MicroPython umgesetzt. Durch die Anpassung der Pumpendrehzahl über einen &lt;br /&gt;
Spannungssollwert von 0–5 V kann ein konstanter oder ein profildefinierter Volumenstrom &lt;br /&gt;
entsprechend der Sollwertvorgabe realisiert werden. Als innerer Regelkreis liefert er &lt;br /&gt;
kontinuierlich Durchflusswerte an den Mischtemperaturregler. Daraus ergibt sich der Fokus &lt;br /&gt;
auf der Implementierung und dem Test des Reglers sowie auf der Validierung seines &lt;br /&gt;
Zusammenspiels mit dem übergeordneten Mischtemperaturregler im Maschinensimulator, &lt;br /&gt;
um die Integration auf dem STM32 sicherzustellen.&lt;br /&gt;
&lt;br /&gt;
== Startprozedur ==&lt;br /&gt;
&lt;br /&gt;
== Display ==&lt;br /&gt;
&lt;br /&gt;
== STM32 ==&lt;br /&gt;
Als Haupt-MCU soll ein STM32H753ZI-Controller verwendet werden. Es soll sichergestellt &lt;br /&gt;
werden, dass die vorinstallierten Steckerleisten CN7 bis CN10 ausreichend Pins für &lt;br /&gt;
Definition der benötigten UART-, ADC-, DAC- und GPIO-Pins aufweisen.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Boilerdruck-, die Wassertemperatur-, die Durchfluss- und die Füllstandsregelung des &lt;br /&gt;
Boilers müssen implementiert werden. Es soll ebenfalls eine UART-Kommunikation für ein &lt;br /&gt;
Touch-Display, einen Maschinensimulator sowie eine Möglichkeit zum Anschließen einer &lt;br /&gt;
Wartungs-App programmiert werden. Um einen geordneten Ablauf der einzelnen &lt;br /&gt;
Komponenten bei Inbetriebnahme der Maschine zu gewährleisten, soll eine Startprozedur &lt;br /&gt;
programmiert werden&lt;br /&gt;
&lt;br /&gt;
== Wartungs - APP ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= Leistungsvereinbarung =&lt;br /&gt;
&lt;br /&gt;
== Wartungs - APP ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= Besprechungsprotokolle und weitere Unterlagen =&lt;br /&gt;
* [[:Datei:20260214 Abschlusspraesentation.pdf|Übergabepräsentation Vorgänger]]&lt;br /&gt;
* [[:Datei:20260326 Projektstart.pdf|Aktueller Projektstand]]&lt;br /&gt;
* [[Projektstart 26.03.2026]]&lt;br /&gt;
* [[Projektrücksprache 02.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 09.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 17.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 24.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 08.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 15.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 22.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 29.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 05.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 12.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 19.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 03.07.2026]]&lt;br /&gt;
* [[Projektrücksprache 10.07.2026]]&lt;br /&gt;
* [[Projektrücksprache 24.07.2026]]&lt;br /&gt;
* [[Abschlusspräsentation 31.07.2026]]&lt;/div&gt;</summary>
		<author><name>Konstantin Rupprecht</name></author>
	</entry>
	<entry>
		<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Mikrocontroller_Programmierung_in_MicroPython_SoSe_2026&amp;diff=4866</id>
		<title>Mikrocontroller Programmierung in MicroPython SoSe 2026</title>
		<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Mikrocontroller_Programmierung_in_MicroPython_SoSe_2026&amp;diff=4866"/>
		<updated>2026-04-18T00:48:58Z</updated>

		<summary type="html">&lt;p&gt;Konstantin Rupprecht: /* Aufgabenanalyse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;htmltag tagname=&amp;quot;img&amp;quot; src=&amp;quot;https://vg07.met.vgwort.de/na/3e58d840a91b42ac97ee493cdd085245&amp;quot; width=&amp;quot;1&amp;quot; height=&amp;quot;1&amp;quot; alt=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/htmltag&amp;gt;&lt;br /&gt;
[[Datei:Breites Logoband.png|mini|zentriert|hochkant=2.5]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Mikrocontroller Programmierung in MicroPython Sommersemester 2026 =&lt;br /&gt;
Für die Projekte zur labortechnischen Espressomaschine (und weiteren Derivaten) ist die Mikrokontroller-Programmierung einer Steuerungselektronik erforderlich.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Das Projekt wurde bereits durch eine Projektgruppe bearbeitet und hat einen Projektstand, der jedoch noch nicht die gesamte erforderliche Steuerungsfunktionalität umfasst.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= Aufgabenanalyse =&lt;br /&gt;
==UART-Kommunikation==&lt;br /&gt;
Es soll eine Stern-Topologie implementiert werden, welche die UART-Kommunikation&lt;br /&gt;
zu einem separaten Display-Controller, dem Maschinensimulator und der Wartungs-&lt;br /&gt;
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&lt;br /&gt;
neuen Token festzulegen.&lt;br /&gt;
&lt;br /&gt;
==Mehrkernnutzung und/oder Multitasking==&lt;br /&gt;
&lt;br /&gt;
Es gibt bestimmte Vorgänge, welche regelmäßig zur Unterbrechung des Pro-&lt;br /&gt;
grammablaufs führen. Es gilt, diese Vorgänge zu identifizieren und umzuleiten,&lt;br /&gt;
damit diese den Programmablauf nicht mehr unterbrechen. Die Möglichkeit&lt;br /&gt;
der Mehrkernnutzung fällt dabei aus, da der STM32H753ZI nur über einen&lt;br /&gt;
M7-Kern verfügt. Dank der Hardware-Unterstützung DMA sowie der Nutzung&lt;br /&gt;
der uasyncio-Library besteht die Möglichkeit, die Vorgänge umzuleiten. Somit&lt;br /&gt;
können die Unterbrechungen des Programmablaufs reduziert werden.&lt;br /&gt;
&lt;br /&gt;
== Maschinensimulator ==&lt;br /&gt;
&lt;br /&gt;
== Füllstandsregler ==&lt;br /&gt;
&lt;br /&gt;
== Boilerdruckregelung ==&lt;br /&gt;
&lt;br /&gt;
== Mischtemperaturregler ==&lt;br /&gt;
&lt;br /&gt;
== Durchflussregler ==&lt;br /&gt;
&lt;br /&gt;
== Startprozedur ==&lt;br /&gt;
&lt;br /&gt;
== Display ==&lt;br /&gt;
&lt;br /&gt;
== STM32 ==&lt;br /&gt;
&lt;br /&gt;
== Wartungs - APP ==&lt;br /&gt;
&lt;br /&gt;
= Leistungsvereinbarung =&lt;br /&gt;
&lt;br /&gt;
= Besprechungsprotokolle und weitere Unterlagen =&lt;br /&gt;
* [[:Datei:20260214 Abschlusspraesentation.pdf|Übergabepräsentation Vorgänger]]&lt;br /&gt;
* [[:Datei:20260326 Projektstart.pdf|Aktueller Projektstand]]&lt;br /&gt;
* [[Projektstart 26.03.2026]]&lt;br /&gt;
* [[Projektrücksprache 02.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 09.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 17.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 24.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 08.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 15.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 22.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 29.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 05.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 12.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 19.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 03.07.2026]]&lt;br /&gt;
* [[Projektrücksprache 10.07.2026]]&lt;br /&gt;
* [[Projektrücksprache 24.07.2026]]&lt;br /&gt;
* [[Abschlusspräsentation 31.07.2026]]&lt;/div&gt;</summary>
		<author><name>Konstantin Rupprecht</name></author>
	</entry>
	<entry>
		<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Mikrocontroller_Programmierung_in_MicroPython_SoSe_2026&amp;diff=4865</id>
		<title>Mikrocontroller Programmierung in MicroPython SoSe 2026</title>
		<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Mikrocontroller_Programmierung_in_MicroPython_SoSe_2026&amp;diff=4865"/>
		<updated>2026-04-18T00:47:39Z</updated>

		<summary type="html">&lt;p&gt;Konstantin Rupprecht: /* Aufgabenanalyse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;htmltag tagname=&amp;quot;img&amp;quot; src=&amp;quot;https://vg07.met.vgwort.de/na/3e58d840a91b42ac97ee493cdd085245&amp;quot; width=&amp;quot;1&amp;quot; height=&amp;quot;1&amp;quot; alt=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/htmltag&amp;gt;&lt;br /&gt;
[[Datei:Breites Logoband.png|mini|zentriert|hochkant=2.5]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Mikrocontroller Programmierung in MicroPython Sommersemester 2026 =&lt;br /&gt;
Für die Projekte zur labortechnischen Espressomaschine (und weiteren Derivaten) ist die Mikrokontroller-Programmierung einer Steuerungselektronik erforderlich.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Das Projekt wurde bereits durch eine Projektgruppe bearbeitet und hat einen Projektstand, der jedoch noch nicht die gesamte erforderliche Steuerungsfunktionalität umfasst.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= Aufgabenanalyse =&lt;br /&gt;
==UART-Kommunikation==&lt;br /&gt;
Es soll eine Stern-Topologie implementiert werden, welche die UART-Kommunikation&lt;br /&gt;
zu einem separaten Display-Controller, dem Maschinensimulator und der Wartungs-&lt;br /&gt;
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&lt;br /&gt;
neuen Token festzulegen.&lt;br /&gt;
&lt;br /&gt;
==Mehrkernnutzung und/oder Multitasking==&lt;br /&gt;
&lt;br /&gt;
Es gibt bestimmte Vorgänge, welche regelmäßig zur Unterbrechung des Pro-&lt;br /&gt;
grammablaufs führen. Es gilt, diese Vorgänge zu identifizieren und umzuleiten,&lt;br /&gt;
damit diese den Programmablauf nicht mehr unterbrechen. Die Möglichkeit&lt;br /&gt;
der Mehrkernnutzung fällt dabei aus, da der STM32H753ZI nur über einen&lt;br /&gt;
M7-Kern verfügt. Dank der Hardware-Unterstützung DMA sowie der Nutzung&lt;br /&gt;
der uasyncio-Library besteht die Möglichkeit, die Vorgänge umzuleiten. Somit&lt;br /&gt;
können die Unterbrechungen des Programmablaufs reduziert werden.&lt;br /&gt;
&lt;br /&gt;
== Maschinensimulator ==&lt;br /&gt;
&lt;br /&gt;
== Füllstandsregler ==&lt;br /&gt;
&lt;br /&gt;
== Boilerdruckregelung ==&lt;br /&gt;
&lt;br /&gt;
== Mischtemperaturregler ==&lt;br /&gt;
&lt;br /&gt;
== Durchflussregler ==&lt;br /&gt;
&lt;br /&gt;
== Startprozedur ==&lt;br /&gt;
&lt;br /&gt;
== UART-Kommunikatgion ==&lt;br /&gt;
&lt;br /&gt;
== Display ==&lt;br /&gt;
&lt;br /&gt;
== STM32 ==&lt;br /&gt;
&lt;br /&gt;
== Wartungs - APP ==&lt;br /&gt;
&lt;br /&gt;
= Leistungsvereinbarung =&lt;br /&gt;
&lt;br /&gt;
= Besprechungsprotokolle und weitere Unterlagen =&lt;br /&gt;
* [[:Datei:20260214 Abschlusspraesentation.pdf|Übergabepräsentation Vorgänger]]&lt;br /&gt;
* [[:Datei:20260326 Projektstart.pdf|Aktueller Projektstand]]&lt;br /&gt;
* [[Projektstart 26.03.2026]]&lt;br /&gt;
* [[Projektrücksprache 02.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 09.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 17.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 24.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 08.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 15.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 22.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 29.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 05.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 12.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 19.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 03.07.2026]]&lt;br /&gt;
* [[Projektrücksprache 10.07.2026]]&lt;br /&gt;
* [[Projektrücksprache 24.07.2026]]&lt;br /&gt;
* [[Abschlusspräsentation 31.07.2026]]&lt;/div&gt;</summary>
		<author><name>Konstantin Rupprecht</name></author>
	</entry>
	<entry>
		<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Mikrocontroller_Programmierung_in_MicroPython_SoSe_2026&amp;diff=4864</id>
		<title>Mikrocontroller Programmierung in MicroPython SoSe 2026</title>
		<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Mikrocontroller_Programmierung_in_MicroPython_SoSe_2026&amp;diff=4864"/>
		<updated>2026-04-18T00:42:58Z</updated>

		<summary type="html">&lt;p&gt;Konstantin Rupprecht: /* Aufgabenanalyse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;htmltag tagname=&amp;quot;img&amp;quot; src=&amp;quot;https://vg07.met.vgwort.de/na/3e58d840a91b42ac97ee493cdd085245&amp;quot; width=&amp;quot;1&amp;quot; height=&amp;quot;1&amp;quot; alt=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/htmltag&amp;gt;&lt;br /&gt;
[[Datei:Breites Logoband.png|mini|zentriert|hochkant=2.5]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Mikrocontroller Programmierung in MicroPython Sommersemester 2026 =&lt;br /&gt;
Für die Projekte zur labortechnischen Espressomaschine (und weiteren Derivaten) ist die Mikrokontroller-Programmierung einer Steuerungselektronik erforderlich.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Das Projekt wurde bereits durch eine Projektgruppe bearbeitet und hat einen Projektstand, der jedoch noch nicht die gesamte erforderliche Steuerungsfunktionalität umfasst.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= Aufgabenanalyse =&lt;br /&gt;
==UART-Kommunikation==&lt;br /&gt;
Es soll eine Stern-Topologie implementiert werden, welche die UART-Kommunikation&lt;br /&gt;
zu einem separaten Display-Controller, dem Maschinensimulator und der Wartungs-&lt;br /&gt;
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&lt;br /&gt;
neuen Token festzulegen.&lt;br /&gt;
&lt;br /&gt;
== Maschinensimulator ==&lt;br /&gt;
&lt;br /&gt;
== Füllstandsregler ==&lt;br /&gt;
&lt;br /&gt;
== Boilerdruckregelung ==&lt;br /&gt;
&lt;br /&gt;
== Mischtemperaturregler ==&lt;br /&gt;
&lt;br /&gt;
== Durchflussregler ==&lt;br /&gt;
&lt;br /&gt;
== Startprozedur ==&lt;br /&gt;
&lt;br /&gt;
== UART-Kommunikatgion ==&lt;br /&gt;
&lt;br /&gt;
== Display ==&lt;br /&gt;
&lt;br /&gt;
== STM32 ==&lt;br /&gt;
&lt;br /&gt;
== Wartungs - APP ==&lt;br /&gt;
&lt;br /&gt;
= Leistungsvereinbarung =&lt;br /&gt;
&lt;br /&gt;
= Besprechungsprotokolle und weitere Unterlagen =&lt;br /&gt;
* [[:Datei:20260214 Abschlusspraesentation.pdf|Übergabepräsentation Vorgänger]]&lt;br /&gt;
* [[:Datei:20260326 Projektstart.pdf|Aktueller Projektstand]]&lt;br /&gt;
* [[Projektstart 26.03.2026]]&lt;br /&gt;
* [[Projektrücksprache 02.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 09.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 17.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 24.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 08.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 15.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 22.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 29.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 05.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 12.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 19.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 03.07.2026]]&lt;br /&gt;
* [[Projektrücksprache 10.07.2026]]&lt;br /&gt;
* [[Projektrücksprache 24.07.2026]]&lt;br /&gt;
* [[Abschlusspräsentation 31.07.2026]]&lt;/div&gt;</summary>
		<author><name>Konstantin Rupprecht</name></author>
	</entry>
	<entry>
		<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Mikrocontroller_Programmierung_in_MicroPython_SoSe_2026&amp;diff=4863</id>
		<title>Mikrocontroller Programmierung in MicroPython SoSe 2026</title>
		<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Mikrocontroller_Programmierung_in_MicroPython_SoSe_2026&amp;diff=4863"/>
		<updated>2026-04-18T00:37:31Z</updated>

		<summary type="html">&lt;p&gt;Konstantin Rupprecht: /* Aufgabenanalyse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;htmltag tagname=&amp;quot;img&amp;quot; src=&amp;quot;https://vg07.met.vgwort.de/na/3e58d840a91b42ac97ee493cdd085245&amp;quot; width=&amp;quot;1&amp;quot; height=&amp;quot;1&amp;quot; alt=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/htmltag&amp;gt;&lt;br /&gt;
[[Datei:Breites Logoband.png|mini|zentriert|hochkant=2.5]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Mikrocontroller Programmierung in MicroPython Sommersemester 2026 =&lt;br /&gt;
Für die Projekte zur labortechnischen Espressomaschine (und weiteren Derivaten) ist die Mikrokontroller-Programmierung einer Steuerungselektronik erforderlich.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Das Projekt wurde bereits durch eine Projektgruppe bearbeitet und hat einen Projektstand, der jedoch noch nicht die gesamte erforderliche Steuerungsfunktionalität umfasst.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= Aufgabenanalyse =&lt;br /&gt;
Es soll eine Stern-Topologie implementiert werden, welche die UART-Kommunikation&lt;br /&gt;
zu einem separaten Display-Controller, dem Maschinensimulator und der Wartungs-&lt;br /&gt;
App herstellt. Dabei sind Sende- und Empfangs-Token f¨ ur das Display, die Wartungs-App und&lt;br /&gt;
den Maschinensimulator einzuf¨ uhren. Es gilt dabei, den Umfang und Takt der&lt;br /&gt;
neuen Token festzulegen.&lt;br /&gt;
&lt;br /&gt;
== Maschinensimulator ==&lt;br /&gt;
&lt;br /&gt;
== Füllstandsregler ==&lt;br /&gt;
&lt;br /&gt;
== Boilerdruckregelung ==&lt;br /&gt;
&lt;br /&gt;
== Mischtemperaturregler ==&lt;br /&gt;
&lt;br /&gt;
== Durchflussregler ==&lt;br /&gt;
&lt;br /&gt;
== Startprozedur ==&lt;br /&gt;
&lt;br /&gt;
== UART-Kommunikatgion ==&lt;br /&gt;
&lt;br /&gt;
== Display ==&lt;br /&gt;
&lt;br /&gt;
== STM32 ==&lt;br /&gt;
&lt;br /&gt;
== Wartungs - APP ==&lt;br /&gt;
&lt;br /&gt;
= Leistungsvereinbarung =&lt;br /&gt;
&lt;br /&gt;
= Besprechungsprotokolle und weitere Unterlagen =&lt;br /&gt;
* [[:Datei:20260214 Abschlusspraesentation.pdf|Übergabepräsentation Vorgänger]]&lt;br /&gt;
* [[:Datei:20260326 Projektstart.pdf|Aktueller Projektstand]]&lt;br /&gt;
* [[Projektstart 26.03.2026]]&lt;br /&gt;
* [[Projektrücksprache 02.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 09.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 17.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 24.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 08.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 15.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 22.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 29.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 05.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 12.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 19.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 03.07.2026]]&lt;br /&gt;
* [[Projektrücksprache 10.07.2026]]&lt;br /&gt;
* [[Projektrücksprache 24.07.2026]]&lt;br /&gt;
* [[Abschlusspräsentation 31.07.2026]]&lt;/div&gt;</summary>
		<author><name>Konstantin Rupprecht</name></author>
	</entry>
	<entry>
		<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Projektr%C3%BCcksprache_09.04.2026&amp;diff=4860</id>
		<title>Projektrücksprache 09.04.2026</title>
		<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Projektr%C3%BCcksprache_09.04.2026&amp;diff=4860"/>
		<updated>2026-04-11T12:15:03Z</updated>

		<summary type="html">&lt;p&gt;Konstantin Rupprecht: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Besprechungsprotokoll-09.04.2026=&lt;br /&gt;
Ort: Online via Zoom&amp;lt;br&amp;gt;&lt;br /&gt;
Datum: 09.04.2026&amp;lt;br&amp;gt;&lt;br /&gt;
Teilnehmer: Konstantin Rupprecht, Loic Aboufiras, Francis Booth, Tillmann Haas, Felix Kerner, Armin &lt;br /&gt;
Rohnen&amp;lt;br&amp;gt;&lt;br /&gt;
Moderator: LfbA Armin Rohnen/Felix Kerner&amp;lt;br&amp;gt;&lt;br /&gt;
Protokollant: Konstantin Rupprecht &lt;br /&gt;
&lt;br /&gt;
==Top 1) Annahme des Protokolls==&lt;br /&gt;
Das Protokoll aus der vorherigen Besprechung wurde nicht von Armin Rohnen anerkannt, da es Ihm &lt;br /&gt;
mehrmals in dem falschen Format von dem zuständigen Protokollanten zugesendet wurde. Es ist eine &lt;br /&gt;
erneute Sendung mit richtigem Format anzustreben.&lt;br /&gt;
 &lt;br /&gt;
==Top 2) Team-Feedback von LfbA Armin Rohnen==&lt;br /&gt;
LfbA Rohnen weiste das Team auf eine unzureichende Teamarbeit hin. Er machte deutlich, dass sich &lt;br /&gt;
die Teilnehmer mehr absprechen müssen. Es gilt die Aufgaben gemeinsam zu bewältigen. &lt;br /&gt;
&lt;br /&gt;
==Top 3) Intervention von LfbA Armin Rohnen==&lt;br /&gt;
Aufgrund der mangelnden Teamarbeit befindet sich das Team nun im zwei-wöchentlichen Rückstand. &lt;br /&gt;
Da sich das Team jetzt schon im Rückstand befinde, veranlasste LfbA Rohnen diese Rücksprache als &lt;br /&gt;
Intervention. LfbA Rohnen verwies nochmals auf das Merkblatt. Es ist sich in Zukunft stärker an das &lt;br /&gt;
Merkblatt zu halten. &lt;br /&gt;
&lt;br /&gt;
==Top 4) Umlegung des Besprechungstermin==&lt;br /&gt;
Der vorherige Besprechungstermin vom Donnerstag um 16 Uhr, wurde auf den Freitag um 17 Uhr &lt;br /&gt;
gelegt. Es soll den Beteiligten mehr Zeit für die Vorbereitung auf die Rücksprache geben. &lt;br /&gt;
&lt;br /&gt;
==Top 5) Besprechung der Aufgabenanalyse==&lt;br /&gt;
LfbA Rohnen nahm den ersten Entwurf der abgegebenen Aufgabenanalyse nicht an, weswegen Herr &lt;br /&gt;
Rohnen die ToDo´s für die Aufgabenanalyse mit dem Team besprochen hat. &lt;br /&gt;
&lt;br /&gt;
==Top 6) Hinweis zur Arbeitshaltung==&lt;br /&gt;
LfbA Rohnen weiste nochmals auf die Arbeitshaltung der Teilnehmer hin. Er machte deutlich, dass es &lt;br /&gt;
so nicht weiter gehen kann und sich die Beteiligten deutlich mehr mit dem Thema auseinander &lt;br /&gt;
setzten sollen. Die Teilnehmer bestätigten, dass sie ihre Arbeitshaltung ändern werden. &lt;br /&gt;
&lt;br /&gt;
==Top 7) Roadmap erstellen==&lt;br /&gt;
LfbA Rohnen gab in Aufgabe, eine Roadmap für die nächsten drei Wochen zu erstellen. Diese soll bis &lt;br /&gt;
zum Freitag, den 10.04.2026 um 20 Uhr bei Herr Rohnen sein. Das Team soll sich damit &lt;br /&gt;
auseinandersetzten, wie es in Zukunft weitergehen soll. &lt;br /&gt;
&lt;br /&gt;
==Top 8) Ziel für die nächste Rücksprache==&lt;br /&gt;
Es soll eine brauchbare Aufgabenanalyse vorliegen. Aus dieser Aufgabenanalyse soll dann die &lt;br /&gt;
Zielvereinbarung für das Projekt erstellt werden.&lt;/div&gt;</summary>
		<author><name>Konstantin Rupprecht</name></author>
	</entry>
	<entry>
		<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Projektr%C3%BCcksprache_09.04.2026&amp;diff=4859</id>
		<title>Projektrücksprache 09.04.2026</title>
		<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Projektr%C3%BCcksprache_09.04.2026&amp;diff=4859"/>
		<updated>2026-04-11T12:12:37Z</updated>

		<summary type="html">&lt;p&gt;Konstantin Rupprecht: Die Seite wurde neu angelegt: „=Besprechungsprotokoll-09.04.2026= Ort: Online via Zoom&amp;lt;br&amp;gt; Datum: 09.04.2026&amp;lt;br&amp;gt; Teilnehmer: Konstantin Rupprecht, Loic Aboufiras, Francis Booth, Tillmann Haas, Felix Kerner, Armin  Rohnen&amp;lt;br&amp;gt; Moderator: LfbA Armin Rohnen/Felix Kerner  Protokollant: Konstantin Rupprecht   ==Top 1) Annahme des Protokolls== Das Protokoll aus der vorherigen Besprechung wurde nicht von Armin Rohnen anerkannt, da es Ihm  mehrmals in dem falschen Format von dem zuständigen Pr…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Besprechungsprotokoll-09.04.2026=&lt;br /&gt;
Ort: Online via Zoom&amp;lt;br&amp;gt;&lt;br /&gt;
Datum: 09.04.2026&amp;lt;br&amp;gt;&lt;br /&gt;
Teilnehmer: Konstantin Rupprecht, Loic Aboufiras, Francis Booth, Tillmann Haas, Felix Kerner, Armin &lt;br /&gt;
Rohnen&amp;lt;br&amp;gt;&lt;br /&gt;
Moderator: LfbA Armin Rohnen/Felix Kerner &lt;br /&gt;
Protokollant: Konstantin Rupprecht &lt;br /&gt;
&lt;br /&gt;
==Top 1) Annahme des Protokolls==&lt;br /&gt;
Das Protokoll aus der vorherigen Besprechung wurde nicht von Armin Rohnen anerkannt, da es Ihm &lt;br /&gt;
mehrmals in dem falschen Format von dem zuständigen Protokollanten zugesendet wurde. Es ist eine &lt;br /&gt;
erneute Sendung mit richtigem Format anzustreben.&lt;br /&gt;
 &lt;br /&gt;
==Top 2) Team-Feedback von LfbA Armin Rohnen==&lt;br /&gt;
LfbA Rohnen weiste das Team auf eine unzureichende Teamarbeit hin. Er machte deutlich, dass sich &lt;br /&gt;
die Teilnehmer mehr absprechen müssen. Es gilt die Aufgaben gemeinsam zu bewältigen. &lt;br /&gt;
&lt;br /&gt;
==Top 3) Intervention von LfbA Armin Rohnen==&lt;br /&gt;
Aufgrund der mangelnden Teamarbeit befindet sich das Team nun im zwei-wöchentlichen Rückstand. &lt;br /&gt;
Da sich das Team jetzt schon im Rückstand befinde, veranlasste LfbA Rohnen diese Rücksprache als &lt;br /&gt;
Intervention. LfbA Rohnen verwies nochmals auf das Merkblatt. Es ist sich in Zukunft stärker an das &lt;br /&gt;
Merkblatt zu halten. &lt;br /&gt;
&lt;br /&gt;
==Top 4) Umlegung des Besprechungstermin==&lt;br /&gt;
Der vorherige Besprechungstermin vom Donnerstag um 16 Uhr, wurde auf den Freitag um 17 Uhr &lt;br /&gt;
gelegt. Es soll den Beteiligten mehr Zeit für die Vorbereitung auf die Rücksprache geben. &lt;br /&gt;
&lt;br /&gt;
==Top 5) Besprechung der Aufgabenanalyse==&lt;br /&gt;
LfbA Rohnen nahm den ersten Entwurf der abgegebenen Aufgabenanalyse nicht an, weswegen Herr &lt;br /&gt;
Rohnen die ToDo´s für die Aufgabenanalyse mit dem Team besprochen hat. &lt;br /&gt;
&lt;br /&gt;
==Top 6) Hinweis zur Arbeitshaltung==&lt;br /&gt;
LfbA Rohnen weiste nochmals auf die Arbeitshaltung der Teilnehmer hin. Er machte deutlich, dass es &lt;br /&gt;
so nicht weiter gehen kann und sich die Beteiligten deutlich mehr mit dem Thema auseinander &lt;br /&gt;
setzten sollen. Die Teilnehmer bestätigten, dass sie ihre Arbeitshaltung ändern werden. &lt;br /&gt;
&lt;br /&gt;
==Top 7) Roadmap erstellen==&lt;br /&gt;
LfbA Rohnen gab in Aufgabe, eine Roadmap für die nächsten drei Wochen zu erstellen. Diese soll bis &lt;br /&gt;
zum Freitag, den 10.04.2026 um 20 Uhr bei Herr Rohnen sein. Das Team soll sich damit &lt;br /&gt;
auseinandersetzten, wie es in Zukunft weitergehen soll. &lt;br /&gt;
&lt;br /&gt;
==Top 8) Ziel für die nächste Rücksprache==&lt;br /&gt;
Es soll eine brauchbare Aufgabenanalyse vorliegen. Aus dieser Aufgabenanalyse soll dann die &lt;br /&gt;
Zielvereinbarung für das Projekt erstellt werden.&lt;/div&gt;</summary>
		<author><name>Konstantin Rupprecht</name></author>
	</entry>
</feed>