Inhaltsverzeichnis:

Temperatursensoren testen - Welcher für mich? - Gunook
Temperatursensoren testen - Welcher für mich? - Gunook

Video: Temperatursensoren testen - Welcher für mich? - Gunook

Video: Temperatursensoren testen - Welcher für mich? - Gunook
Video: Wie funktionieren Temperatursensoren? | Thermoelemente, Pt100, PTC und NTC 2024, November
Anonim
Temperatursensoren testen - Welcher für mich?
Temperatursensoren testen - Welcher für mich?

Einer der ersten Sensoren, die Neulinge im Bereich Physical Computing ausprobieren möchten, ist ein Temperatursensor. Vier der beliebtesten Sensoren sind der TMP36, der über einen analogen Ausgang verfügt und einen Analog-Digital-Wandler benötigt, der DS18B20, der eine Eindrahtverbindung verwendet, der DHT22 oder der etwas billigere DHT11, der nur einen digitalen Pin benötigt, aber auch liefert einen Feuchtigkeitsmesswert, und schließlich der BME680, der I2C verwendet (auch mit SPI auf einigen Breakout-Boards) und Temperatur, Feuchtigkeit, Gas (VOC) und atmosphärischen Druck angibt, aber etwas mehr kostet.

Ich möchte sehen, wie genau sie sind, und alle Vor- oder Nachteile entdecken. Ich besitze bereits ein genaues Quecksilberthermometer, das aus dem Farbfotodruck aus der Zeit der chemischen Verarbeitung übrig geblieben ist, um sie zu vergleichen. (Werfen Sie niemals etwas weg - Sie werden es später brauchen!)

Ich werde CircuitPython und ein Adafruit Itsybitsy M4-Entwicklungsboard für diese Tests verwenden. Für alle Geräte stehen passende Treiber zur Verfügung.

Lieferungen

Meine erste Liste:

  • Itsybitsy M4 Express-Mikrocontroller
  • Micro-USB-Kabel - zum Programmieren
  • TMP36
  • DS18B20
  • 4.7K Ohm Widerstand
  • DHT22
  • BME680
  • Multimeter
  • Steckbrett oder Streifenbrett
  • Anschlusskabel

Schritt 1: Schaltungen

Schaltungen
Schaltungen

Die orangefarbenen Drähte sind 3,3 V

Die schwarzen Drähte sind GND

An der Unterseite der Platine befinden sich Testpunkte zum Messen von Spannungen. (3,3 V, GND und TMP36 Analogausgang)

Die mittleren Buchsen sind von links nach rechts:

  • TMP36: 3,3 V, analoger Signalausgang, GND
  • DS18B20: GND, digitaler Signalausgang, 3,3 V
  • DHT22: 3,3 V, Signalausgang, leer, GND
  • BME680: 3.3v, SDA, SCL, leer, GND

Der rückseitige Stecker, zum Anschluss an das IB M4E Board, von links nach rechts

  • 3,3 V
  • TMP36 - Analogausgang an Pin A2
  • Masse
  • DS18B20 Digitalausgang an Pin D3 - grün
  • DHT22 Digitalausgang an Pin D2 - gelb
  • SDA - weiß
  • SCL - rosa

Der 4,7 kOhm Widerstand ist ein Pullup vom Signal auf 3,3 V für eine Eindrahtverbindung am DS18B20.

Auf der Rückseite des Boards befinden sich 2 geschnittene Spuren:

Unter dem linken Ende der rosa und weißen Drähte. (Unter dem gelben Draht.)

Schritt 2: Methode

Methode
Methode

Für jeden Sensor schreibe ich ein kurzes Skript, um die Temperatur (und andere Elemente, falls verfügbar) mehrmals auszulesen und die Temperatur mit meinem Quecksilber(Hg)-Thermometer zu vergleichen. Ich werde schauen, wie nah die Temperatur mit dem Quecksilbermesswert übereinstimmt und ob die Messwerte konstant/konsistent sind.

Ich werde mir auch die Dokumentation ansehen, um zu sehen, ob die Messwerte der erwarteten Genauigkeit entsprechen und ob etwas getan werden kann, um Verbesserungen vorzunehmen.

Schritt 3: TMP36 - Erster Test

TMP36 - Erster Test
TMP36 - Erster Test
TMP36 - Erster Test
TMP36 - Erster Test

