Schrittmotorensteuerung Mischer: Unterschied zwischen den Versionen

Aus Technische Beeinflussbarkeit der Geschmacksache Kaffee
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(6 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
= Armin Rohnen, 15.08.2023 =
Die Funktion "StellenDosierventil" stellt das Kaltwasser-Dosierventil auf die (neue) Position. Dazu wird die Anzahl der zu stellenden 1/2-Schritte und die Richtung des Stellvorgangs über die Subtraktion des Eingabewertes mit dem bisherigen Stellwert ermittelt ("steps = app.Dosierventil.Value - app.mischerPosition").
Negative Werte von "steps" bewirken ein Zudrehen des Dosierventils. Dies ist als "forwardStep" definiert. Umgekehrt bewirken positive Werte ein Öffnen, was als "backwardStep" definiert ist.
Um eine Verstellung des Kaltwasser-Dosierventils zu erreichen muss die neue Position über "app.Dosierventil.Value =" in das Eingabefeld eingetragen und die Funktion "StellenDosierventil()" aufgerufen werden.
Die Callback-Funktion "DosierventilValueChanged" ruft lediglich "app.StellenDosierventil()" auf.
= Hendrik Wegjan, 28.07.2023 - ergänzende Abschlussbemerkung =
Ergänzend zu den Aufgaben für zukünftige Projektgruppen (s. Eintrag vom 23.05.2023) sind weitere Probleme aufgetreten:<br>
'''1) Ergänzung zur Problemstellung: „Verhaken“ des Dosierventils in Endpositionen<br>'''
Es wurde von AVS Römer bestätigt, dass sich das Dosierventil in der offenen Endlage je nach Anzahl der „überfahrenen“ Halbschritte aushängt. Außerdem verklebt das Ventil in geschlossener Endlage, sofern es länger nicht bewegt wird.<br>
Dementsprechend muss das Ventil beim Ausschalten der Maschine in eine Art „Mittelposition“ gefahren werden.<br>
Diese Routine ist in der MATLAB®-Funktion uifigure.close() niederzuschreiben.<br>
'''2) Problemstellung Sequenzposition<br>''' In der Initialisierung wird aktuell die Position in der Sequenzmatrix immer auf -1 gesetzt. Dadurch wird nach einem Neustart beim erstmaligen Verfahren der Schrittmotoren (und somit meistens bei der Initialisierung) immer mit der ersten Sequenz gestartet (Bei Verständnisfragen s. Kommentierung Schrittmotor-Python-Code).<br>
Diese Annahme passt aber nicht zum realen Bild, bei dem der Schrittmotor vor dem Ausschalten/Neustarten der Kaffeemaschine in jeder beliebigen Sequenz stehengeblieben sein kann.
Dadurch ist ein Springen des Schrittmotors zu Beginn quasi garantiert.<br>
Ein Lösungsvorschlag wäre, die Ausschalt-Routine (aus 1)) dahingehend zu programmieren, dass die Schrittmotoren so verfahren werden, dass sie genau bei der letzen Stellsequenz („seq8“) stehenbleiben. Bei einem Neustart würde dann richtigerweise die erste Stellsequenz („seq1“) gefahren werden.<br>
'''3) Problemstellung Überfahren der Endlagen<br>''' Es ist die Problematik aufgetreten, dass beim Erreichen einer Endlage (vor allem bei einer vollständigen Schließung der Drossel) der Schrittmotor physisch logischerweise nicht mehr weiterfährt, die Stellsequenzen aber weiter durchlaufen werden (da immer die aus MATLAB® übergebene Halbschrittanzahl gefahren wird).<br>
Auch hieraus ergibt sich die Problematik, dass der Schrittmotor anfängt zu springen, sobald er aus dieser Endlage hinaus dann erneut angesteuert wird. Dadurch gehen Schritte verloren, was vor allem in der Initialisierung nicht erlaubt ist.<br>
Es muss erarbeitet werden, ob dieses Problem z.B. durch eine geschicktere Ansteuerung lösbar ist.<br>
Ansonsten muss eine Alternative definiert werden (z.B. ein Erhöhen der übermittelten Halbschrittanzahl um einen Sequenzdurchlauf (+8), sofern bekannt ist, dass in eine Endlage gefahren wird. Damit wird ein eventuelles Springen des Schrittmotors kompensiert, aber die Stellgenauigkeit leidet natürlich darunter).<br>
= Simon Thrainer, 23.05.2023 - vorläufige Abschlussbemerkung =
[[Datei:20230522 Mischwassertemperatur Dosierventil Zeit.png|500px|thumb|gerahmt|rechts|alternativtext=Abbildung 3: Temperaturverlauf des Mischwassers (blau) über der Versuchsdauer|Abbildung 3: Temperaturverlauf des Mischwassers (blau) über der Versuchsdauer]]
[[Datei:20230522 Kennlinie Mischwassertemperatur Dosierventilstellung.png|500px|thumb|gerahmt|rechts|alternativtext=Abbildung 2: Kennlinie der Mischwassertemperatur in Abhängigkeit von der Dosierventilstellung|Abbildung 2: Kennlinie der Mischwassertemperatur in Abhängigkeit von der Dosierventilstellung]]
==Änderungen an der aktuellen GUI==
In die aktuelle MATLAB®-GUI (EspressoMenu_20230118) im Ordner Betriebssoftware wurde die Funktion „KennlinieDosierventil“ implementiert. Sie öffnet das Dosierventil schrittweise durch Verstellen des Schrittmotors alle 10 s um 40 Halbschritte. <br><br><br>
==Versuchsdurchführung und Erstellung der Kennlinie==
Der Versuchsablauf wurde mit einer Pumpenleistung von 3000 mV, einer Bypass-Stellung von 50 Halbschritten und vollständig aufgeheiztem Boiler (1300 mbar Boilerdruck) durchgeführt. Zuerst wurde das Dosierventil vollständig geschlossen und dann mithilfe der Funktion langsam geöffnet, was das Diagramm in Abbildung 3 ergab. Aus den Temperaturen, auf die sich das Mischwasser nach jedem Verstellen einpendelt, wurde die Kennlinie der Mischwassertemperatur in Abhängigkeit von der Dosierventilstellung erstellt (s. Abbildung 2). <br><br><br>
==Problemstellungen==
Bei der Erstellung der Kennlinie traten mehrere Probleme auf:<br><br>
• Die Mischwassertemperatur ist trotz geschlossenem Dosierventil anfangs nicht über 60 °C angestiegen. Das kann nach einem Hinweis von Armin Rohnen daran liegen, dass der Schrittmotor in einer Endposition „verklebt“ bzw. „verhakt“ und erst frei gefahren werden muss, bis er gesichert jeden Schritt fährt.
Dieses Problem kann für eine gewisse Zeit lang umgangen werden, indem der Schrittmotor bei der Initialisierung mit verlängerter Pausenzeit und einer größeren Anzahl von zu fahrenden Schritten gesichert geöffnet und geschlossen wird.
Armin Rohnen hat vorgeschlagen, dass die Schrittmotoren nicht in einer Endposition verweilen sollten, sondern in Ruhezeiten in einer mittleren Position stehen.<br><br>
• Die Vermutung, dass die Schrittmotoren mehr als 560 Halbschritte fahren können, hat sich bestätigt. In Abbildung 1 sind mehr als 14 Temperatursprünge zu sehen. Da die Pausenzeit, bei der sicher alle Schritte gefahren werden, mit 2000 µs bereits ermittelt wurde, kann davon ausgegangen werden, dass für jeden Temperatursprung tatsächlich 40 Halbschritte gefahren wurden.<br><br><br>
==Aufgaben für zukünftige Projektgruppen==
• Es soll ermittelt werden, unter welchen Umständen es dazu kommen kann, dass die Schrittmotoren in einer Endposition hängen bleiben und wie dieses Problem effektiv vermieden werden kann.<br><br>
• Es soll ermittelt werden, wie viele Schritte die Schrittmotoren tatsächlich fahren können.<br>
Die Versuchstaten können [http://www.institut-fuer-kaffeetechnologie.de/Intern/index.php?title=Versuchsdaten_Labormaschine#23.05.2023_Simon_Thrainer_-_Mischwassertemperatur-Druck hier]heruntergeladen werden.
<br><br>
= Hendrik Wegjan, 12.05.2023 =
= Hendrik Wegjan, 12.05.2023 =
[[Datei:20231205 Schrittmotor Pausenzeiten.png|500px|thumb|rechts|Abbildung 1: Darstellung Brühgruppendruckentwicklung bei verschiedenen Stell-Pausenzeiten]] <br>]]
[[Datei:20231205 Schrittmotor Pausenzeiten.png|500px|thumb|rechts|Abbildung 1: Darstellung Brühgruppendruckentwicklung bei verschiedenen Stell-Pausenzeiten]] <br>
In die aktuelle MATLAB®-GUI (EspressoMenu_20230118) im Ordner Betriebssoftware wurde die Funktion Schrittmotor_Auto implementiert. Sie enthält ein zeitgesteuertes Schließen der Bypass-Drossel. Aktuell werden alle 5 Sekunden 40 Schritte gestellt.
In die aktuelle MATLAB®-GUI (EspressoMenu_20230118) im Ordner Betriebssoftware wurde die Funktion Schrittmotor_Auto implementiert. Sie enthält ein zeitgesteuertes Schließen der Bypass-Drossel. Aktuell werden alle 5 Sekunden 40 Schritte gestellt.


