| Das Große RennenDHT11 contra DS18B20 mit ESP32In dem Versuch werden zwei digitale Temperatursensoren, DHT11 und DS18B20, miteinander verglichen, um festzustellen, ob
bei der Temperaturerfassung Unterschiede auftreten. Beide Sensoren sind in der Welt des Arduino und Raspberry Pi bekannt und
populär. In diesem Fall werden sie an den Mikrocontroller ESP32 angeschlossen. Die Temperaturwerte werden auf einem LCD Display
angezeigt und in Minutentakt manuell notiert. Zum Vergleich werden gleichzeitig Messwerte eines Thermometers aufgenommen. Die so
ermittelten Temperaturkurven sollen anschließend zeigen, welcher der beiden Sensoren zuverlässiger arbeitet. Zum Zeitpunkt des
Versuches konnten beide Sensoren z.B. bei Amazon zum Preis von 1 bis 3 Euro erworben werden. Beide Sensoren arbeiten mit einer
Spannung von 3,3 VDC bis 5VDC und sind damit ohne weitere Maßnahmen für den Mikrocontroller ESP32
geeignet. Temperatursensor DHT11Der Sensor DHT11 kann Temperatur und Feuchtigkeit erfassen. Die Daten werden seriell zu einem Mikrocontroller geliefert. Die versprochene Genauigkeit bei Temperaturerfassung liegt bei +/- 2 °C. DHT11Temperatursensor DS18B20Der digitale Temperatursensor DS18B20 kann Temperatur im Bereich von -55 °C bis +125 °C erfassen und verspricht eine Genauigkeit von +/- 0,5 °C. DS18B20Mikrocontroller ESP32Der Mikrocontroller ESP32 fungiert in der Schaltung als der Koordinator. Die ausgelesenen Temperaturmesswerte werden
auf einem Display angezeigt. Mit einem akustischen Signal meldet der Mikrocontroller, wann die Daten notiert
werden sollen. HeizfolieFür die Temperaturerhöhung in unserem Versuchsbehälter wird eine selbstklebende Polyesterheizfolie zuständig sein. Die Heizfolie arbeitet mit 12 V und hat eine Leistung von 36 W. Ihre Abmessungen betragen 137 x 320 mm, ihre maximale Dauerbelastung liegt im Bereich -40 °C bis 95 °C. Lüfter XKS4010M12SEin kleiner PC-Lüfter übernimmt die Rolle eines Umluftventilators. Er verteilt gleichmäßig die Luft in dem
gesamten Versuchsbehälter. Er sorgt damit u.a. auch dafür, dass die Heizfolie während des Versuchs nicht
überhitzt. Der bürstenlose CPU-Lüfter XKS4010M12S arbeitet mit 12 VDC und hat eine Stromaufnahme von 0,08A. Die
Abmessungen betragen 40x40x10 mm. Er hat drei Anschlüsse, zwei für Versorgungsspannung, der dritte Anschluss ist Tachoausgang.
Sein Gewicht beträgt 17g. Der Geräuschpegel liegt bei 0.03 dB. Die Lüftergeschwindigkeit liegt bei
5000 U/min (± 10 %). Die Drehzahl kann mit der Eingangsspannung oder via PWM gesteuert werden. Am Tachoausgang werden pro
Umdrehung zwei Impulse ausgegeben.
|
Der Schaltplan
Die Schaltung arbeitet mit drei unterschiedlichen Spannungen. Die Haupteinspeisung beträgt 12 VDC. Diese Spannung
wird direkt zu dem Lüfter und der Heizfolie geführt. Darüber hinaus versorgt sie den Spannungsregler (hier mit einer 7-Segmentanzeige),
mit dem sie auf 5 VDC heruntergeregelt wird. Die 5V nutzen wir als Versorgung des Mikrocontrollers ESP32. Des Weiteren wird mit der
Spannung auch das Display versorgt. Die beiden Sensoren DHT11 und DS18B20 werden mit 3,3 VDC versorgt. Diese Spannung liefert
wiederum das Modul des Mikrocontrollers (Pin 3V3).
Die Testschaltung
Versuchsanordnung
Um das Temperaturspektrum ein wenig zu erweitern, nutzen wir bei dem Versuch einen Kühlbeutel mit Kühlflüssigkeit,
der in einem Gefrierschrank etwas vorgekühlt wird. Für Temperaturanhebung kommt eine Heizfolie zum Einsatz. Die komplette
Versuchseinrichtung mit Temperatursensoren, Lüfter, Heizfolie und Kühlbeutel wird unkompliziert mit einem Deckel eines
Kuchenbehälters abgedeckt.
// Bibliothek für LC Display #include "LiquidCrystal_I2C.h" // 20x4 anbinden LiquidCrystal_I2C lcd(0x27,20,4); // Adresse, Zeichen, Zeilen #include "DHT.h" // Bibliothek DHT11 anbinden DHT dht(26, DHT11); // Pin, Sensortyp #include "OneWire.h" // Bibliothek DS18B20 anbinden #include "DallasTemperature.h" OneWire oneWire(4); DallasTemperature Sensor(&oneWire); int Summer = 14; int Sekundenzaehler = 0; // ****************************************************************************** SetUp void setup() { lcd.init(); // Display initialisieren lcd.backlight(); // Hintergrundbeleuchtung lcd.setCursor(0,0); // Cursor Position lcd.print("DHT11 contra DS18B20"); // Displayausgabe Sensor.begin(); // DS18B20 initialisieren dht.begin(); // DHT11 initialisieren pinMode (Summer, OUTPUT); // Ausgang Summer } // ********************************************************************** Hauptprogramm void loop() { float Temp_DHT11 = dht.readTemperature(); // Temperatur DHT11 auslesen lcd.setCursor(0,2); // Display Ausgabe lcd.print ("DHT11: " + String(Temp_DHT11) + " " + char(223) + "C "); Sensor.requestTemperatures(); // Temp. DS18B20 auslesen float Temp_DS18B20 = Sensor.getTempCByIndex(0); lcd.setCursor(0,3); // Display Ausgabe lcd.print ("DS18B20: " + String(Temp_DS18B20) + " " + char(223) + "C "); Sekundenzaehler++; // Sek. zählen + anzeigen lcd.setCursor(0,1); lcd.print (String(Sekundenzaehler) + " "); if (Sekundenzaehler == 60) { Sekundenzaehler = 0; digitalWrite (Summer, HIGH); // Nach 60 Sek. Summer Ein } delay (1000); // Nach 1 Sek Wiederholung digitalWrite (Summer, LOW); // Summer Aus }
Eine kleine Voruntersuchung ergab, dass bei einer konstanten Temperatur alle drei Temperatursensoren nahezu gleiche Temperaturwerte melden. In diesem Fall ist also eine Kalibrierung nicht notwendig. In dem Programm werden die Messwerte einmal pro Sekunde abgerufen und auf dem Display angezeigt. Einmal pro Minute ertönt für eine Sekunde der Summer. Er markiert den Zeitpunkt, wo man die Messwerte aufschreiben soll. Mit einem Zähler, dessen aktueller Stand ebenfalls auf dem Display angezeigt wird, werden die abgelaufenen Sekunden angezeigt.
Die Ergebnisse zeigen, dass beide digitale Temperatursensoren DHT11 und DS18B20 nahezu identische Ergebnisse liefern.
Die meisten Unterschiede lagen unter 0,5 °C, keiner von ihnen überstieg die 1 °C Marke. Die Kurvenverläufe der beiden Sensoren
weichen etwas stärker von dem Kurvenverlauf des Vergleich-Thermometers ab. Das ist darauf zurückzuführen, dass die Sensoren größere
Trägheit haben und etwas mehr Zeit benötigen, um die aktuelle Temperatur richtig zu erfassen.
Kurzvideo
Google-Suche auf MEINE-SCHALTUNG.de : |