El DS18B20-Sensor erfreut sich dank seiner Zuverlässigkeit und Vielseitigkeit bei der Temperaturmessung großer Beliebtheit. Aufgrund seiner einfachen Handhabung und der Möglichkeit, mehrere Sensoren an denselben Bus anzuschließen, wird es häufig in Elektronikprojekten mit Mikrocontrollern wie Arduino, PIC oder ESP8266 verwendet, was es zu einer idealen Option sowohl für Amateure als auch für Profis macht.
Einer der Hauptvorteile dieses Sensors besteht darin, dass er für die Datenkommunikation über das Protokoll nur ein Kabel benötigt 1-Draht, was die Integration in verschiedenste Projekte erleichtert. Darüber hinaus kann der DS18B20 in bis zu zwei verschiedenen Leistungsmodi betrieben werden, was ihn noch flexibler macht. In diesem Artikel erklären wir ausführlich, wie es funktioniert, wie Sie mehrere Sensoren anschließen können und wie Sie Ihre Temperaturmessungen optimieren.
DS18B20-Funktionen
Der DS18B20 wird hergestellt von Maxim Integrated unter anderem und wird in verschiedenen Kapselungen präsentiert, wobei das Format ist TO-92 (ähnlich dem vieler Transistoren) einer der häufigsten. Darüber hinaus ist es auch in versiegelter und wasserdichter Ausführung erhältlich, was es ideal für die Temperaturmessung in rauen oder feuchten Umgebungen macht.
Zu den bemerkenswertesten Merkmalen des DS18B20 gehören:
- Der Temperaturbereich, den es messen kann, deckt ab -55 °C bis 125 °C, wodurch es für industrielle und private Anwendungen geeignet ist.
- Su programmierbare Auflösung kann zwischen variieren 9 und 12 BitDies ermöglicht eine präzise Anpassung an die Anforderungen jedes Projekts.
- Jeder Sensor hat eine eindeutige Adresse 64 BitsDies erleichtert die Identifizierung mehrerer Sensoren, die an denselben Bus angeschlossen sind.
DS18B20-Leistungsmodi
Der Sensor kann in zwei Leistungsmodi betrieben werden und bietet so Flexibilität bei der Integration in verschiedene Projekte, von denen jedes seine eigenen Vorteile hat.
Stromversorgung über Datenpin (Parasite Power)
Dieser Modus ist ideal, wenn der Platz begrenzt ist oder Fernverbindungen benötigt werden. Der DS18B20 bezieht Strom direkt vom Datenpin, wenn dieser hoch ist, und speichert den Strom in einem kleinen Kondensator für den Fall, dass die Datenleitung niedrig ist. Diese Art der Diät nennt man Parasitenkraft.
Es ist jedoch wichtig zu beachten, dass für eine ordnungsgemäße Funktion die Verbindung der Pins erforderlich ist GND y VDD an Land. Zusätzlich empfiehlt sich die Einbindung eines Transistors MOSFET Dies hilft in Situationen, in denen Temperaturumwandlungen mehr Strom benötigen.
Stromversorgung über eine externe Quelle
Die gebräuchlichste und empfohlene Art, den DS18B20 mit Strom zu versorgen, ist die Verwendung einer externen Quelle, die an den Pin angeschlossen ist VDD. Diese Methode garantiert eine stabile Spannung unabhängig vom Datenverkehr auf dem 1-Wire-Bus, was bei Projekten, die eine konstante Präzision erfordern, von Vorteil ist.
So verwenden Sie den DS18B20 mit Arduino
Um mit diesem Sensor auf der Arduino-Plattform arbeiten zu können, müssen zwei grundlegende Bibliotheken verwendet werden: OneWire y DallasTemperatur. Diese Bibliotheken erleichtern die Kommunikation und ermöglichen eine einfache Durchführung von Auslesungen und Konfigurationen.
OneWire-Bibliothek: Ermöglicht die Kommunikation über das 1-Wire-Protokoll. Es kann unter heruntergeladen werden GitHub-Repository.
Dallas BookstoreTemperatur: Es enthält die notwendigen Funktionen zum Auslesen der Temperatur und zum Konfigurieren des Sensors. Laden Sie es herunter von dieser Link.
Sobald Sie beide Bibliotheken installiert haben, können Sie ohne Komplikationen mit der Arbeit mit dem Sensor beginnen. Nachfolgend erklären wir einige Beispiele zum Ablesen der Temperatur und zum Arbeiten mit mehreren Sensoren.
Beispiel 1: Temperaturmessung mit einem einzelnen Sensor
Um eine Temperaturmessung mit einem einzelnen DS18B20 durchzuführen, der an einen Arduino angeschlossen ist, umfasst die Grundschaltung einfach den Anschluss des Datenpins des Sensors an den digitaler Pin 2 des Arduino, zusammen mit einem Widerstand Klimmzug von 4.7 kΩ.
Dies ist der grundlegende Code zum Lesen der Sensortemperatur:
#include <OneWire.h> #include <DallasTemperature.h> OneWire ds(2); DallasTemperature sensors(&ds); void setup() { Serial.begin(9600); sensors.begin(); } void loop() { sensors.requestTemperatures(); float tempC = sensors.getTempCByIndex(0); Serial.print("Temperatura= "); Serial.print(tempC); Serial.println(" °C"); delay(1000); }
Der Code ist recht einfach. Es sind nur ein paar Zeilen in der Hauptschleife erforderlich, um die Temperatur anzufordern und abzulesen, was die Implementierung und Anpassung an verschiedene Verwendungszwecke sehr einfach macht.
Beispiel 2: Verwendung mehrerer Sensoren an verschiedenen Pins
Bei der Arbeit mit mehr als einem DS18B20 gibt es zwei Möglichkeiten, die Sensoren anzuschließen. Die erste besteht darin, jedem Sensor einen anderen digitalen Arduino-Pin zuzuweisen. In diesem Fall wird für jeden Sensor ein 4.7-kΩ-Pull-Up-Widerstand benötigt.
Hier zeigen wir Ihnen ein Beispiel für die Arbeit mit zwei Sensoren, die an verschiedenen Pins angeschlossen sind:
#include <OneWire.h> #include <DallasTemperature.h> OneWire ds1(2); OneWire ds2(3); DallasTemperature sensors1(&ds1); DallasTemperature sensors2(&ds2); void setup() { Serial.begin(9600); sensors1.begin(); sensors2.begin(); } void loop() { sensors1.requestTemperatures(); float temp1 = sensors1.getTempCByIndex(0); sensors2.requestTemperatures(); float temp2 = sensors2.getTempCByIndex(0); Serial.print("Temperatura 1 = "); Serial.print(temp1); Serial.print(" °C Temperatura 2 = "); Serial.println(temp2); delay(1000); }
Beispiel 3: Mehrere Sensoren an einen einzigen Pin angeschlossen
Die andere Möglichkeit, mehrere DS18B20 in einem Projekt zu verbinden, besteht darin, für alle einen einzigen Pin und denselben 1-Wire-Bus zu verwenden. In diesem Fall muss jeder Sensor sein eigenes haben eindeutige Identifikationsnummer, die werksseitig vergeben wird. Hier erklären wir, wie Sie diese Adressen mithilfe des folgenden Codes erhalten:
#include <OneWire.h> OneWire ds(2); void setup(void) { Serial.begin(9600); } void loop(void) { byte address[8]; if (!ds.search(address)) { Serial.println("No more addresses."); ds.reset_search(); delay(250); return; } Serial.print("Address: "); for (int i = 0; i < 8; i++) { Serial.print(address[i], HEX); if (i < 7) Serial.print(", "); } Serial.println(); delay(250); }
Sobald Sie die Adressen aller Sensoren haben, können Sie den jeweiligen Sensor anhand seiner eindeutigen Adresse auslesen. Der folgende Code zeigt Ihnen, wie es geht:
#include <DallasTemperature.h> OneWire ds(2); DallasTemperature sensors(&ds); DeviceAddress sensor1 = {0x28, 0xFF, 0xCA, 0x4A, 0x5, 0x16, 0x3, 0xBD}; DeviceAddress sensor2 = {0x28, 0xFF, 0x89, 0x3A, 0x1, 0x16, 0x4, 0xAF}; void setup() { Serial.begin(9600); sensors.begin(); } void loop() { sensors.requestTemperatures(); float temp1 = sensors.getTempC(sensor1); float temp2 = sensors.getTempC(sensor2); Serial.print("Temp sensor 1: "); Serial.println(temp1); Serial.print("Temp sensor 2: "); Serial.println(temp2); delay(1000); }
Die Vorteile dieser Methode bestehen darin, dass Sie Pins auf dem Arduino einsparen und viele Sensoren parallel an denselben Datenbus anschließen können.
Anhand dieser Beispiele können Sie die Vielseitigkeit und Leistungsfähigkeit des DS18B20-Sensors erkennen. Die Implementierung ist sehr einfach, und wenn Sie mehrere Sensoren anschließen müssen, haben Sie die volle Flexibilität, dies auf unterschiedliche Weise zu tun. Der DS18B20 ist einer der zuverlässigsten Sensoren zur Temperaturmessung und eignet sich dank seines geringen Stromverbrauchs und der einfachen Programmierung perfekt für alle Arten von Projekten.
Der DS18B20-Sensor lässt sich nicht nur einfach mit Arduino verwenden, sondern kann auch in einer Vielzahl von industriellen und privaten Anwendungen eingesetzt werden, beispielsweise zur Temperaturüberwachung in Klimaanlagen, Maschinen oder sogar Gewächshäusern.