Das linke Bein ist 3,3 V, das rechte Bein ist GND und das mittlere Bein ist eine analoge Spannung, die die Temperatur mit der folgenden Formel darstellt. TempC = (Millivolt - 500) / 10

750 Millivolt ergeben also eine Temperatur von 25 C

Hier scheint es ein paar Probleme zu geben. Die Temperatur des „normalen“Quecksilberthermometers ist viel niedriger als die des TMP36 und die Messwerte sind nicht sehr konstant – es gibt etwas „Jitter“oder Rauschen.

Der TMP36-Sensor sendet eine der Temperatur proportionale Spannung aus. Diese muss vom A/D-Wandler gelesen werden, bevor die Temperatur berechnet wird. Lassen Sie uns die Spannung mit einem Multimeter direkt vom Sensormittelbein ablesen und mit dem Ergebnis des A/D vergleichen. Der Messwert vom mittleren Bein mit meinem Multimeter beträgt 722 Millivolt, viel niedriger und ein sehr konstanter Messwert.

Es gibt zwei Dinge, die wir versuchen können. Ersetzen Sie den TMP36 durch ein Potentiometer und passen Sie die Spannung in der Berechnung an die tatsächliche Spannung des Mikrocontrollers an. Wir werden dann sehen, ob die berechnete Spannung näher liegt und ob das Rauschen / Jitter reduziert wird.

Lassen Sie uns die tatsächliche Spannung messen, die vom Mikrocontroller und dem A / D verwendet wird. Dies wurde mit 3,3 V angenommen, ist aber tatsächlich nur 3,275 V.

Schritt 4: Ergebnisse der Potentiometer-Substitution

Ergebnisse der Potentiometer-Substitution
Ergebnisse der Potentiometer-Substitution

Das ist viel besser. Die Messwerte liegen im Bereich von wenigen Millivolt mit viel weniger Rauschen. Dies deutet darauf hin, dass das Rauschen eher vom TMP36 als vom A/D stammt. Die Anzeige auf dem Messgerät ist immer stabil - kein Jitter. (Das Messgerät „glättet“möglicherweise die verwackelte Ausgabe.)

Eine Möglichkeit, die Situation zu verbessern, kann darin bestehen, einen durchschnittlichen Messwert zu nehmen. Nehmen Sie schnell zehn Messungen vor und verwenden Sie den Durchschnitt. Ich werde auch die Standardabweichung berechnen, während ich das Programm ändere, um einen Hinweis auf die Streuung der Ergebnisse zu geben. Ich werde auch die Anzahl der Messwerte innerhalb einer Standardabweichung vom Mittelwert zählen – je höher, desto besser.

Schritt 5: Durchschnittswerte und ein Ergebnis

Durchschnittliche Messwerte und ein Ergebnis
Durchschnittliche Messwerte und ein Ergebnis

Es gibt immer noch viel Rauschen und der Messwert des TMP36 ist immer noch höher als der des Quecksilberthermometers. Um das Rauschen zu reduzieren, habe ich einen 100NF-Kondensator zwischen Signal und GND eingefügt

Ich habe dann im Internet nach anderen Lösungen gesucht und diese gefunden: https://www.doctormonk.com/2015/02/accurate-and-re… Dr. Monk schlägt vor, einen 47 k Ohm Widerstand zwischen Signal und GND einzubauen.

www.desert-home.com/2015/03/battery-operate… Während dieser Typ vorschlägt, 15 Messwerte in eine Reihenfolge zu bringen und den Mittelwert von 5 zu bilden.

Ich habe das Skript und die Schaltung modifiziert, um diese Vorschläge aufzunehmen, und eine Ablesung vom Quecksilberthermometer hinzugefügt.

Zu guter Letzt! Jetzt haben wir stabile Messwerte im Genauigkeitsbereich der Gerätebeschreibung.

Dies war ein ziemlicher Aufwand, um den Sensor zum Laufen zu bringen, der nur eine Herstellergenauigkeit von:

Genauigkeit - Höchste (Niedrigste): ± 3 ° C (± 4 ° C) Sie kosten nur etwa 1,50 USD (£ 2)

Schritt 6: DS18B20 - Erstprüfung

DS18B20 - Erstprüfung
DS18B20 - Erstprüfung

Sei sehr vorsichtig. Dieses Paket sieht dem TMP36 sehr ähnlich, aber die Beine sind umgekehrt mit 3,3 V rechts und GND links. Der Signalausgang ist in der Mitte. Damit dieses Gerät funktioniert, benötigen wir einen 4,7 k Ohm Widerstand zwischen Signal und 3,3 V. Dieses Gerät verwendet das One-Wire-Protokoll und wir müssen ein paar Treiber in den lib-Ordner des Itsybitsy M4 Express herunterladen.

