Messdatenerfassung Multi-MCU: Unterschied zwischen den Versionen

Aus Technische Beeinflussbarkeit der Geschmacksache Kaffee
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
= Noureddine Ait Ouhamou, 21.06.2023 =
= Noureddine Ait Ouhamou, 21.06.2023 =
Die Messwertkonfiguration wurde angepasst. Somit sind die 16-Bit Auflösung des ADCs auf 5000 mV abgebildet worden. Die Umrechnungskurven sind aus dem Datenblatt entnommen und die angegebenen Werte aus dem Programm sind plausibel. Beim Boilerdrucksensor kam es zuerst zu keiner Verbindung, obwohl durch das Testen mit angelegter Spannung im Programm Messwerte ausgelesen wurden. Nach dem der Spannungsteiler überbrückt wurde und entfernt wurde, sind Werte vom Boilerdruck ausgelesen worden. Die Messplatine läuft mit dem Programm ohne Probleme eine Testzeit von 30 min. Dadurch ist das Problem, welches die STM32 hat, dass diese nach 15 min einschläft, behoben.
= Noureddine Ait Ouhamou, 14.06.2023 =
Durch das Verschieben der Messwertspeicherung in die ISR wurde das Problem behoben, dass eine 0 als Mittelwert in der Variable NTC1_mean gespeichert wird. Somit muss die erste Messreihe nicht mehr gelöscht werden. Des Weiteren muss zwischen den einzelnen Messwerten der Mikrocontroller für 2 ms schlafen gelegt werde, damit der ADC bei 860 SPS genug Zeit hat einen neuen Wert auszuwerten. Dadurch hat sich ergeben, dass der ADS1115 die Messgeschwindigkeit limitiert. Je geringer die Konversationsrate des ADCs eingestellt wird, umso länger wird der Multiplexer 4051 die Schalterstellung halten, damit der ADC die angelegte Spannung auswerten kann. Dadurch ergeben sich 6 Messwerte pro Sensor, die an die Matlab GUI gesendet werden können. Eine mögliche Überlegung die Geschwindigkeit der I2C-Leitung zu erhöhen, hat das Problem nicht behoben. Um dies zu verbessern, sollte eine neue Schaltung entworfen werden werden, die einen besseren AD-Wandler unterstützt, mit dem mehr Messwerte in der Sekunde ausgewerten werden und somit die Zeit für das Einhalten der Schalterstellung zu verringern.
Durch das Verschieben der Messwertspeicherung in die ISR wurde das Problem behoben, dass eine 0 als Mittelwert in der Variable NTC1_mean gespeichert wird. Somit muss die erste Messreihe nicht mehr gelöscht werden. Des Weiteren muss zwischen den einzelnen Messwerten der Mikrocontroller für 2 ms schlafen gelegt werde, damit der ADC bei 860 SPS genug Zeit hat einen neuen Wert auszuwerten. Dadurch hat sich ergeben, dass der ADS1115 die Messgeschwindigkeit limitiert. Je geringer die Konversationsrate des ADCs eingestellt wird, umso länger wird der Multiplexer 4051 die Schalterstellung halten, damit der ADC die angelegte Spannung auswerten kann. Dadurch ergeben sich 6 Messwerte pro Sensor, die an die Matlab GUI gesendet werden können. Eine mögliche Überlegung die Geschwindigkeit der I2C-Leitung zu erhöhen, hat das Problem nicht behoben. Um dies zu verbessern, sollte eine neue Schaltung entworfen werden werden, die einen besseren AD-Wandler unterstützt, mit dem mehr Messwerte in der Sekunde ausgewerten werden und somit die Zeit für das Einhalten der Schalterstellung zu verringern.



Version vom 21. Juni 2023, 14:19 Uhr

Noureddine Ait Ouhamou, 21.06.2023

Die Messwertkonfiguration wurde angepasst. Somit sind die 16-Bit Auflösung des ADCs auf 5000 mV abgebildet worden. Die Umrechnungskurven sind aus dem Datenblatt entnommen und die angegebenen Werte aus dem Programm sind plausibel. Beim Boilerdrucksensor kam es zuerst zu keiner Verbindung, obwohl durch das Testen mit angelegter Spannung im Programm Messwerte ausgelesen wurden. Nach dem der Spannungsteiler überbrückt wurde und entfernt wurde, sind Werte vom Boilerdruck ausgelesen worden. Die Messplatine läuft mit dem Programm ohne Probleme eine Testzeit von 30 min. Dadurch ist das Problem, welches die STM32 hat, dass diese nach 15 min einschläft, behoben.

Noureddine Ait Ouhamou, 14.06.2023