Zeile 7: Zeile 62:


1. Bypass-Drossel gesichert vollständig öffnen (z.B. mit Thonny-Programm „Schrittmotor_gesicherter_Reset“)
1. Bypass-Drossel gesichert vollständig öffnen (z.B. mit Thonny-Programm „Schrittmotor_gesicherter_Reset“)
2. Wasserzufuhr auf Brühgruppe schalten (Y1 + Y6 + Y7 ON)
2. Wasserzufuhr auf Brühgruppe schalten (Y1 + Y6 + Y7 ON)
3. Pumpe einschalten (Leistung: 3000 mV)
3. Pumpe einschalten (Leistung: 3000 mV)
4. In Tab „Tests“ wechseln und „Schrittmotor Auto“ anklicken
4. In Tab „Tests“ wechseln und „Schrittmotor Auto“ anklicken
5. Warten, bis Maximaldruck (ca. 13 bar) erreicht ist, dann Messwertpuffer speichern und Pumpe ausschalten, evtl. Brühgruppe entlüften (Y08 ON)
5. Warten, bis Maximaldruck (ca. 13 bar) erreicht ist, dann Messwertpuffer speichern und Pumpe ausschalten, evtl. Brühgruppe entlüften (Y08 ON)


Zeile 18: Zeile 77:


