Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Schaltungen
- Schritt 2: Methode
- Schritt 3: TMP36 - Erster Test
- Schritt 4: Ergebnisse der Potentiometer-Substitution
- Schritt 5: Durchschnittswerte und ein Ergebnis
- Schritt 6: DS18B20 - Erstprüfung
- Schritt 7: DS18B20 funktioniert gut
- Schritt 8: DHT22 und DHT11
- Schritt 9: DHT22 Ergebnisse
- Schritt 10: DTH11-Test
- Schritt 11: BME680
- Schritt 12: Welche sollte ich verwenden?
- Schritt 13: Weitere Gedanken und Experimente
- Schritt 14: Vollständiges Diagramm
- Schritt 15: Schlussfolgerungen
Video: Temperatursensoren testen - Welcher für mich? - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
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
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
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
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
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
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
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
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
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
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
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
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?
- 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
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
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
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:
Arduino Auto-Rückfahrwarnsystem - Schritt für Schritt: 4 Schritte
Arduino Auto-Rückfahrwarnsystem | Schritt für Schritt: In diesem Projekt entwerfe ich eine einfache Arduino-Auto-Rückwärts-Parksensorschaltung mit Arduino UNO und dem Ultraschallsensor HC-SR04. Dieses Arduino-basierte Car-Reverse-Warnsystem kann für eine autonome Navigation, Roboter-Ranging und andere Entfernungsr
So verwenden Sie Tinkercad zum Testen und Implementieren Ihrer Hardware – wikiHow
So verwenden Sie Tinkercad zum Testen und Implementieren Ihrer Hardware: Die Schaltungssimulation ist eine Technik, bei der Computersoftware das Verhalten einer elektronischen Schaltung oder eines Systems simuliert. Neue Designs können getestet, bewertet und diagnostiziert werden, ohne die Schaltung oder das System tatsächlich aufzubauen. Schaltungssimulation kann ein
Testen Sie einen bipolaren Transistor (außerhalb des Stromkreises): 3 Schritte
Testen Sie einen bipolaren Transistor (außerhalb des Stromkreises): Sie haben ein Ein-Transistor-Projekt erstellt und es hat großartig funktioniert, aber jetzt funktioniert es nicht mehr. Sie entscheiden, dass der Transistor möglicherweise defekt ist. Sie sind sich jedoch nicht sicher, wie Sie es testen können. Dieses Instructable dient zum Testen eines Transistors, nachdem er aus dem
LESEN SIE MICH ZUERST: So richten Sie den ultimativen Mac Mini Supercomputer ein - wikiHow
LESEN SIE MICH ZUERST: So richten Sie den ultimativen Mac Mini Supercomputer ein: Der Mac Mini ist im Grunde ein Laptop ohne Bildschirm und ohne Tastatur oder Maus. Sie würden sich denken, wer zum Teufel wird dieses Ding benutzen? Dieser Computer verbraucht jedoch weniger Strom als die meisten Glühbirnen, funktioniert hervorragend, und
Testen Sie die Netzwerk- und Internetlatenz (nur Windows): 3 Schritte
Testen Sie Netzwerk- und Internetlatenz (nur Windows): Zunächst einmal ist die Latenz bekannt. Verzögerung. Dieses anweisbare wird Ihnen beibringen, wie Sie Ihre Konnektivität zum Netzwerk für Windows überprüfen. Sie benötigen die Eingabeaufforderung, aka. CMD, für dieses instructable. Haftungsausschluss: Ich habe das auf WikiHow gefunden und dachte, ich sollte