Anpassungen für Schrittmotorensteuerung

Aus Technische Beeinflussbarkeit der Geschmacksache Kaffee
Zur Navigation springen Zur Suche springen

Armin Rohnen, 19.06.2023

Aufgaben des ToDos sind identisch zu denen im ToDo „Schrittmotorsteuerung Brühgruppendrossel“

Florian Todenhagen, 14.02.2023

Um die Position der Drossel an der Brühgruppe genau zu bestimmen, muss eine Initialisierung bei Start der Maschine implementiert werden. Dies bedeutet ein Anfahren auf Endposition und anschließend Anfahren einer häufig genutzten Einstellung.

Armin Rohnen, 06.01.2023

Es wurden erfolgreich die MATLAB-GUI auf Schrittmotorsteuerung umgestellt. Die Labormaschine ist im manuellen Modus betriebsfähig.

Der Modus "Programme" wurde nicht getestet. Insbesondere ist aktuell undefiniert, ob die Mischwassertemperaturregelung nach der Umstellung auf das elektronische Dosierventil (Schrittmotorsteuerung) noch funktionsfähig ist.

Der aktuelle Stand der GUI ist in der Datei "EspressoMenu_optAR_20221231.mlapp" zu finden.

Auf dem Bedienungs-LapTop der Labormaschine wurde eine .exe Version der Bedienung hinterlegt - EspressoMenu.exe

In der Hardware wurden das AVS Römer Dosierventil gegen ein elektronisches Dosierventil von AVS Römer ausgetauscht. Hierfür wird anstelle des 0 bis 10 Volt Stellsignals eine Schrittmotorsteuerung benötigt. Die manuelle Drosseln vor der Brühgruppe wurde mit einem Schrittmotorantrieb versehen und im Pumpenbypass wurde die manuelle Drossel durch ein elektronisches Drosselventil ausgetauscht.

Es wurde der überarbeitete Stand der Brühgruppe mit SEEED Drucksensor verbaut.

Die Schrittmotorsteuerung kann nicht von der STM32 Basisplatine durchgeführt werden. Hierzu ist eine weitere MCU erforderlich. Das führt dazu, dass zwei MCUs eindeutig identifiziert werden müssen. Dies ergab Änderungen im Callback "verbindenButtonPushed" und es wurde die Funktion "initMCUs" eingeführt.

Es wird der Pumpenbypass auf Schritt 200 gestellt. Zuvor wird einmal komplett geöffnet und einmal komplett geschlossen.

Es ist zu prüfen in welche Steuerungsrichtung forward oder backward öffnen bzw. schließen zu verstehen ist. - Die Prüfung ist durchgeführt und korrekt im Programmcode hinterlegt.

Der Messwertpuffer wird über die Buttons "Messwertpuffer speichern" in eine Datei abgespeichert. Es erfolgt eine Gernerierung des Dateinamens auf Basis des Datums und der eingegebenen Beschreibung des Messzyklus. Es werden alle Meta-Daten aus den Eingabefeldern mit abgelegt.

Der Messwertpuffer ist eine spaltenorientierte Matrix mit dem Inhalt: 1.) Boilertemperaturwert
2.) Frischwassertemperatur
3.) Mischwassertemperatur
4.) Boilerdruck
5.) Leitfähigkeit
6.) Füllstand
7.) Durchfluss
8.) Pulse vom Flowmeter
9.) Brühgruppenwassertemperatur
10.) Brühgruppendruck
11.) Pumpenansteuerung
12.) Pumpenbypass
13.) Dosierventilstellung
14.) Brühgruppendrossel
15.) Heizleistung PWM

Die Zeitstempel sind in einem separaten Vektor abgelegt.

Nach der Datenablage wird der Messwertpuffer sowie der Zeitstempelvektor gelöscht und es wird eine neue Startzeit gesetzt.

In der Funktion "app.act" werden die neuen Sollwerte ursprünglich nur an die STM32-MCU übermittelt. Im Script main.py auf der STM32-MCU wurde die Stellfunktion des Dosierventils auskommentiert. Diese kann durch entfernen des Kommentarzeichens wieder aktiviert werden. Der DAC-Kanal für das Dosierventil ist aktuell noch konfigureirt.

Das elektronische Dosierventil wird nun im Mischwasser-Reglerprogramm direkt gestellt, wenn erforderlich.

Da 1/2-Schritte angesteuert werden, muss mit 800 Schritten für vollständiges Öffnen bzw. Schließen kalkuliert werden.

Brühgruppendrossel ist mit Motor5 verbunden und "forwardStep" öffnet die Drossel. Für die 11,5 Umdrehungen der Drossel benötigt der Motor (mit Getriebe) 498 Umdrehungen, bei einer Schrittweite von 7,5° ergeben sich daraus 47803 1/2 Schrittte.

Die Brühgruppendrossel benötigt eine Halterung, welche die ca. 10 mm Längenausgleich der Spindel ermöglicht ohne dass es zu Verklemmungen kommt. Aktuell kann nur dann eine Einstellung vorgenommen werden, wenn der Schrittmotor per Hand festgehalten wird.

Im Schrittmotortreiber "schrittmotor.py" wurde die Zeit für die Durchführung des einzelnen 1/2-Schritt auf 1500 us erhöht.

Aktuell ist der Zeitstempel noch nicht korrekt und die Magnetventilschaltung von Y01 und Y06 im Boilerregler muss noch deaktiviert werden.

Armin Rohnen, 01.01.2023

Schrittmotorsteuerung

Für die Implementierung der Schrittmotorsteuerung für die Funktionen Pumpenbypass, Brühgruppendrossel und dem Tausch des Dosierventils gegen ein elektronisches Dosierventil war eine weitere MCU erforderlich, da das vorhandene STM32 Basisboard keinen Schrittmotortreiber implementiert hat.

Es wurde eine Schrittmotosteuerung für 6 Schrittmotoren mit einer Raspberry Pi Pico MCU entwickelt.

Aktuell werden 3 Motoanschlüsse verwendet: - Dosierventil an Motor 6 - Pumpenbypass an Motor 5 - Brühgruppendrossel an Motor 4

Bei der Verwendung von zwei MCUs ergibt sich die Problematik der zweifelsfreien Erkennung dieser. Das Problem wurde dadurch gelöst, dass ein mehrstufiger Verbindungsprozess eingeführt wurde.

Der Verbindungsaufbau zu den beiden MCUs wird durch den Button "verbinden" mit der Callback-Funktion "verbindenButtonPushed" ausgelöst. Hierin wird eine Serialportliste aller angeschlossenen MCUs erstellt und mit der ersten MCU in der Liste wird eine Verbindung aufgebaut. Auf allen MCUs befindet sich ein Skript ident.py, dieses wird ausgeführt und gibt einen Identitätsstring aus, welcher in der Funktion "initMCUs" abgearbeitet wird.

Die erkannte MCU wird in dem korrektem Objektbezeichner zugeordnet, es wird die Konfiguration der jeweiligen MCU durchgeführt und, falls erforderlich, mit der nächsten MCU eine Identitätsprüfung durchgeführt. Schrittmotorfunktionalität

Für den Pumpenbypass und die Brühgruppendrossel wurden im Tab "Manueller Modus" Eingebafelder für die Schritt(position) eingeführt. Nach der Eingabe eines Wertes darin, wird auf diese Schrittzahl eingestellt und anschließend der zugehörige Schrittmotor elektrisch abgeschaltet.