Eine Anwendung der neuen Pausenzeiten auf die Schrittmotorinitialisierung muss ebenfalls stattfinden. Dort können die aktuellen Schrittzahlen (meistens 1200) durch die realen Werte (560) ersetzt werden, da jetzt bestätigt ist, dass jeder Schritt erkannt und gefahren wird.
Eine Anwendung der neuen Pausenzeiten auf die Schrittmotorinitialisierung muss ebenfalls stattfinden. Dort können die aktuellen Schrittzahlen (meistens 1200) durch die realen Werte (560) ersetzt werden, da jetzt bestätigt ist, dass jeder Schritt erkannt und gefahren wird.
= Hendrik Wegjan, 05.05.2023 =
Die aktuelle Initialisierung und Ansteuerung der Schrittmotoren wurde im Zuge der Einarbeitung getestet. <br>
Beim Start der Kaffeemaschine werden die drei Schrittmotoren (Dosierventil Mischer, Dosierventil Bypass, Brühgruppendrossel) durch die Funktion init_mcus() identifiziert und initialisiert.<br>
Nach dieser erstmaligen Initialisierung sind jedem Schrittmotor seine individuellen vier Pins zugeordnet (Durch den Aufruf der schrittmotor.setup-Funktion).<br>
Weiterhin wird die Funktion schrittmotor.sequenz() aufgerufen und dessen return-Wert der Variablen seq zugewiesen. Dadurch ist die Sequenzreihenfolge definiert, in der die Pins der Schrittmotoren bestromt werden müssen, damit er eindeutig fährt.<br>
Info: Ein Schrittmotor besitzt einen dauermagnetischen Rotor, der durch wechselnde Magnetfelder in den Statorspulen angetrieben wird.<br>
Diese Statorspulen können über die Pins bestromt werden. Jede Stellsequenz erzeugt demnach durch die unterschiedliche Ansteuerung der Pins ein individuelles Magnetfeld, das immer genau zu einer Stellung des Rotors passt.<br>
Wird diese Sequenz-Reihenfolge nicht eingehalten, so fängt der Schrittmotor an, zu springen.<br>
Genauere Informationen zur Funktionsweise sind in [40] niedergeschrieben.<br>
Außerdem wird für jeden Schrittmotor in einer Variable xxx_pos (z.B. dosierventil_pos fürs Dosierventil) der aktuelle Stand in der Schrittmotor-Stellsequenzreihenfolge auf -1 gesetzt. Dadurch startet der Schrittmotor beim Ersten Verfahren automatisch mit Sequenz 1 (Genaueres im nächsten Absatz).<br>
Eine Ansteuerung erfolgt immer in der gleichen Reihenfolge:<br>
a) Aufruf der Python-Funktion (forwardStep für ein Öffnen, backwardStep für ein Schließen des jeweiligen Ventils) in der MATLAB® GUI <br>
b) Abarbeiten der Python-Funktion forwardStep()/backwardStep() auf der MCU <br>
Die exakten Funktionalitäten können der Programmcode-Kommentierung entnommen werden (s. Programmcode/schrittmotor.py).<br>
Diese Ansteuerungsmethodik wird auch für die erste Initialisierung der Schrittmotoren beim Verbinden der Platinen verwendet. Alle Schrittmotoren werden aktuell mit 800 Halbschritten zuerst geöffnet (forwardStep) und dann geschlossen (backwardStep).<br>
In Bezug auf die von AVS Römer angegebenen 560 Halbschritte ist das deutlich zu viel.<br>
Das liegt primär an der noch nicht getesteten Stell-Pausenzeit der setStepper-Funktion.<br>
Aktuell werden 2500 µs verwendet.<br>
Sobald die korrekte Pausenzeit definiert ist, soll mit einer Halbschrittanzahl von 560 initialisiert werden.<br>




