Durchflussmessung Basisnoard Multi-MCU: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
= Noureddine Ait Ouhamou, 16.08.2023 = | |||
Die erste Funktion misst die Zeit zwischen den gesendeten Impulsen und errechnet daraus | |||
den momentanen Durchfluss. Danach wird der Mittelwert auf zwei Nachkommastellen genau | |||
gebildet. Als nächstes wird abgefragt, ob schon 20 Werte vom Flowmeter in die Liste | |||
eingetragen wurden. Ist dies der Fall wird der Listenindexzähler flow1_List_Counter auf 0 | |||
gesetzt. Wenn der Mittelwert des Durchflusses einen Wert von 0,1 nicht übersteigt, wird der | |||
momentane errechnete Durchfluss direkt übernommen und durch vier geteilt, da sich bei | |||
geringem Durchfluss die Liste langsam füllt. Anschließend werden große Messspitzen | |||
herausgefiltert, die zu sehr vom Mittelwert abweichen. Zuletzt wird der neue Startzeitpunkt zur | |||
Durchflussmessung festgelegt und der Interruptzähler wird um eins erhöht. | |||
Die zweite Funktion, die mit einem PWM-Signal getriggert wird statt mit einem Timer, gibt die | |||
Messwerte der Platine an die MATLAB-GUI weiter und setzt bei keinem Auslösen der | |||
Flowmeterfunktion an der entsprechende Stelle in der Liste den Wert auf 0. Zuerst wird | |||
abgefragt, ob der Interruptzähler der ersten Funktion auf 0 ist. Tritt dieser Fall auf, wird der | |||
Mittelwert des Durchflusses ebenfalls auf 0 gesetzt. Danach wird überprüft, ob der | |||
flow1_List_Counter größer als 19 ist. Sobald diese Bedingung erfüllt ist, wird der Zähler | |||
zurückgesetzt. Anschließend wird in der Liste an der richtigen Stelle eine 0 gespeichert und | |||
der Listenzähler wird um eins erhöht. Zuletzt wird mit einer Printanweisung in dem das Kürzel | |||
„B!“ enthalten ist, die Messwerte an die Matlab-GUI gesendet und der Interruptzähler wird auf | |||
0 gesetzt. | |||
= Noureddine Ait Ouhamou, 21.06.2023 = | = Noureddine Ait Ouhamou, 21.06.2023 = | ||
Die Erfassung des Flowmeters wird von Jan Budnick übernommen. Der Pin für die ISR wurde angepasst. | Die Erfassung des Flowmeters wird von Jan Budnick übernommen. Der Pin für die ISR wurde angepasst. |
Version vom 16. August 2023, 10:14 Uhr
Noureddine Ait Ouhamou, 16.08.2023
Die erste Funktion misst die Zeit zwischen den gesendeten Impulsen und errechnet daraus den momentanen Durchfluss. Danach wird der Mittelwert auf zwei Nachkommastellen genau gebildet. Als nächstes wird abgefragt, ob schon 20 Werte vom Flowmeter in die Liste eingetragen wurden. Ist dies der Fall wird der Listenindexzähler flow1_List_Counter auf 0 gesetzt. Wenn der Mittelwert des Durchflusses einen Wert von 0,1 nicht übersteigt, wird der momentane errechnete Durchfluss direkt übernommen und durch vier geteilt, da sich bei geringem Durchfluss die Liste langsam füllt. Anschließend werden große Messspitzen herausgefiltert, die zu sehr vom Mittelwert abweichen. Zuletzt wird der neue Startzeitpunkt zur Durchflussmessung festgelegt und der Interruptzähler wird um eins erhöht. Die zweite Funktion, die mit einem PWM-Signal getriggert wird statt mit einem Timer, gibt die Messwerte der Platine an die MATLAB-GUI weiter und setzt bei keinem Auslösen der Flowmeterfunktion an der entsprechende Stelle in der Liste den Wert auf 0. Zuerst wird abgefragt, ob der Interruptzähler der ersten Funktion auf 0 ist. Tritt dieser Fall auf, wird der Mittelwert des Durchflusses ebenfalls auf 0 gesetzt. Danach wird überprüft, ob der flow1_List_Counter größer als 19 ist. Sobald diese Bedingung erfüllt ist, wird der Zähler zurückgesetzt. Anschließend wird in der Liste an der richtigen Stelle eine 0 gespeichert und der Listenzähler wird um eins erhöht. Zuletzt wird mit einer Printanweisung in dem das Kürzel „B!“ enthalten ist, die Messwerte an die Matlab-GUI gesendet und der Interruptzähler wird auf 0 gesetzt.
Noureddine Ait Ouhamou, 21.06.2023
Die Erfassung des Flowmeters wird von Jan Budnick übernommen. Der Pin für die ISR wurde angepasst.
Armin Rohnen, 16.02.2023
Die Durchflussrate wird über einen ISR an GP13 ermittelt.