Eine der einfachsten und kostengünstigsten Möglichkeiten, Temperaturmessungen in Ihr Arduino-Projekt einzubauen, ist die Verwendung des DS18B20 1-Draht Temperatursensors. Diese Sensoren sind ziemlich präzise und benötigen keine externen Komponenten, um zu funktionieren. Mit nur ein paar Anschlüssen und etwas Arduino-Code kannst du die Temperatur in kürzester Zeit messen!

DS18B20 1-Wire Temperatursensor

DS18B20 ist ein 1-Wire Interface Temperatursensor hergestellt von Dallas Semiconductor Corp. Die einzigartige 1-Wire®-Schnittstelle benötigt nur einen digitalen Pin für die Zwei-Wege-Kommunikation mit einem Mikrocontroller.

Der Sensor wird normalerweise in zwei Formfaktoren geliefert. Einer, der im TO-92-Gehäuse geliefert wird, sieht genauso aus wie ein gewöhnlicher Transistor. Der andere ist eine wasserdichte Sonde, die nützlicher sein kann, wenn man etwas weit entfernt, unter Wasser oder unter der Erde messen muss.

Typen des DS18B20 Temperatursensors

Der DS18B20 Temperatursensor ist ziemlich präzise und benötigt keine externen Komponenten, um zu funktionieren. Er kann Temperaturen von -55°C bis +125°C mit einer Genauigkeit von ±0,5°C messen.

Die Auflösung des Temperatursensors kann vom Benutzer auf 9, 10, 11 oder 12 Bit eingestellt werden. Die Standardauflösung beim Einschalten ist jedoch 12 Bit (d.h. 0,0625°C Genauigkeit).

Der Sensor kann mit einer 3V bis 5,5V Stromversorgung betrieben werden und verbraucht nur 1mA während der aktiven Temperaturumwandlung.

Hier sind die vollständigen Spezifikationen:

Stromversorgung 3V bis 5.5V
Stromaufnahme 1mA
Temperaturbereich -55 bis 125°C
Genauigkeit ±0.5°C
Auflösung 9 bis 12 Bit (wählbar)
Wandlungszeit < 750ms

Mehrere DS18B20 auf einem Bus

Einer der größten Vorteile von DS18B20 ist, dass mehrere DS18B20 auf demselben 1-Draht-Bus koexistieren können.Wire Bus. Da jedes DS18B20 einen eindeutigen, werkseitig eingebrannten 64-Bit-Seriencode hat, ist es einfacher, sie voneinander zu unterscheiden.

Dieses Merkmal kann ein großer Vorteil sein, wenn Sie viele DS18B20 über einen großen Bereich verteilt steuern möchten.

Um zu wissen, wie man die Temperatur von mehreren DS18B20 Temperatursensoren ausliest, schauen Sie sich bitte dieses Tutorial an.

Kopplung mehrerer DS18B20 Digitaler Temperatursensoren mit Arduino

Einer der größten Vorteile von DS18B20 ist, dass mehrere DS18B20 auf dem gleichen 1-Wire Bus koexistieren können. Da jeder DS18B20 einen einzigartigen 64-Bit…

DS18B20 Sensor Pinout

GND ist ein Masse-Pin.

DQ ist ein 1-Wire Datenbus, der mit einem digitalen Pin am Mikrocontroller verbunden werden sollte.

VDD-Pin versorgt den Sensor mit Strom, der zwischen 3,3 und 5V liegen kann.

Verkabelung des DS18B20-Temperatursensors mit dem Arduino

Genug der Theorie, jetzt wird’s praktisch! Schließen wir den DS18B20 an den Arduino an.

Die Anschlüsse sind recht einfach. Beginne mit dem Anschluss von VDD an den 5V-Ausgangspin des Arduino und GND an Masse.

Schließe als nächstes den verbleibenden digitalen Signalpin DQ an den digitalen Pin 2 des Arduino an. Sie müssen auch den 4,7k Pull-up-Widerstand zwischen dem Signal und dem Power-Pin hinzufügen, um die Datenübertragung stabil zu halten. (Interne Pull-ups am Arduino funktionieren nicht)

Achte darauf, dass du den DS18B20 richtig herum einbaust. Wenn du ihn falsch herum anbringst, wird er heiß und geht dann kaputt.

Verkabelung des DS18B20 Temperatursensors mit dem Arduino

Wenn du die wasserdichte Version des DS18B20 verwendest, verbinde den roten Streifen mit 5V, den schwarzen mit Masse und den gelben Streifen mit den Daten, die an den digitalen Pin 2 am Arduino gehen. Sie müssen noch einen 4,7K Pullup-Widerstand von den Daten zu 5V anschließen.

Verkabelung des wasserdichten DS18B20 Temperatursensors mit Arduino

Installation der Bibliothek für DS18B20

Das Dallas 1-Wire Protokoll ist etwas komplex und erfordert einen Haufen Code, um die Kommunikation zu analysieren. Um diese unnötige Komplexität auszublenden, werden wir die Bibliothek DallasTemperature.h installieren, so dass wir einfache Befehle ausgeben können, um Temperaturmesswerte vom Sensor zu erhalten.