= Armin Rohnen, 07.04.2023 =
= Armin Rohnen, 07.04.2023 =
Für den Mischer ist eine zweifelfreie Initialisierung zu Maschinenstart zu realisieren.
Für den Mischer ist eine zweifelsfreie Initialisierung zu Maschinenstart zu realisieren.


Der Mischer ist über ein AVS Römer elektronisches Dosierventil mit 280 Schritten (lt. Herstellerangabe) realisiert.
Der Mischer ist über ein AVS Römer elektronisches Dosierventil mit 280 Schritten (lt. Herstellerangabe) realisiert.


Es ist zu klären mit welchen Pasuenzeiten das Dosierventil zuverlässig betreiben werden kann. Im weiteren wird eine Kennlinie für die Mischwassertemperatur in Abhängigkeit der Dosierventilstellung benötigt. Die Kennlinie soll für die übliche Boilertemperatur bei 1300 mbar Boilerdruck Gültigkeit aufweisen.
Es ist zu klären, mit welchen Pausenzeiten das Dosierventil zuverlässig betrieben werden kann. Im Weiteren wird eine Kennlinie für die Mischwassertemperatur in Abhängigkeit der Dosierventilstellung benötigt. Die Kennlinie soll für die übliche Boilertemperatur bei 1300 mbar Boilerdruck Gültigkeit aufweisen.

Aktuelle Version vom 15. August 2023, 15:48 Uhr

Armin Rohnen, 15.08.2023

Die Funktion "StellenDosierventil" stellt das Kaltwasser-Dosierventil auf die (neue) Position. Dazu wird die Anzahl der zu stellenden 1/2-Schritte und die Richtung des Stellvorgangs über die Subtraktion des Eingabewertes mit dem bisherigen Stellwert ermittelt ("steps = app.Dosierventil.Value - app.mischerPosition").

Negative Werte von "steps" bewirken ein Zudrehen des Dosierventils. Dies ist als "forwardStep" definiert. Umgekehrt bewirken positive Werte ein Öffnen, was als "backwardStep" definiert ist.

