INHALT
Wie schließe ich einen DS18B20- und DS18B22-Temperatursensor an den Arduino an, um mit der OneWire-Bibliothek ein Thermometer zu erstellen? Im Gegensatz zum DHT11 Temperatur- und Feuchtigkeitssensor arbeitet der Sensor über einen weiten Temperaturbereich und ist in der Lage, negative Temperaturen zu messen. Der integrierte Temperatursensor DS18B20 für den Arduino hat eine Messauflösung von bis zu 0,0625 °C.
Bestandteile:
- Arduino Uno / Arduino Nano / Arduino Mega
- Temperatursensor DS18B20
- LEDs und Widerstände
- Breadboard
- Dupont-Kabel
- Bibliothek DallasTemperature.h et OneWire.h
Der digitale Sensor ds18b20 sendet Daten über den Wire-Bus und kann auf derselben Leitung mit vielen anderen Geräten arbeiten. Jeder Sensor hat seinen eigenen persönlichen 64-Bit-Code, so dass der Arduino-Mikrocontroller auf demselben Bus mit mehreren Sensoren gleichzeitig kommunizieren kann. Der Sensor wandelt die Umgebungstemperatur in einen digitalen Code um, d.h. es ist kein zusätzlicher ADC für den Anschluss erforderlich.
Temperatursensor DS18B20 Arduino pinout, datasheet
Merkmale des Temperatursensor DS18B20 (datasheet)
- Versorgungsspannung: 3.3 – 5V
- Temperaturmessbereich -55 … +125 °C
- Der Sensorfehler übersteigt nicht 0,5 °C
- Die Auflösung erreicht 0,0625 °C
- Der DS18B20-Sensor wird während der Produktion kalibriert
- Es können bis zu 127 Sensoren in einer Linie angeschlossen werden
- Für den Anschluss werden nur 3 Drähte benötigt
Die Bibliothek für Arduino DallasTemperature Sensors OneWire macht die Arbeit mit dem DS18B20 Sensor viel leichter und einfacher. Die Beschreibung der DallasTemperature.h-Bibliothek besagt, dass der Sensor durch ein paar einfache Funktionen gesteuert wird, die auf dieser Seite vorgestellt werden. Der Schaltplan des Sensors ändert sich nicht, und Sie können die DallasTemperature.h-Bibliothek von unserer Website herunterladen.
Wie man einen DS18B20 an einen Arduino anschließt
Für den Anschluss des DS18b20 an den Arduino sollte ein Breadboard verwendet werden. Schließen Sie das mittlere Bein des Sensors (DATA) an den digitalen Pin 2 des Arduino-Boards an und ziehen Sie diesen Bus über einen 4,7-kOhm-Widerstand auf die +5-Volt-Leitung. Verbinden Sie den DS18B20 Temperatursensor mit dem Arduino Uno Mikrocontroller gemäß dem Diagramm im Bild oben und laden Sie den folgenden Sketch.
Programm für Temperaturmessung mit dem DS18B20 Arduino
#include "OneWire.h" #include "DallasTemperature.h" OneWire oneWire(A1); // Anschlussstift des Sensors DallasTemperature ds(&oneWire); void setup() { Serial.begin(9600); ds.begin(); } void loop() { ds.requestTemperatures(); Serial.print(ds.getTempCByIndex(0)); Serial.println(" C"); }
- Bevor das Programm geladen wird, müssen die Bibliotheken DallasTemperature und OneWire installiert werden;
- Sie können jeden Pin des Mikrocontrollers für den Sensor verwenden, indem Sie ihn im Sketch angeben.
Anschließen Temperatursensor DS18B20 an den Arduino
Die DS18B20 und DS18B22 arbeiten über die Drahtschnittstelle, diese Anschlussmethode erfordert nur einen Datenbus und einen 4,7kΩ-Widerstand als „Pull-up“. Alle Sensoren enthalten ihren eigenen 64-Bit-Code, der im ROM des Geräts gespeichert ist. Das bedeutet, dass die Anzahl der Sensoren, die mit der OneWire.h-Bibliothek an den Mikrocontroller auf demselben Bus angeschlossen werden können, nahezu unbegrenzt ist.
Programm für Temperatur messen mit dem mehrerer DS18B20
#include "OneWire.h" #include "DallasTemperature.h" OneWire oneWire(A1); // Anschlussstift des Sensors DallasTemperature ds(&oneWire); byte num; void setup() { Serial.begin(9600); ds.begin(); num = ds.getDeviceCount(); // die Anzahl der Sensoren zu ermitteln Serial.print("Number: "); Serial.println(num); } void loop() { // Schleife for so viele Sensoren auf dem Bus wie gefunden werden for (byte i = 0; i < num; i++){ Serial.print("Sensor "); Serial.print(i); Serial.print(": "); ds.requestTemperatures(); Serial.print(ds.getTempCByIndex(i)); Serial.println(" C"); } Serial.println(""); }
- Die for-Schleife wird so oft ausgeführt, wie die Anzahl der Sensoren auf einer Sammelschiene erkannt wird.
Schlussfolgerung. Der Sensor kann in mehreren Varianten hergestellt werden, nur das Anschlussschema des Temperatursensors an Arduino Nano oder Uno hängt davon ab. Im ersten Fall muss ein 4,7 kOhm Pull-Up-Widerstand verwendet werden. Der Sensor ist als Standardmodul bereits mit einem Widerstand ausgestattet. Die dritte Option ist ein Sensor in einem versiegelten Gehäuse, der sicher in heißem Wasser verwendet werden kann.
hallo,
leider kommen bei mir die Sensoren DS18b20 mit -127 Grad raus und die werden anscheinend nicht erkannt. Unter Python und auf einem Raspberry werden sie erkannt. Irgend eine Idee?