Schnittstelle MATLAB® / MCU Pumpenprüfstand

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

Breites Logoband.png


Patricia Viebke, 16.12.2022

Die Verteilerplatine und die 24V-SSR-Platine wurden am Prüfstand montiert. Die Sensoren wurden laut Anschlussplan an die jeweilige Verteilerbuchse und an den dazgehörigen NI-Messkarten Port angesteckt. Die vier Magnetventile mit den Bezeichnungen Y01, Y02, Y03 und Y04 wurden ebenfalls verbunden. Hier wurden die Leiter (L - braun) und Nichtleiter ( N - blau) an die 24V-SSR Platine angeschlossen. Hier ist zu beachten, dass immer zuerst der Leiter und anschließend der Nichtleiter direkt nebeneinander an die Klemmbuchse angebracht wird. Der PE-Leiter (gelb) der Magnetventile wurde am PE-Verteiler auf der Verteilerplatine verschraubt.

Zusätzlich musste ein PE für den Rahmen des Pumpenprüfstandes gelegt werden. Hierzu wurde ein gelbes Kabel auf einer Seite mit einem Kabelschuh versehen und zwischen Aluplatte und Schraube befestigt. Auf die andere Seite des Kabels wurde eine Aderendhülse gecrimpt, welcher an den PE-Verteiler verschraubt wurde.

Die Power-Supply wurde ebenfalls aktualisiert:
Das Hausnetz (230 V) wird an einen Ein-/Ausschalt-Schalter verbunden. Hier befindet sich ebenfalls der Not-Aus Button. Wird der Schalter nach rechts gedreht zum Einschalten, wird die 24V-SSR-Platine mit 230 V versorgt. An der Platine sind weiterhin das 24 V Netzteil und das Heizelement mit dem XSSR verbunden. Das 24V-Leistungsnetzteil wird über das SSR-14 gesteuert. Wird dieses SSR im Python Code auf dem Pico angeschalten, so wird das Leistungsnetzteil mit Strom versorgt. Über das Leistungsnetzteil kann die Pumpe betrieben werden.

Damit die Funktion des aktuellen Projektstandes überprüft werden kann, wurde wie folgt vorgegangen.

Das Raspberry Pico wird mit dem PC verbunden und MATLAB wird geöffnet. Die GUI wird gestartet und eine Verbindung mit dem Raspberry Pico wird hergestellt. Anschließend kann die Ansteuerung der Magnetventie überprüft werden. Hierzu muss der Switch des manuellen Modus aktiviert werden. Dadurch wird das Skript manuellermodus.py importiert. Durch Anklicken der Buttons für die Magnetventile, sollte links die entsprechende Lampe pink aufleuchten und ein Klacken des Magnetventils zu hören sein. Das Klicken weist auf ein Umschalten des Magnetventils hin.

Die Ansteuerung der Magnetventile war erfolgreich. Jedes Magnetventile konnte zwei mal Schalten. Es ist aufgefallen, dass das Klicken der Ventile unterschiedlich laut ist.

Durch das Betätigen des Buttons "PUMPE ON/OFF" in der GUI wird das SSR-14 aktiviert und das 24 V Leistungsnetzteil schaltet sich ein. Beim Ausschalten des SSR-14 ist aufgefallen, dass es etwa 10 Sekunden lang dauert, bis das Leistungsnetzteil auch tatsächlich ausgeschaltet ist.

Durch das beschriebene Vorgehen, wurde sowohl der aktuelle Stand der GUI, die Python Codes des Picos, die Platinen als auch die Verkabelung getestet. Der Prüfstand wurde eingschalten über den Einschalter und das 24 V Netzteil wurde ebenfalls eingeschaltet. Für die Betätigung der Magnetventile werden zusätzlich 24 V benötigt.

Patricia Viebke, 26.11.2022

Für die Aufnahme der Prüfstandsparameter wurde eine neue SSR-Insel erstellt. Auf diesem befindet sich das Raspberry Pico.

SSR-Insel

Über die SSR-Insel ist es möglich bis zu 13 Magnetventile anzuschließen (obere Schraubklemmen). Weiter ist ein SSR für die Versorung von 5 V zuständig, dass an die Pumpe weitergegeben wird (schwarzer Kasten). So kann der Pumpenprüfstand zukünftig nur über die GUI eingeschalten werden. Ein weiterer Ausgang der Platine ist für das Bedienen des Heizelements im Boiler zuständig (Schraubklemme unten). Durch das Zwischenschalten eines XSSRs wird die Steuerung des Heizelements umgesetzt.

Semih Kum, 08.12.2021

Für eine Bewertung des Konzepts "Getriebepumpe", war eine Kennlinie Volumenstrom über Druck auszulesen. Da diese Sensoren alle an der NI-Messkarte angeschlossen sind, wurde ein einfaches MATLAB-Skript (NI_Messkarte.m) zum Auslesen und Anzeigen dieser Werte geschrieben:

%{
messgeraet = daq("ni");
addinput(messgeraet, "cDAQ4Mod1", "ai0", "Voltage");
addinput(messgeraet, "cDAQ4Mod1", "ai1", "Voltage");
addinput(messgeraet, "cDAQ4Mod1", "ai2", "Voltage");
addinput(messgeraet, "cDAQ4Mod1", "ai3", "Voltage");
addinput(messgeraet, "cDAQ4Mod1", "ai4", "Voltage");
addinput(messgeraet, "cDAQ4Mod1", "ai5", "Voltage");
addinput(messgeraet, "cDAQ4Mod1", "ai6", "Voltage");
messgeraet.Rate = 60000;
fs = messgeraet.Rate;
%}