Um eine Verstellung des Kaltwasser-Dosierventils zu erreichen muss die neue Position über "app.Dosierventil.Value =" in das Eingabefeld eingetragen und die Funktion "StellenDosierventil()" aufgerufen werden.

Die Callback-Funktion "DosierventilValueChanged" ruft lediglich "app.StellenDosierventil()" auf.

Hendrik Wegjan, 28.07.2023 - ergänzende Abschlussbemerkung

Ergänzend zu den Aufgaben für zukünftige Projektgruppen (s. Eintrag vom 23.05.2023) sind weitere Probleme aufgetreten:

1) Ergänzung zur Problemstellung: „Verhaken“ des Dosierventils in Endpositionen
Es wurde von AVS Römer bestätigt, dass sich das Dosierventil in der offenen Endlage je nach Anzahl der „überfahrenen“ Halbschritte aushängt. Außerdem verklebt das Ventil in geschlossener Endlage, sofern es länger nicht bewegt wird.
Dementsprechend muss das Ventil beim Ausschalten der Maschine in eine Art „Mittelposition“ gefahren werden.
Diese Routine ist in der MATLAB®-Funktion uifigure.close() niederzuschreiben.


2) Problemstellung Sequenzposition
In der Initialisierung wird aktuell die Position in der Sequenzmatrix immer auf -1 gesetzt. Dadurch wird nach einem Neustart beim erstmaligen Verfahren der Schrittmotoren (und somit meistens bei der Initialisierung) immer mit der ersten Sequenz gestartet (Bei Verständnisfragen s. Kommentierung Schrittmotor-Python-Code).
Diese Annahme passt aber nicht zum realen Bild, bei dem der Schrittmotor vor dem Ausschalten/Neustarten der Kaffeemaschine in jeder beliebigen Sequenz stehengeblieben sein kann. Dadurch ist ein Springen des Schrittmotors zu Beginn quasi garantiert.
Ein Lösungsvorschlag wäre, die Ausschalt-Routine (aus 1)) dahingehend zu programmieren, dass die Schrittmotoren so verfahren werden, dass sie genau bei der letzen Stellsequenz („seq8“) stehenbleiben. Bei einem Neustart würde dann richtigerweise die erste Stellsequenz („seq1“) gefahren werden.


3) Problemstellung Überfahren der Endlagen
Es ist die Problematik aufgetreten, dass beim Erreichen einer Endlage (vor allem bei einer vollständigen Schließung der Drossel) der Schrittmotor physisch logischerweise nicht mehr weiterfährt, die Stellsequenzen aber weiter durchlaufen werden (da immer die aus MATLAB® übergebene Halbschrittanzahl gefahren wird).
Auch hieraus ergibt sich die Problematik, dass der Schrittmotor anfängt zu springen, sobald er aus dieser Endlage hinaus dann erneut angesteuert wird. Dadurch gehen Schritte verloren, was vor allem in der Initialisierung nicht erlaubt ist.
Es muss erarbeitet werden, ob dieses Problem z.B. durch eine geschicktere Ansteuerung lösbar ist.
Ansonsten muss eine Alternative definiert werden (z.B. ein Erhöhen der übermittelten Halbschrittanzahl um einen Sequenzdurchlauf (+8), sofern bekannt ist, dass in eine Endlage gefahren wird. Damit wird ein eventuelles Springen des Schrittmotors kompensiert, aber die Stellgenauigkeit leidet natürlich darunter).

Simon Thrainer, 23.05.2023 - vorläufige Abschlussbemerkung

Abbildung 3: Temperaturverlauf des Mischwassers (blau) über der Versuchsdauer
Abbildung 3: Temperaturverlauf des Mischwassers (blau) über der Versuchsdauer
Abbildung 2: Kennlinie der Mischwassertemperatur in Abhängigkeit von der Dosierventilstellung
Abbildung 2: Kennlinie der Mischwassertemperatur in Abhängigkeit von der Dosierventilstellung

Änderungen an der aktuellen GUI

In die aktuelle MATLAB®-GUI (EspressoMenu_20230118) im Ordner Betriebssoftware wurde die Funktion „KennlinieDosierventil“ implementiert. Sie öffnet das Dosierventil schrittweise durch Verstellen des Schrittmotors alle 10 s um 40 Halbschritte.