Dies kostet etwa $4 / £4Technische Daten:

  • Nutzbarer Temperaturbereich: -55 bis 125 °C (67 °F bis +257 °F)
  • 9 bis 12 Bit wählbare Auflösung
  • Verwendet 1-Wire-Schnittstelle - erfordert nur einen digitalen Pin für die Kommunikation
  • Eindeutige 64-Bit-ID in Chip eingebrannt
  • Mehrere Sensoren können sich einen Pin teilen
  • ±0,5°C Genauigkeit von -10°C bis +85°C
  • Temperaturgrenzalarmsystem
  • Die Abfragezeit beträgt weniger als 750 ms
  • Verwendbar mit 3,0 V bis 5,5 V Leistung

Das Hauptproblem bei diesem Sensor besteht darin, dass er die Dallas 1-Wire-Schnittstelle verwendet und nicht alle Mikrocontroller über einen geeigneten Treiber verfügen. Wir haben Glück, es gibt einen Treiber für den Itsybitsy M4 Express.

Schritt 7: DS18B20 funktioniert gut

DS18B20 funktioniert gut
DS18B20 funktioniert gut

Dies zeigt ein tolles Ergebnis.

Ein stetiger Satz von Messwerten ohne zusätzlichen Arbeits- und Rechenaufwand. Die Messwerte liegen im erwarteten Genauigkeitsbereich von ±0,5 °C im Vergleich zu meinem Quecksilberthermometer.

Es gibt auch eine wasserdichte Version für etwa 10 US-Dollar, die ich in der Vergangenheit mit gleichem Erfolg verwendet habe.

Schritt 8: DHT22 und DHT11

DHT22 und DHT11
DHT22 und DHT11

