KY-001 Temperatursensor (DS18B20)
Das Digitalthermometer DS18B20 bietet 9-Bit- bis 12-Bit-Celsius-Temperaturmessungen.
- Arduino
- Raspberry Pi
- Raspberry Pi Pico
- Micro:Bit
Das Digitalthermometer DS18B20 bietet 9-Bit- bis 12-Bit Celsius-Temperaturmessungen und verfügt über eine Alarmfunktion mit nichtflüchtigen, benutzerprogrammierbaren, oberen und unteren Auslösepunkten.
Dies bedeutet, dass der Sensor über eine programmierbare Ober- und Untergrenze verfügt. Das DS18B20 kommuniziert über einen 1-Wire-Bus, welcher nur eine Datenleitung für die Kommunikation mit einem zentralen Mikroprozessor benötigt. Darüber hinaus kann der DS18B20 die Stromversorgung direkt von der Datenleitung beziehen ("parasite power"). Dadurch entfällt die Notwendigkeit einer externen Spannungsquelle. Jedes DS18B20 besitzt einen einzigartigen 64-Bit-Seriencode. Dadurch können mehrere Sensoren auf demselben 1-Wire Bus agieren und über nur einen Mikroprozessor ausgewertet werden.
Zu den Anwendungen, die von dieser Funktion profitieren können, gehören HVAC-Umgebungssteuerungen, Temperaturüberwachungssysteme in Gebäuden, Anlagen oder Maschinen, sowie Prozessüberwachungs- und Steuerungssysteme.
Technische Daten
Chipsatz | DS18B20 |
Kommunikationsprotokoll | 1-Wire |
Genauigkeit | 9 bis 12 Bit |
Messbereich | –55°C bis +125°C |
Messgenauigkeit | ±0.5°C von -10°C bis +85°C |
Pin-Belegung
Codebeispiel Arduino
Anschlussbelegung Arduino:
Arduino | Sensor |
---|---|
Pin 4 | Signal |
5V | +V |
GND | GND |
Für das folgende Codebeispiel werden zwei zusätzliche Bibliotheken benötigt:
OneWire Library von Paul Stoffregen | veröffentlicht unter der MIT License
Dallas Temperature Control Library von Miles Burton | veröffentlicht unter LGPL
Beide Bibliotheken sind im Paket enthalten und müssen vor dem Start der Arduino IDE in den "library"-Ordner kopiert werden.
Diesen finden Sie standardmäßig unter dem folgenden Pfad Ihrer Windows-Installation:
C:\Benutzer\[Benutzername]\Dokumente\Arduino\Bibliotheken
Hierbei handelt es sich um ein Beispielprogramm, welches nach der Initialisierung des Sensors die gemessene Temperatur seriell ausgibt.
// Erforderliche Bibliotheken werden importiert
#include <OneWire.h>
#include <DallasTemperature.h>
// Hier wird der Eingangspin deklariert, an den das Sensormodul angeschlossen wird
#define KY001_Signal_PIN 4
// Bibliotheken werden konfiguriert
OneWire oneWire(KY001_Signal_PIN);
DallasTemperature sensors(&oneWire);
void setup() {
// Initialisierung des seriellen Ausgangs
Serial.begin(9600);
Serial.println("KY-001 Temperaturmessung");
// Sensor wird initialisiert
sensors.begin();
}
// Hauptprogrammschleife
void loop()
{
// Temperaturmessung wird gestartet...
sensors.requestTemperatures();
// ... und die gemessene Temperatur wird ausgeben
Serial.print("Temperatur: ");
Serial.print(sensors.getTempCByIndex(0));
Serial.println(" °C");
delay(1000); // 1s Pause bis zur nächsten Messung
}
Beispielprogramm Download
Das Digitalthermometer DS18B20 bietet 9-Bit- bis 12-Bit Celsius-Temperaturmessungen und verfügt über eine Alarmfunktion mit nichtflüchtigen, benutzerprogrammierbaren, oberen und unteren Auslösepunkten.
Dies bedeutet, dass der Sensor über eine programierbare Ober- und Untergrenze verfügt. Das DS18B20 kommuniziert über einen 1-Wire-Bus, welcher nur eine Datenleitung für die Kommunikation mit einem zentralen Mikroprozessor benötigt. Darüber hinaus kann der DS18B20 die Stromversorgung direkt von der Datenleitung beziehen ("parasite power"). Dadurch entfällt die Notwendigkeit einer externen Spannungsquelle. Jedes DS18B20 besitzt einen einzigartigen 64-Bit-Seriencode. Dadurch können mehrere Sensoren auf demselben 1-Wire Bus agieren und über nur einen Mikroprozessor ausgewertet werden.
Zu den Anwendungen, die von dieser Funktion profitieren können, gehören HVAC-Umgebungssteuerungen, Temperaturüberwachungssysteme in Gebäuden, Anlagen oder Maschinen, sowie Prozessüberwachungs- und Steuerungssysteme.
Technische Daten
Chipsatz | DS18B20 |
Kommunikationsprotokoll | 1-Wire |
Genauigkeit | 9 bis 12 Bit |
Messbereich | –55°C bis +125°C |
Messgenauigkeit | ±0.5°C von -10°C bis +85°C |
Pin-Belegung
Codebeispiel Raspberry Pi
Anschlussbelegung Raspberry Pi:
Raspberry Pi | Sensor |
---|---|
GPIO4 [Pin 7] | Signal |
3,3V [Pin 1] | +V |
GND [Pin 6] | GND |
One-Wire Konfiguration Raspberry Pi
Damit der Raspberry Pi über den One-Wire-Bus mit dem der DS18B20-Sensor kommunizieren kann, muss er zunächst aktiviert werden. Geben Sie dazu den folgenden Befehl ein:
sudo raspi-config
Gehen Sie nun auf Interface Options und aktivieren Sie die 1-Wire Schnittstelle. Ihr Raspberry Pi sollte danach automatisch neu starten. Oder Sie können den folgenden Befehl verwenden, um manuell neu zu starten:
sudo reboot
Nun können Sie das folgende Beispiel anwenden. Hierbei wird eine Konsolenausgabe generiert, sobald ein Signal detektiert wird.
Hierbei handelt es sich um ein Beispielprogramm, welches nach der Initialisierung des Sensors die gemessene Temperatur seriell ausgibt.
# SPDX-FileCopyrightText: 2019 Mikey Sklar for Adafruit Industries
#
# SPDX-License-Identifier: MIT
import glob
import time
base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'
def read_temp_raw():
f = open(device_file, 'r')
lines = f.readlines()
f.close()
return lines
def read_temp():
lines = read_temp_raw()
while lines[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines = read_temp_raw()
equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_c = float(temp_string) / 1000.0
temp_f = temp_c * 9.0 / 5.0 + 32.0
return temp_c, temp_f
while True:
print(read_temp())
time.sleep(1)
Beispielprogramm Download
Zu starten mit dem Befehl:
sudo python3 KY001-RPi.py
Das Digitalthermometer DS18B20 bietet 9-Bit- bis 12-Bit Celsius-Temperaturmessungen und verfügt über eine Alarmfunktion mit nichtflüchtigen, benutzerprogrammierbaren, oberen und unteren Auslösepunkten.
Dies bedeutet, dass der Sensor über eine programierbare Ober- und Untergrenze verfügt. Das DS18B20 kommuniziert über einen 1-Wire-Bus, welcher nur eine Datenleitung für die Kommunikation mit einem zentralen Mikroprozessor benötigt. Darüber hinaus kann der DS18B20 die Stromversorgung direkt von der Datenleitung beziehen ("parasite power"). Dadurch entfällt die Notwendigkeit einer externen Spannungsquelle. Jedes DS18B20 besitzt einen einzigartigen 64-Bit-Seriencode. Dadurch können mehrere Sensoren auf demselben 1-Wire Bus agieren und über nur einen Mikroprozessor ausgewertet werden.
Zu den Anwendungen, die von dieser Funktion profitieren können, gehören HVAC-Umgebungssteuerungen, Temperaturüberwachungssysteme in Gebäuden, Anlagen oder Maschinen, sowie Prozessüberwachungs- und Steuerungssysteme.
Technische Daten
Chipsatz | DS18B20 |
Kommunikationsprotokoll | 1-Wire |
Genauigkeit | 9 bis 12 Bit |
Messbereich | –55°C bis +125°C |
Messgenauigkeit | ±0.5°C von -10°C bis +85°C |
Pin-Belegung
Codebeispiel Micro:Bit
Anschlussbelegung Micro:Bit:
Micro:Bit | Sensor |
---|---|
Pin 1 | Signal |
3V | +V |
GND | GND |
Für das folgende Codebeispiel wird eine zusätzliche Library benötigt:
pxt-ds18b20 von DFRobot | veröffentlicht unter der GUI License.
Fügen Sie die Library zu Ihrer IDE hinzu, indem Sie auf "Erweiterungen" klicken und die folgende URL in das Suchfeld eingeben: https://github.com/DFRobot/pxt-ds18b20.git.
Bestätigen Sie die Suche mit [Enter].
Hierbei handelt es sich um ein Beispielprogramm, welches nach der Initialisierung des Sensors die gemessene Temperatur seriell ausgibt.
Beispielprogramm Download
Das Digitalthermometer DS18B20 bietet 9-Bit- bis 12-Bit Celsius-Temperaturmessungen und verfügt über eine Alarmfunktion mit nichtflüchtigen, benutzerprogrammierbaren, oberen und unteren Auslösepunkten.
Dies bedeutet, dass der Sensor über eine programierbare Ober- und Untergrenze verfügt. Das DS18B20 kommuniziert über einen 1-Wire-Bus, welcher nur eine Datenleitung für die Kommunikation mit einem zentralen Mikroprozessor benötigt. Darüber hinaus kann der DS18B20 die Stromversorgung direkt von der Datenleitung beziehen ("parasite power"). Dadurch entfällt die Notwendigkeit einer externen Spannungsquelle. Jedes DS18B20 besitzt einen einzigartigen 64-Bit-Seriencode. Dadurch können mehrere Sensoren auf demselben 1-Wire Bus agieren und über nur einen Mikroprozessor ausgewertet werden.
Zu den Anwendungen, die von dieser Funktion profitieren können, gehören HVAC-Umgebungssteuerungen, Temperaturüberwachungssysteme in Gebäuden, Anlagen oder Maschinen, sowie Prozessüberwachungs- und Steuerungssysteme.
Technische Daten
Chipsatz | DS18B20 |
Kommunikationsprotokoll | 1-Wire |
Genauigkeit | 9 bis 12 Bit |
Messbereich | –55°C bis +125°C |
Messgenauigkeit | ±0.5°C von -10°C bis +85°C |
Pin-Belegung
Codebeispiel Raspberry Pi Pico
Anschlussbelegung Raspberry Pi Pico:
Raspberry Pi Pico | Sensor |
---|---|
GPIO2 | Signal |
3,3V | +V |
GND | GND |
Für das folgende Codebeispiel werden zwei zusätzliche Bibliotheken benötigt:
OneWire Library von Damien P. George | veröffentlicht unter der MIT-Lizenz.
DS18x20 Library von Damien P. George | veröffentlicht unter der MIT-Lizenz.
Hierbei handelt es sich um ein Beispielprogramm, welches nach der Initialisierung des Sensors die gemessene Temperatur seriell ausgibt.
# Bibliotheken laden
import machine, onewire, ds18x20
from time import sleep
# Initialisierung von GPIO2
ds_pin = machine.Pin(10)
# Initialisierung des Sensorobjekts
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
# Suche nach allen passenden Sensoren
roms = ds_sensor.scan()
# Serielle Ausgabe
print("Found DS devices")
print("Temperature (°C)")
# Endlosschleife zur ständigen auslesung der Temperatur
while True:
ds_sensor.convert_temp()
sleep(1)
# Anhand der Anzahl der gefundenen kompatiblen Sensoren wird hoch gezählt
for rom in roms:
# Serielle Ausgabe der gemessenen Temperatur
print(ds_sensor.read_temp(rom))
sleep(3)