[data, time, ~] = read(messgeraet, seconds(15), "OutputFormat", "Matrix");

plot(time, data(:,5));
hold on
plot(time, data(:,6));
hold off

pos = length(messung) + 1;
messung(pos).data = data;
messung(pos).time = time;
Während der Betrachtung der ausgegeben Diagramme ist sofort aufgefallen, dass der Schaltplan für die Belegung der Kanäle Fehler enthielt. Deshalb wurde die Belegung neu definiert und im NI-Schaltplan richtig dokumentiert.

Semih Kum, 01.12.2021

1) Prüfen des Micropython-Skripts initBoard.py
Während den Überlegungen zu den Schnittstellencodes, ergaben sich Probleme bezüglich der Implementierung. Deshalb wurde anhand einer Einweisung durch LbA Rohnen das Micropython-Skript erklärt und diese gleichzeitig auf Fehler überprüft. Dabei ist aufgefallen, dass das Programm öfters hängen bleibt. Durch Eingabe der einzelnen Abschnitte wurden die hinterlegten Codes daher erneut getestet, jedoch traten hierbei keine signifikanten Fehler auf. Trotz allem wurde beschlossen, dies im weiteren Verlauf der Programmierung genauer zu beobachten und ggf. auf eine Erwärmung der Basisplatine zu achten.

2) Definition der Magnetventile
Ein weiteres Thema der Einweisung war die Definition der Anschlüsse für die Magnetventile. Hierfür wurden nach und nach alle PINs auf den SSR-Inseln mit folgenden Befehlen in Thonny durchgeschaltet:

D01: gpio_exp.pin(1, value = 1)
D02: gpio_exp.pin(0, value = 1)
D03: gpio_exp.pin(8, value = 1)
D04: gpio_exp.pin(9, value = 1)
D05: gpio_exp.pin(10, value = 1)
D06: gpio_exp.pin(11, value = 1)
D07: gpio_exp.pin(12, value = 1)
D08: gpio_exp.pin(13, value = 1)
D09: gpio_exp.pin(14, value = 1)
D10: gpio_exp.pin(15, value = 1)

3)Ermittlung der Sollwerte an Appoldt und Dosierventil
Eine weitere Aufgabe bestand darin, die Spannung am 10V-Steckplatz der Basisplatine einzustellen und mit einem Multimeter die ankommenden Werte zu überprüfen. Das Übergeben der Spannung erfolgte dabei über folgende Befehle in Thonny:

appoldt.write(1024) --> Entspricht einer Spannung von 2,5V
dosierventil.write(2047) --> Entspricht einer Spannung von 5V

Nach der Messung hat sich herausgestellt, dass die eingestellten Werte auch ankommen. Ein Problem, dass jedoch im Auge behalten werden muss, ist die Tatsache, dass bei Initialisierung des Programms am Appoldt der Getriebepumpe sofort die volle Spannung anliegt. Nach der hinterlassenen Notiz von Stephan Hase, scheint der vorherige Wert immer gespeichert zu werden. Zur Lösung dieses Problems, wird von LbA Rohnen ein Skript unter main.py erstellt.

4) Überprüfen des Füllstandes
Mit den Befehlen Fuell_1.value() und Fuell_2.value() wurde ermittelt an welchem PIN der Wert 1 ausgegeben wird. Dies erfolgte an FUELL_1.

5) MATLAB GUI
Im nächsten Schritt soll die Kommunikation über die bereits existierende Bedienoberfläche erfolgen. Hierfür wird noch eine geeigneter Plan entwickelt.

Semih Kum, 18.11.2021

Aufgrund von Unverständlichkeiten in der Dokumentation [25] und der Bedienoberfläche generell, fand eine Einweisung durch Korbinian Ass statt. Hierbei wurden sowohl die bereits definierten, als auch die fehlenden Aspekte des Programmcodes besprochen. Dabei hat sich herausgestellt, dass die App zur Bedienung des Prüfstands veraltet war. Anhand der finalen Version der App, die von Korbinian Ass zur Verfügung gestellt wurde, wurde ein grober Plan zur Implementierung der Programmcodes erstellt:

1) Implementierung der Schnittstellencodes in die MATLAB-Umgebung
2) Verbindung zwischen Basisplatine und MATLAB herstellen
3) Definition und Ansteuerung der Magnetventile (Y01, Y02, Y03, Y04)
4) Auslesen eines Spannungswertes auf der Basisplatine zur Überprüfung, ob der gewünschte Wert auch anliegt
5) 5V-Spannungsbegrenzung für die Getriebepumpe
6) Messen der Kennwerte auf der NI-Messkarte (Kontrolldruck, Durchflussrate, Referenztemperatur, Referenzdruck)
7) Messen der Kennwerte auf der Basisplatine (Kalibrierdruck, Kalibriertemperatur, Füllstand)

Semih Kum, 03.11.2021

Nach genauer Einarbeitung wurde festgestellt, dass in [25] eine Bedienoberfläche zum größten Teil erarbeitet und erstellt wurde. Im aktuellen Stand ist die Funktion dieser jedoch noch nicht gegeben. Deshalb besteht im Rahmen dieses Arbeitspaketes die Aufgabe darin, die Programmierung auf die Basisplatine ST NUCLEO-F411RE umzustellen und schrittweise die Elemente bzw. Funktionen für die MATLAB-Umgebung zu erarbeiten. Hierzu wurden anhand der Dokumentation [25] Überlegungen angestellt, wie dies realisiert werden kann.