Weltweiter kostenloser Versand ab 120 € Bestellwert – Zahlung mit PayPal und Stripe – Hergestellt in Finnland

Digitale Signalverarbeitung: Kompromisse zwischen Rauschen, Reaktionszeit und Stromverbrauch

Ein idealer Sensor würde immer ein exakt korrektes Ergebnis liefern. Wenn die Temperatur zum Beispiel 22,4371 °C (72,38678 °F) beträgt, würden wir hoffen, dass unser Sensor immer 22,4371 °C als Temperaturmessung ausgibt. Es gibt jedoch verschiedene reale Phänomene, die verhindern, dass der Sensor den gewünschten Wert liefert.

Heute konzentrieren wir uns auf Rauschen und Sprungantwort und werfen einen kurzen Blick auf Auflösung, absolute Genauigkeit und Stromverbrauch. Als Beispiel verwenden wir den Umweltsensor BME280 auf dem RuuviTag.

Fangen wir mit der Auflösung an. Im obigen Beispiel beträgt die „echte“ Temperatur 22,4371 °C, der BME280 auf dem RuuviTag kann jedoch nur eine Auflösung von 2 Dezimalstellen bei der Temperatur liefern, d. h. 22,44 °C mit Rundung. Es ist möglich, Oversampling und Rauschen zu nutzen, um die Auflösung zu verbessern; Wikipedia bietet dazu eine hervorragende Erklärung. Für diesen Blogbeitrag betrachten wir die Sensorauflösung als „harte Grenze“ dafür, wie gut die Messung sein kann, die wir erhalten.

Während unser Sensor Messungen mit einer Auflösung von 0,01 °C liefern kann, liegt die absolute Genauigkeit bei 0,5 °C bei 25 °C und 1,0 °C bei 0 … 65 °C. Das bedeutet, dass sowohl 21,94 °C als auch 22,94 °C „korrekte“ Ergebnisse für den BME280 wären.

Obwohl zwei verschiedene Sensoren bei der absoluten Temperatur um ein Grad Celsius voneinander abweichen können, sollte der Unterschied zwischen zwei Messwerten desselben Sensors viel geringer sein. Der BME280 ist mit einem RMS-Rauschen (Root-Mean-Square) von nur 0,005 °C spezifiziert. Schauen wir uns eine simulierte Messreihe dieser beiden Beispiel-Sensoren an, von denen einer einen Offset von +0,25 °C und der andere von -0,25 °C hat.

Zwei simulierte Messreihen
Zwei simulierte Messreihen

Die tatsächliche Temperatur liegt in der Mitte, aber das können wir aus den Messungen nicht wirklich wissen. Schließlich könnte die echte Temperatur 22,7 °C betragen, wobei die blaue Linie fast exakt korrekt wäre und die grüne Linie einen Offset von -0,5 °C hätte – oder umgekehrt.

Es gibt keine Möglichkeit, die absolute Genauigkeit dieser Messungen zu verbessern. Wir könnten einen dritten Sensor nehmen und hoffen, dass er noch weiter von der echten Temperatur entfernt ist, wodurch der Bereich der echten Temperaturwerte, in dem alle Messungen noch gültig sind, eingeschränkt wird. Wir können jedoch das Rauschen mithilfe von DSP verbessern.

Der Umweltsensor BME280 bietet eine integrierte Signalverarbeitung, nämlich Oversampling (OS) und IIR-Filterung (Infinite Impulse Response). Oversampling bedeutet, dass eine Reihe von Messungen in schneller Folge durchgeführt und diese gemittelt werden. Wenn die Messung ein zufälliges Rauschen aufweist (was immer der Fall ist), wird dieses Rauschen herausgemittelt. IIR bedeutet, dass die Historie früherer Messungen in die neue Messung „mitgenommen“ wird. Während IIR zur Implementierung vieler verschiedener Filter verwendet werden kann, verfügt der BME280 über einen Tiefpassfilter, was bedeutet, dass schnelle Signaländerungen unterdrückt werden. Da sich ein tiefpassgefiltertes Signal nicht schnell ändern kann, wird das Rauschen reduziert.

Zoomen wir in das blaue Signal oben hinein und schauen uns IIR und OS für dieses Signal an.

Simulierte Messungen und Ausgabewerte
Punkte stellen simulierte Messungen dar und Linien sind Ausgabewerte

Wir erinnern uns, dass die „echte“ Temperatur 22,4371 °C betrug und der Offset 0,25 °C war. Daher sollte die durchschnittlich gemeldete Temperatur nahe bei 22,687 liegen, und das scheint sehr gut mit dem in den Linien sichtbaren Ergebnis übereinzustimmen. Es ist anzumerken, dass diese Simulation nicht auf die Auflösung des BME280 gerundet wurde, das Ergebnis bleibt jedoch auch bei einer Rundung bestehen:

Berechnete Oversampling-Werte
Wir haben ein wenig geschummelt und den Oversampling-Wert bei jeder Probe berechnet: In der Realität würde der BME280 keine rohen Oversampling-Werte für die DSP-Verarbeitung ausgeben.

Mit dem theoretischen Wissen über Oversampling und IIR machen wir uns nun an die praktische Erprobung mit einem Staubsauger, einem Vakuumbeutel und RuuviTags, die mit verschiedenen Oversampling- und IIR-Raten konfiguriert sind.

RuuviTags unter Druck
Der Druck ändert sich im Inneren der RuuviTags fast augenblicklich, daher ist er ideal für die Messung der Sprungantwort.
RuuviTag-Druckgrafik
Wenn sich der Druck ändert, reagiert der höchste IIR am langsamsten und benötigt fast eine Minute, um sich auf den neuen Wert einzupendeln.

Wie erwartet verlangsamt das IIR-Sampling die Reaktion. In diesem Bild ist jedoch kein Rauschen zu erkennen, da die relativen Änderungen so groß sind. Um das Rauschen zu betrachten, schauen wir uns die Standardabweichung der Messungen über einen längeren Zeitraum an.

Druck- und Standardabweichungswerte über einige Stunden
Druck- und Standardabweichungswerte über einige Stunden

Optisch sieht es so aus, als ob die Grafik mit 16-fachem Oversampling am „saubersten“ ist und die wenigsten Wellen aufweist. Die Grafik der Standardabweichung scheint dieses intuitive Ergebnis zu bestätigen: Die Standardabweichung ist am geringsten, d. h. die Messwerte weichen am wenigsten voneinander ab.

Die letzte Überlegung gilt dem Stromverbrauch. Oversampling bedeutet buchstäblich, zusätzliche Messungen vorzunehmen, und jede Aktion kostet Energie. Die Programme wurden hinsichtlich ihres Stromverbrauchs analysiert, und es wurde festgestellt, dass das Programm mit 16-fachem Oversampling im Durchschnitt 20 µA mehr verbraucht. Sofern keine schnellen Reaktionszeiten erforderlich sind, eignet sich IIR daher besser für den Ruuvi-Anwendungsfall eines stationären Sensors.

Das Fazit aus diesen Experimenten ist, dass alles ein Kompromiss ist. Das Rauschen von Messungen kann auf viele Arten reduziert werden, z. B. durch OS oder IIR. Beide Methoden sind jedoch mit Kosten verbunden: OS verbraucht mehr Strom und IIR erhöht die Reaktionszeit des Sensors. Es gibt keinen idealen oder „besten“ Algorithmus; die verwendeten DSP-Methoden müssen auf die jeweilige Anwendung abgestimmt werden.