Um die Bibliothek zu installieren, navigieren Sie zu Sketch > Include Library > Manage Libraries…Warten Sie auf den Library Manager, um den Bibliotheksindex herunterzuladen und die Liste der installierten Bibliotheken zu aktualisieren.

Filtern Sie Ihre Suche, indem Sie ‚ds18b20‘ eingeben. Es sollte ein paar Einträge geben. Suchen Sie nach „DallasTemperature“ von Miles Burton. Klicken Sie auf diesen Eintrag und wählen Sie dann Installieren.

Diese DallasTemperature-Bibliothek ist eine hardwarespezifische Bibliothek, die Funktionen auf niedrigerer Ebene behandelt. Sie muss mit der One Wire Library gepaart werden, um mit jedem Ein-Draht-Gerät zu kommunizieren, nicht nur mit dem DS18B20. Installiere auch diese Bibliothek.

Arduino Code

Die folgende Skizze gibt dir ein komplettes Verständnis, wie man Temperaturwerte vom DS18B20 Temperatursensor liest und kann als Grundlage für weitere praktische Experimente und Projekte dienen.

#include <OneWire.h>#include <DallasTemperature.h>// Data wire is plugged into digital pin 2 on the Arduino#define ONE_WIRE_BUS 2// Setup a oneWire instance to communicate with any OneWire deviceOneWire oneWire(ONE_WIRE_BUS);// Pass oneWire reference to DallasTemperature libraryDallasTemperature sensors(&oneWire);void setup(void){ sensors.begin();// Start up the library Serial.begin(9600);}void loop(void){ // Send the command to get temperatures sensors.requestTemperatures(); //print the temperature in Celsius Serial.print("Temperature: "); Serial.print(sensors.getTempCByIndex(0)); Serial.print((char)176);//shows degrees character Serial.print("C | "); //print the temperature in Fahrenheit Serial.print((sensors.getTempCByIndex(0) * 9.0) / 5.0 + 32.0); Serial.print((char)176);//shows degrees character Serial.println("F"); delay(500);}

Hier ist, wie die Ausgabe im seriellen Monitor aussieht.

Code-Erklärung:

Der Sketch beginnt mit dem Einbinden der Bibliotheken OneWire.h und DallasTemperature.h und dem Deklarieren des Arduino-Pins, an den der Signal-Pin des Sensors angeschlossen ist.

#include <OneWire.h>#include <DallasTemperature.h>#define ONE_WIRE_BUS 2

Nächste erstellen wir ein One-Wire-Objekt, indem wir den Signal-Pin des Sensors an seinen Konstruktor übergeben. Mit diesem Ein-Draht-Objekt können wir mit jedem Ein-Draht-Gerät kommunizieren, nicht nur mit DS18B20. Um mit dem DS18B20-Sensor zu kommunizieren, müssen wir ein Objekt der DallasTemperature-Bibliothek erstellen und die Referenz des One-Wire-Objekts als Parameter übergeben.

OneWire oneWire(ONE_WIRE_BUS);DallasTemperature sensors(&oneWire);

Wenn ein DallasTemperature-Objekt erstellt ist, können wir die folgenden einfachen Befehle eingeben, um mit dem Sensor zu interagieren.

  • begin() Die Funktion sucht nach angeschlossenen Sensoren auf dem Bus und stellt die Bitauflösung (12 Bit) für jeden ein.
  • requestTemperatures() Die Funktion sendet den Befehl für alle Sensoren auf dem Bus, um eine Temperaturumwandlung durchzuführen.
  • getTempCByIndex(deviceIndex) Die Funktion liest den Temperaturwert vom Sensor und gibt ihn zurück. deviceIndex ist nichts anderes als die Position des Sensors auf dem Bus. Wenn Sie nur einen DS18B20 am Bus verwenden, setzen Sie ihn auf 0.

Weitere nützliche Funktionen in der DallasTemperature.h Bibliothek

Es gibt einige nützliche Funktionen, die Sie mit dem DallasTemperature Objekt verwenden können. Einige davon sind unten aufgeführt:

  • setResolution() Die Funktion setzt die Auflösung des internen Analog-Digital-Wandlers des DS18B20 auf 9, 10, 11 oder 12 Bits, was einer Schrittweite von 0,5°C, 0,25°C, 0,125°C bzw. 0,0625°C entspricht.
  • bool getWaitForConversion() Die Funktion gibt den Wert des waitForConversion-Flags zurück. Sie kann nützlich sein, wenn Sie prüfen wollen, ob eine Temperaturumwandlung abgeschlossen ist.
  • setHighAlarmTemp() & setLowAlarmTemp() Funktion setzt die internen hohen & niedrigen Temperaturalarme für ein Gerät in Grad Celsius. Der gültige Bereich ist -55 bis 125°C
  • bool hasAlarm() Die Funktion gibt true zurück, wenn das Gerät einen Alarmzustand hat, wenn die Temperatur die eingestellte hohe & niedrige Alarmtemperatur überschreitet.

admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

lg