Durch das Verschieben der Messwertspeicherung in die ISR wurde das Problem behoben, dass eine 0 als Mittelwert in der Variable NTC1_mean gespeichert wird. Somit muss die erste Messreihe nicht mehr gelöscht werden. Des Weiteren muss zwischen den einzelnen Messwerten der Mikrocontroller für 2 ms schlafen gelegt werde, damit der ADC bei 860 SPS genug Zeit hat einen neuen Wert auszuwerten. Dadurch hat sich ergeben, dass der ADS1115 die Messgeschwindigkeit limitiert. Je geringer die Konversationsrate des ADCs eingestellt wird, umso länger wird der Multiplexer 4051 die Schalterstellung halten, damit der ADC die angelegte Spannung auswerten kann. Dadurch ergeben sich 6 Messwerte pro Sensor, die an die Matlab GUI gesendet werden können. Eine mögliche Überlegung die Geschwindigkeit der I2C-Leitung zu erhöhen, hat das Problem nicht behoben. Um dies zu verbessern, sollte eine neue Schaltung entworfen werden werden, die einen besseren AD-Wandler unterstützt, mit dem mehr Messwerte in der Sekunde ausgewerten werden und somit die Zeit für das Einhalten der Schalterstellung zu verringern.

Noureddine Ait Ouhamou, 30.05.2023

Die Messwertdatenerfassung gibt die richtigen Daten aus. Dabei wird die erste Messreihe nicht weitergegeben, damit die 0 für den Messwert NTC1 nicht verwertet wird. Hinzu kommt, dass durch die 0 die Messwerte in die falsche Liste eingespeichert werden. Die Lösung war jede Liste den richtigen Mittelwert zuzuordnen. Prinzipiell ist in der NTC1 Liste die Messwerte der NTC2 enthalten. Dadurch wird jede Liste um einen Platz weiter verschoben. Jede Schalterstellung braucht zum Umstellen eine Zeit von 10 ms. Daraus resultiert bei 8 möglichen Stellungen eine Messwertzeit um die 80 ms. Somit hat man etwa 10 Messwerte die Sekunde.

Noureddine Ait Ouhamou, 24.05.2023

Mit Hilfe der ISR werden die Daten unterbrochen vom ADC an den Raspberry Pico weitergeleitet und ausgewertet. Dabei ist bei einer Datenrate von 8 Messwerte die Sekunde und eine Pause von 100 ms zwischen den Schalterstellungen des Multiplexers jeder zweite Wert ein Mischwert. Das bedeutet man darf erst immer den 1. + 2n. Wert verwenden. Bei höheren Datenraten wird nach dem Schalten ein Mischwert wiedergegeben und hinterher der richtige Wert. Bei 860 Messwerte die Sekunde entsteht dieser Mischwert nicht mehr. Ohne die Schalterpause wird kontinuierlich 4.096 V ausgegeben.

Noureddine Ait Ouhamou, 23.05.2023

Der ADC wird mit einer Datenrate von 250 Messdaten pro Sekunde betrieben. Dabei wird kein Messwert verworfen. Die Matlab-GUI wird weiterhin den Timer bereitstellen und die Kommunikationszeit vom 1/10 Sekunden aufrecht erhalten. Das Skript befindet sich befindet sich unter Programmcode. In einer while-Schleife wird NTC3 ebenfalls als Kurzschluss ausgelesen, jedoch beim Speichern in die Listen nicht. Da werden die Werte richtig in die Listen eingelesen.

Armin Rohnen, 16.02.2023

Die Messplatine ist dafür ausgelegt, dass diese 8 Messkanäle über einen MCU-externen 16-Bit-ADC erfasst. 4 Messkanäle sind als Spannungseingang 0 bis 5 V ohne weitere Signalaufbereitung lediglich mit einem Tiefpassfilter ausgelegt. 4 weitere Kanäle sind als Temperaturmesskanal für NTC-Sensoren mit einer Referenzspannungsquelle und einem Spannungsteiler und nachgeschaltetem Tiefpassfilter mit angepasstem Verstärkungsfaktor ausgelegt.

Als ADC wird ein ADS1115-Board mit vorgeschaltetem Multiplexer verwendet. Dieser wird in einem kontinuierlichen Mode betrieben, so dass via ISR ein multiplex Messbetrieb gesteuert wird.

Über die Kommunikation zum Basisboard und/oder zur MATLAB®-GUI sollen im 1/10-Sekunden-Raster die Messdaten aller 8 Messkanäle übermittelt werden.

Sollten für Testzwecke die Messkanäle nicht ausreichen, können weitere Messplatinen verwendet werden. Dabei ist jedoch auf die eindeutige MCU-Kennung zu achten.