Versuchsdurchführung und Erstellung der Kennlinie

Der Versuchsablauf wurde mit einer Pumpenleistung von 3000 mV, einer Bypass-Stellung von 50 Halbschritten und vollständig aufgeheiztem Boiler (1300 mbar Boilerdruck) durchgeführt. Zuerst wurde das Dosierventil vollständig geschlossen und dann mithilfe der Funktion langsam geöffnet, was das Diagramm in Abbildung 3 ergab. Aus den Temperaturen, auf die sich das Mischwasser nach jedem Verstellen einpendelt, wurde die Kennlinie der Mischwassertemperatur in Abhängigkeit von der Dosierventilstellung erstellt (s. Abbildung 2).


Problemstellungen

Bei der Erstellung der Kennlinie traten mehrere Probleme auf:

• Die Mischwassertemperatur ist trotz geschlossenem Dosierventil anfangs nicht über 60 °C angestiegen. Das kann nach einem Hinweis von Armin Rohnen daran liegen, dass der Schrittmotor in einer Endposition „verklebt“ bzw. „verhakt“ und erst frei gefahren werden muss, bis er gesichert jeden Schritt fährt. Dieses Problem kann für eine gewisse Zeit lang umgangen werden, indem der Schrittmotor bei der Initialisierung mit verlängerter Pausenzeit und einer größeren Anzahl von zu fahrenden Schritten gesichert geöffnet und geschlossen wird. Armin Rohnen hat vorgeschlagen, dass die Schrittmotoren nicht in einer Endposition verweilen sollten, sondern in Ruhezeiten in einer mittleren Position stehen.

• Die Vermutung, dass die Schrittmotoren mehr als 560 Halbschritte fahren können, hat sich bestätigt. In Abbildung 1 sind mehr als 14 Temperatursprünge zu sehen. Da die Pausenzeit, bei der sicher alle Schritte gefahren werden, mit 2000 µs bereits ermittelt wurde, kann davon ausgegangen werden, dass für jeden Temperatursprung tatsächlich 40 Halbschritte gefahren wurden.


Aufgaben für zukünftige Projektgruppen

• Es soll ermittelt werden, unter welchen Umständen es dazu kommen kann, dass die Schrittmotoren in einer Endposition hängen bleiben und wie dieses Problem effektiv vermieden werden kann.

• Es soll ermittelt werden, wie viele Schritte die Schrittmotoren tatsächlich fahren können.

Die Versuchstaten können hierheruntergeladen werden.





Hendrik Wegjan, 12.05.2023

Abbildung 1: Darstellung Brühgruppendruckentwicklung bei verschiedenen Stell-Pausenzeiten


In die aktuelle MATLAB®-GUI (EspressoMenu_20230118) im Ordner Betriebssoftware wurde die Funktion Schrittmotor_Auto implementiert. Sie enthält ein zeitgesteuertes Schließen der Bypass-Drossel. Aktuell werden alle 5 Sekunden 40 Schritte gestellt.

Mit dieser Funktion wurde die Versuchsreihe zur Ermittlung der minimal möglichen Stell-Pausenzeit durchgeführt. Dabei wurde die Pausenzeit zwischen den Schritten variiert (genaue Werte s. Abbildung 1) und dann immer derselbe Ablauf gefahren:

1. Bypass-Drossel gesichert vollständig öffnen (z.B. mit Thonny-Programm „Schrittmotor_gesicherter_Reset“)

2. Wasserzufuhr auf Brühgruppe schalten (Y1 + Y6 + Y7 ON)

3. Pumpe einschalten (Leistung: 3000 mV)

4. In Tab „Tests“ wechseln und „Schrittmotor Auto“ anklicken

5. Warten, bis Maximaldruck (ca. 13 bar) erreicht ist, dann Messwertpuffer speichern und Pumpe ausschalten, evtl. Brühgruppe entlüften (Y08 ON)

Aus Abbildung 1 ist erkennbar, dass ab einer Pausenzeit von 2000 µs (lila) ein annähernd gleicher Verlauf des Brühgruppendrucks entsteht. Es kann also angenommen werden, dass bei einer Stell-Pausenzeit größer/gleich 2000 µs keine Schritte übersprungen werden.