Der DHT22 verwendet einen Thermistor, um die Temperatur zu erhalten und kostet etwa 10 $ / £ 10 und ist der genauere und teurere Bruder des kleineren DHT11. Es verwendet auch eine Eindrahtschnittstelle, ist jedoch NICHT kompatibel mit dem Dallas-Protokoll, das mit dem DS18B20 verwendet wird. Es misst sowohl die Luftfeuchtigkeit als auch die Temperatur. Diese Geräte benötigen manchmal einen Pull-Up-Widerstand zwischen 3,3 V und dem Signalpin. In diesem Paket ist bereits eine installiert.

  • Kostengünstig
  • 3 bis 5 V Strom und I/O
  • 2,5 mA maximaler Stromverbrauch während der Konvertierung (während der Datenanforderung)
  • Gut für 0-100% Feuchtigkeitsmessungen mit 2-5% Genauigkeit
  • Gut für Temperaturmessungen von -40 bis 80 °C ±0,5 °C Genauigkeit
  • Nicht mehr als 0,5 Hz Abtastrate (einmal alle 2 Sekunden)
  • Körpergröße 27 mm x 59 mm x 13,5 mm (1,05" x 2,32" x 0,53")
  • 4 Stifte, 0,1" Abstand
  • Gewicht (nur DHT22): 2,4g

Im Vergleich zum DHT11 ist dieser Sensor genauer, genauer und arbeitet in einem größeren Temperatur-/Feuchtigkeitsbereich, aber er ist größer und teurer.

Schritt 9: DHT22 Ergebnisse

DHT22 Ergebnisse
DHT22 Ergebnisse

Das sind hervorragende Ergebnisse mit sehr geringem Aufwand. Die Messwerte sind ziemlich konstant und innerhalb der erwarteten Toleranz. Die Luftfeuchtigkeitsmessung ist ein Bonus.

Sie können nur jede Sekunde Messungen vornehmen.

Schritt 10: DTH11-Test

DTH11-Test
DTH11-Test

Mein Quecksilberthermometer zeigte 21,9 Grad C an. Dies ist ein ziemlich alter DHT11, den ich aus einem alten Projekt geholt habe, und der Luftfeuchtigkeitswert unterscheidet sich stark von den DHT22-Messwerten von vor ein paar Minuten. Es kostet etwa 5 / 5 £.

Seine Beschreibung umfasst:

  • Gut für 20-80% Feuchtigkeitsmessungen mit 5% Genauigkeit
  • Gut für 0-50°C Temperaturmessungen ±2 °C Genauigkeit - weniger als der DTH22

Die Temperatur scheint noch im Genauigkeitsbereich zu liegen, aber ich traue den Feuchtigkeitsmesswerten dieses alten Geräts nicht.

Schritt 11: BME680

BME680
BME680

Dieser Sensor enthält Temperatur-, Feuchtigkeits-, Luftdruck- und VOC-Gassensorfunktionen in einem einzigen Gehäuse, ist jedoch der teuerste der hier getesteten Sensoren. Es kostet ungefähr £18,50 / $22. Es gibt ein ähnliches Produkt ohne Gassensor, das etwas günstiger ist.

Dies ist ein Goldstandard-Sensor der fünf. Der Temperatursensor ist genau und mit geeigneten Treibern sehr einfach zu bedienen. Diese Version verwendet I2C, aber das Breakout-Board von Adafruit kann auch SPI verwenden.

Wie der BME280 & BMP280 kann dieser Präzisionssensor von Bosch die Luftfeuchtigkeit mit einer Genauigkeit von ±3 %, den Luftdruck mit einer absoluten Genauigkeit von ±1 hPa und die Temperatur mit einer Genauigkeit von ±1,0 °C messen. Da sich der Druck mit der Höhe ändert und die Druckmessungen so gut sind, können Sie ihn auch als Höhenmesser mit ±1 Meter oder besserer Genauigkeit verwenden!

In der Dokumentation steht, dass der Gassensor eine gewisse "Einbrennzeit" benötigt.

Schritt 12: Welche sollte ich verwenden?

Welches sollte ich verwenden?
Welches sollte ich verwenden?
  • Der TMP36 ist sehr billig, klein und beliebt, aber ziemlich schwierig zu bedienen und kann ungenau sein.
  • Der DS18B20 ist klein, genau, günstig, sehr einfach zu bedienen und hat eine wasserdichte Version.
  • Der DTH22 zeigt auch Feuchtigkeit an, ist preisgünstig und einfach zu bedienen, aber möglicherweise zu langsam.
  • Der BME680 leistet viel mehr als die anderen, ist aber teuer.

Wenn ich nur Temperatur haben möchte, würde ich den DS18B20 mit einer Genauigkeit von ±0,5 °C verwenden, aber mein Favorit ist der BME680, weil er so viel mehr kann und in einer Vielzahl verschiedener Projekte eingesetzt werden kann.

Ein letzter Gedanke. Stellen Sie sicher, dass Sie Ihren Temperatursensor in ausreichendem Abstand vom Mikroprozessor halten. Bei einigen Raspberry Pi HATs kann die Wärme der Hauptplatine den Sensor erwärmen, was zu einem falschen Messwert führt.

Schritt 13: Weitere Gedanken und Experimente

Weitere Gedanken und Experimente
Weitere Gedanken und Experimente

Vielen Dank an gulliverrr, ChristianC231 und pgagen für Ihre Kommentare zu dem, was ich bisher getan habe. Es tut mir leid für die Verspätung, aber ich war im Urlaub in Irland und habe seit ein paar Wochen keinen Zugriff auf mein Elektronik-Kit.

Hier ist ein erster Versuch, die Zusammenarbeit der Sensoren zu zeigen.

Ich habe ein Skript geschrieben, um die Sensoren nacheinander auszulesen und die Temperaturwerte alle 20 Sekunden oder so auszudrucken.

Ich habe das Kit für eine Stunde in den Kühlschrank gestellt, um alles abzukühlen. Ich habe es an den PC angeschlossen und Mu dazu gebracht, die Ergebnisse auszudrucken. Die Ausgabe wurde dann kopiert, in eine.csv-Datei (kommagetrennte Variablen) umgewandelt und Grafiken aus den Ergebnissen in Excel erstellt.

Es dauerte ungefähr drei Minuten, nachdem das Kit aus dem Kühlschrank genommen wurde, bevor die Ergebnisse aufgezeichnet wurden, sodass in diesem Zeitraum ein gewisser Temperaturanstieg stattgefunden hatte. Ich vermute, dass die vier Sensoren unterschiedliche Wärmekapazitäten haben und sich daher unterschiedlich schnell erwärmen würden. Es wird erwartet, dass die Erwärmungsrate abnimmt, wenn sich die Sensoren der Raumtemperatur nähern. Ich habe dies mit meinem Quecksilberthermometer mit 24,4°C aufgezeichnet.

Die großen Temperaturunterschiede zu Beginn der Kurven könnten auf die unterschiedliche Wärmekapazität der Sensoren zurückzuführen sein. Ich freue mich zu sehen, dass die Linien gegen Ende zusammenlaufen, wenn sie sich der Raumtemperatur nähern. Ich bin besorgt, dass der TMP36 immer viel höher ist als die anderen Sensoren.

Ich habe die Datenblätter nachgeschlagen, um die beschriebene Genauigkeit dieser Geräte noch einmal zu überprüfen

TMP36

  • ±2°C Genauigkeit über Temperatur (typ.)
  • ±0,5 °C Linearität (typ.)

DS18B20

±0,5°C Genauigkeit von -10°C bis +85°C

DHT22

Temperatur ±0,5 °C

BME680

Temperatur mit ±1.0°C Genauigkeit

Schritt 14: Vollständiges Diagramm

Vollständige Grafik
Vollständige Grafik

Sie können nun sehen, dass sich die Sensoren irgendwann eingependelt haben und sich in der Temperatur mehr oder weniger innerhalb der beschriebenen Genauigkeit einig waren. Bei einem Abzug von 1,7 Grad von den TMP36-Werten (±2°C wird erwartet) besteht eine gute Übereinstimmung zwischen allen Sensoren.

Als ich dieses Experiment zum ersten Mal durchführte, verursachte der DHT22-Sensor ein Problem:

main.py-Ausgabe:

14.9, 13.5, 10.3, 13.7

15.7, 14.6, 10.5, 14.0

16.6, 15.6, 12.0, 14.4

18.2, 16.7, 13.0, 15.0

18.8, 17.6, 14.0, 15.6

19.8, 18.4, 14.8, 16.2

21.1, 18.7, 15.5, 16.9

21.7, 19.6, 16.0, 17.5

22.4, 20.2, 16.5, 18.1

23.0, 20.7, 17.1, 18.7

DHT-Lesefehler: ('DHT-Sensor nicht gefunden, Verkabelung prüfen',)

Traceback (letzter Anruf zuletzt):

Datei "main.py", Zeile 64, in

Datei "main.py", Zeile 59, in get_dht22

NameError: lokale Variable, auf die vor der Zuweisung verwiesen wird

Also habe ich das Skript modifiziert, um dieses Problem zu lösen, und die Aufnahme neu gestartet:

DHT-Lesefehler: ('DHT-Sensor nicht gefunden, Verkabelung prüfen',)

25.9, 22.6, -999.0, 22.6

DHT-Lesefehler: ('DHT-Sensor nicht gefunden, Verkabelung prüfen',)

25.9, 22.8, -999.0, 22.7

25.9, 22.9, 22.1, 22.8

25.9, 22.9, 22.2, 22.9

DHT-Lesefehler: ('DHT-Sensor nicht gefunden, Verkabelung prüfen',)

27.1, 23.0, -999.0, 23.0

DHT-Lesefehler: ('DHT-Sensor nicht gefunden, Verkabelung prüfen',)

27.2, 23.0, -999.0, 23.1

25.9, 23.3, 22.6, 23.2

DHT-Lesefehler: ('DHT-Sensor nicht gefunden, Verkabelung prüfen',)

28.4, 23.2, -999.0, 23.3

DHT-Lesefehler: ('DHT-Sensor nicht gefunden, Verkabelung prüfen',)

26.8, 23.1, -999.0, 23.3

26.5, 23.2, 23.0, 23.4

26.4, 23.3, 23.0, 23.5

26.4, 23.4, 23.1, 23.5

26.2, 23.3, 23.1, 23.6

Beim zweiten Lauf hatte ich keine Probleme. Die Adafruit-Dokumentation warnt davor, dass die DHT-Sensoren manchmal Messwerte verpassen.

Schritt 15: Schlussfolgerungen

Schlussfolgerungen
Schlussfolgerungen

Diese Kurve zeigt deutlich, dass die höhere Wärmekapazität einiger Sensoren ihre Reaktionszeit verlängert.

Alle Sensoren erfassen steigende und fallende Temperaturen.

Sie sind nicht sehr schnell bei einer neuen Temperatur.

Sie sind nicht sehr genau. (Sind sie gut genug für eine Wetterstation?)

Möglicherweise müssen Sie Ihren Sensor mit einem vertrauenswürdigen Thermometer kalibrieren.

Empfohlen: