Arduino: Temperaturmessung mit dem DS1820
Vielleicht erinnert ihr euch noch an unsere DS1820-Anleitung für den Raspberry Pi, dieses mal möchten wir die günstigen One-Wire Sensoren allerdings über einen Arduino auswerten. In der folgenden Anleitung zeigen wir euch die benötigten Bauteile, den zugehörigen Schaltplan sowie ein Demoprogramm für die Auswertung der Temperatursensoren.
Einkaufsliste
Bevor es mit der Temperaturmessung losgehen kann, benötigen wir zunächst einmal die folgenden Bauteile:
Arduino Nano inkl. USB-Kabel – Preis ca. 14 Euro – siehe z.B. bei Amazon*.
DS18b20-Temperaturfühler – Preis ca. 10 Euro – siehe z.B. bei Amazon*.
Widerstände (benötigt wird 4,7 kOhm) – Preis ca. 10 Euro – siehe z.B. bei Amazon*.
Verbindungskabel – Preis ca. 4 Euro – siehe z.B. bei Amazon*.
Lötkolben inkl. Zubehör (optional) – Preis ca. 19 Euro – siehe z.B. bei Amazon*.
Info: Die DS18B20-Sensoren gibt es im übrigen auch als Wasserdichte Outdoor-Variante, diese könnt ihr bereits ab 10 Euro erwerben*.
Schaltplan
Nachdem wir all die Bauteile zusammengetragen haben, schauen wir uns zunächst das Schaltbild an:
Wollt ihr später nicht nur einen, sondern auch mehrere Sensoren auswerten, muss der Aufbau wie folgt aussehen:
Aufbau
Zunächst verbinden wir den GND-Port unserer Arduinos mit dem linken GND-Pin des DS1820-Sensors. Anschließend schließen wir den mittleren DATA-Pin unseres Sensors an den 2. Digital-Pin unseres Arduinos an. Danach verbinden wir noch den VCC-Pin des Temperaturfühlers mit dem 5V-Pin unseres Mikrocontrollers. Abschließend setzen wir noch einen 4.7 kOhm Widerstand zwischen VCC und Data-Verbindung ein.
Auch bei mehreren DS1820-Temperatursensoren benötigt ihr nur einen 4.7 kOhm Widerstand am Anfang der Kette. Weitere Sensoren könnt ihr somit durch einfaches verlängern eurer GND-, DATA- und VCC-Verbindungsleitungen ansteuern.
Demoprogramm
Nachdem wir nun unseren Temperatursensor erfolgreich am Arduino angeschlossen haben, können wir dem Mikrocontroller nun ein Demoprogramm zur Auswertung unseres One-Wire Sensors aufspielen:
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void)
{
Serial.begin(9600);
Serial.println("DS1820 Demo");
sensors.begin();
}
void loop(void)
{
Serial.print("Bitte warten ...");
sensors.requestTemperatures();
Serial.print('n');
Serial.print("Temperatur: ");
Serial.print(sensors.getTempCByIndex(0));
Serial.print('n');
delay(1000);
}
Um nun an die Messdaten zu gelangen, müsst ihr lediglich den seriellen Monitor eurer Arduino IDE öffnen und die passende Baudrate von 9600 einstellen (sollte euer Sensor nicht funktionieren, wird euch in dem Fall eine Temperatur von -127°C angezeigt):
Solltet ihr mehrere Sensoren angeschlossen haben, könnt ihr diese mit dem folgenden Programmcode auswerten:
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void)
{
Serial.begin(9600);
Serial.println("DS1820 Demo");
sensors.begin();
}
void loop(void)
{
Serial.print("Bitte warten ...");
sensors.requestTemperatures();
Serial.print('n');
Serial.print("Temperatur: ");
Serial.print(sensors.getTempCByIndex(0));
Serial.print('n');
// Mehrere Sensoren durch Änderung des Index ausgeben:
Serial.print("Temperatur - Sensor 1: ");
Serial.print(sensors.getTempCByIndex(0));
Serial.print('n');
Serial.print("Temperatur - Sensor 2: ");
Serial.print(sensors.getTempCByIndex(1));
Serial.print('n');
delay(1000);
}
Ein Comment zu "Arduino: Temperaturmessung mit dem DS1820"