In diesem Post geht es darum, wie man mit dem digitalen DS18B20 Temperatursensor (hier auf amazon.de) die Temperatur messen kann. Der DS18B20 hat einen sehr großen Messbereich von -55°C bis +125°C und eine sehr hohe Genauigkeit (maximal 0.5°C Abweichung). Wer sich mit einem rudimentäreren Ergebnis zufrieden geben kann, kann die Temperatur auch nur mit dem Arduino ohne externen Sensor messen.
Verbindung mit dem Arduino
Der DS18B20 hat drei Pins, nämlich Vcc, GND und in der Mitte der Datenpin. Vcc kann mit einer beliebigen Spannung zwischen +3V und +5V verbunden werden, und GND muss mit dem Ground verbunden werden. Der Datenpin muss mit einem digital Pin des Arduino verbunden werden, und desweiteren über einen 4,7kOhm Widerstand (Gelb, Lila, Rot) mit der Versorgungsspannung.
Arduino Sketch
Zur Programmierung des DS18B20 benötigt man zwei Bibliotheken, welche sich jeweils über den Library Manager unter Sketch > Include Library > Manage Libraries herunterladen lassen. Einerseits die OneWire Bibliothek und andererseits die DallasTemperature Bibliothek.
Um nun die Temperatur abzurufen, muss man ein Objekt vom Typ OneWire erzeugen, welches man anschließend als Temperatursensor spezifiziert wird. Über den Befehl requestTemperature() kann man nun von dem erzeugten Objekt die Temperatur anfordern, und beispielsweise über die serielle Konsole ausgeben lassen.
Ein einfacher Beispielsketch sähe so aus:
Ein einfacher Beispielsketch sähe so aus:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <OneWire.h> | |
#include <DallasTemperature.h> | |
#define ONE_WIRE_BUS 2 //digital Pin 2 des Arduino | |
OneWire oneWire(ONE_WIRE_BUS); //Initialisierung des OneWire Objekts | |
DallasTemperature sensors(&oneWire); //Temperatursensor Objekt | |
void setup(void) | |
{ | |
Serial.begin(9600); | |
Serial.println("DS18B20 Temperatursensor:"); | |
sensors.begin(); //Starten des Sensors | |
} | |
void loop(void) | |
{ | |
Serial.print(" Temperatur Abfrage..."); | |
sensors.requestTemperatures(); //Temperatur abfragen | |
Serial.println("ERLEDIGT"); | |
Serial.print("Temperatur des ersten Sensors"); | |
Serial.println(sensors.getTempCByIndex(0)); //Ausgabe der Temperatur vom ersten Sensor | |
} |
Keine Kommentare:
Kommentar veröffentlichen
Mit dem Veröffentlichen eines Kommentars erklären Sie sich mit unserer Datenschutzerklärung einverstanden.
https://michaelsarduino.blogspot.de/p/datenschutzerklarung.html