Im nächsten Schritt wird mit den neuen Pausenzeiten gearbeitet und die Kennlinie Mischwassertemperatur/Dosierventilstellung generiert.

Eine Anwendung der neuen Pausenzeiten auf die Schrittmotorinitialisierung muss ebenfalls stattfinden. Dort können die aktuellen Schrittzahlen (meistens 1200) durch die realen Werte (560) ersetzt werden, da jetzt bestätigt ist, dass jeder Schritt erkannt und gefahren wird.


Hendrik Wegjan, 05.05.2023

Die aktuelle Initialisierung und Ansteuerung der Schrittmotoren wurde im Zuge der Einarbeitung getestet.


Beim Start der Kaffeemaschine werden die drei Schrittmotoren (Dosierventil Mischer, Dosierventil Bypass, Brühgruppendrossel) durch die Funktion init_mcus() identifiziert und initialisiert.
Nach dieser erstmaligen Initialisierung sind jedem Schrittmotor seine individuellen vier Pins zugeordnet (Durch den Aufruf der schrittmotor.setup-Funktion).

Weiterhin wird die Funktion schrittmotor.sequenz() aufgerufen und dessen return-Wert der Variablen seq zugewiesen. Dadurch ist die Sequenzreihenfolge definiert, in der die Pins der Schrittmotoren bestromt werden müssen, damit er eindeutig fährt.


Info: Ein Schrittmotor besitzt einen dauermagnetischen Rotor, der durch wechselnde Magnetfelder in den Statorspulen angetrieben wird.
Diese Statorspulen können über die Pins bestromt werden. Jede Stellsequenz erzeugt demnach durch die unterschiedliche Ansteuerung der Pins ein individuelles Magnetfeld, das immer genau zu einer Stellung des Rotors passt.
Wird diese Sequenz-Reihenfolge nicht eingehalten, so fängt der Schrittmotor an, zu springen.
Genauere Informationen zur Funktionsweise sind in [40] niedergeschrieben.


Außerdem wird für jeden Schrittmotor in einer Variable xxx_pos (z.B. dosierventil_pos fürs Dosierventil) der aktuelle Stand in der Schrittmotor-Stellsequenzreihenfolge auf -1 gesetzt. Dadurch startet der Schrittmotor beim Ersten Verfahren automatisch mit Sequenz 1 (Genaueres im nächsten Absatz).


Eine Ansteuerung erfolgt immer in der gleichen Reihenfolge:
a) Aufruf der Python-Funktion (forwardStep für ein Öffnen, backwardStep für ein Schließen des jeweiligen Ventils) in der MATLAB® GUI
b) Abarbeiten der Python-Funktion forwardStep()/backwardStep() auf der MCU
Die exakten Funktionalitäten können der Programmcode-Kommentierung entnommen werden (s. Programmcode/schrittmotor.py).


Diese Ansteuerungsmethodik wird auch für die erste Initialisierung der Schrittmotoren beim Verbinden der Platinen verwendet. Alle Schrittmotoren werden aktuell mit 800 Halbschritten zuerst geöffnet (forwardStep) und dann geschlossen (backwardStep).
In Bezug auf die von AVS Römer angegebenen 560 Halbschritte ist das deutlich zu viel.
Das liegt primär an der noch nicht getesteten Stell-Pausenzeit der setStepper-Funktion.
Aktuell werden 2500 µs verwendet.


Sobald die korrekte Pausenzeit definiert ist, soll mit einer Halbschrittanzahl von 560 initialisiert werden.


Armin Rohnen, 07.04.2023

Für den Mischer ist eine zweifelsfreie Initialisierung zu Maschinenstart zu realisieren.

Der Mischer ist über ein AVS Römer elektronisches Dosierventil mit 280 Schritten (lt. Herstellerangabe) realisiert.

Es ist zu klären, mit welchen Pausenzeiten das Dosierventil zuverlässig betrieben werden kann. Im Weiteren wird eine Kennlinie für die Mischwassertemperatur in Abhängigkeit der Dosierventilstellung benötigt. Die Kennlinie soll für die übliche Boilertemperatur bei 1300 mbar Boilerdruck Gültigkeit aufweisen.