KY-001 Temperatursensor (DS18B20)
Das Digitalthermometer DS18B20 bietet 9-Bit- bis 12-Bit-Celsius-Temperaturmessungen.
- Arduino
- Raspberry Pi
- Raspberry Pi Pico
- Micro:Bit
Der DS18B20 ist ein digitales Thermometer, das die Temperatur in Celsius messen kann. Es bietet verschiedene Genauigkeitsstufen von 9 bis 12 Bit. Das bedeutet, dass es sehr genaue Messungen liefern kann, wobei eine höhere Bit-Zahl eine genauere Temperaturmessung ermöglicht. Der Messbereich des DS18B20 liegt zwischen -55°C und +125°C, und die Genauigkeit beträgt ±0,5°C im Bereich von -10°C bis +85°C.
Der DS18B20 verwendet einen sogenannten 1-Wire-Bus, um mit einem Mikroprozessor zu kommunizieren. Das bedeutet, dass nur eine einzige Datenleitung benötigt wird, um Informationen auszutauschen. Der Sensor kann sogar seinen Strom über diese Datenleitung beziehen, sodass keine zusätzliche Stromquelle notwendig ist. Diese Betriebsart wird als "parasite power" bezeichnet.
Jeder DS18B20-Sensor hat einen einzigartigen 64-Bit-Seriencode. Dies ist wie eine einmalige Kennnummer für jeden Sensor. Dadurch können mehrere DS18B20-Sensoren an denselben 1-Wire-Bus angeschlossen werden und trotzdem individuell erkannt und ausgelesen werden. Dies ermöglicht die einfache Implementierung von Netzwerken mit mehreren Sensoren.
Dieser Sensor ist besonders nützlich in vielen Anwendungen, wie zum Beispiel in Heizungs-, Lüftungs- und Klimaanlagen (HVAC), zur Temperaturüberwachung in Gebäuden oder Maschinen und in Systemen zur Prozessüberwachung und -steuerung. Weitere Anwendungsgebiete sind medizinische Geräte, industrielle Steuerungssysteme und die Temperaturüberwachung in Kühlsystemen.
Zusammengefasst bietet der DS18B20 eine präzise und flexible Lösung für die Temperaturmessung mit einfacher Verkabelung und der Möglichkeit zur Integration in komplexe Systeme mit mehreren Sensoren.
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 |
Anschlussbelegung
Arduino | Sensor |
---|---|
Pin 4 | Signal |
5V | +V |
GND | GND |
Code-Beispiel
Um das folgende Codebeispiel auf Ihren Arduino zu laden, empfehlen wir die Verwendung der Arduino IDE. In der IDE können Sie den passenden Port und das richtige Board für Ihr Gerät auswählen.
Es werden für das Codebeispiel auch die folgenden Bibliotheken verwendet:
OneWire Library von Paul Stoffregen | veröffentlicht unter der MIT License
Dallas Temperature Control Library von Miles Burton | veröffentlicht unter LGPL
Diese Bibliotheken können Sie bequem über den Bibliotheken-Manager der Arduino IDE hinzufügen. Kopieren Sie anschließend den unten stehenden Code in Ihre IDE. Um den Code auf den Arduino hochzuladen, klicken Sie einfach auf den Upload-Button.
// 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
}
Der DS18B20 ist ein digitales Thermometer, das die Temperatur in Celsius messen kann. Es bietet verschiedene Genauigkeitsstufen von 9 bis 12 Bit. Das bedeutet, dass es sehr genaue Messungen liefern kann, wobei eine höhere Bit-Zahl eine genauere Temperaturmessung ermöglicht. Der Messbereich des DS18B20 liegt zwischen -55°C und +125°C, und die Genauigkeit beträgt ±0,5°C im Bereich von -10°C bis +85°C.
Der DS18B20 verwendet einen sogenannten 1-Wire-Bus, um mit einem Mikroprozessor zu kommunizieren. Das bedeutet, dass nur eine einzige Datenleitung benötigt wird, um Informationen auszutauschen. Der Sensor kann sogar seinen Strom über diese Datenleitung beziehen, sodass keine zusätzliche Stromquelle notwendig ist. Diese Betriebsart wird als "parasite power" bezeichnet.
Jeder DS18B20-Sensor hat einen einzigartigen 64-Bit-Seriencode. Dies ist wie eine einmalige Kennnummer für jeden Sensor. Dadurch können mehrere DS18B20-Sensoren an denselben 1-Wire-Bus angeschlossen werden und trotzdem individuell erkannt und ausgelesen werden. Dies ermöglicht die einfache Implementierung von Netzwerken mit mehreren Sensoren.
Dieser Sensor ist besonders nützlich in vielen Anwendungen, wie zum Beispiel in Heizungs-, Lüftungs- und Klimaanlagen (HVAC), zur Temperaturüberwachung in Gebäuden oder Maschinen und in Systemen zur Prozessüberwachung und -steuerung. Weitere Anwendungsgebiete sind medizinische Geräte, industrielle Steuerungssysteme und die Temperaturüberwachung in Kühlsystemen.
Zusammengefasst bietet der DS18B20 eine präzise und flexible Lösung für die Temperaturmessung mit einfacher Verkabelung und der Möglichkeit zur Integration in komplexe Systeme mit mehreren Sensoren.
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 |
Anschlussbelegung
Raspberry Pi | Sensor |
---|---|
GPIO4 [Pin 7] | Signal |
3,3V [Pin 1] | +V |
GND [Pin 6] | GND |
Code-Beispiel
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)
Der DS18B20 ist ein digitales Thermometer, das die Temperatur in Celsius messen kann. Es bietet verschiedene Genauigkeitsstufen von 9 bis 12 Bit. Das bedeutet, dass es sehr genaue Messungen liefern kann, wobei eine höhere Bit-Zahl eine genauere Temperaturmessung ermöglicht. Der Messbereich des DS18B20 liegt zwischen -55°C und +125°C, und die Genauigkeit beträgt ±0,5°C im Bereich von -10°C bis +85°C.
Der DS18B20 verwendet einen sogenannten 1-Wire-Bus, um mit einem Mikroprozessor zu kommunizieren. Das bedeutet, dass nur eine einzige Datenleitung benötigt wird, um Informationen auszutauschen. Der Sensor kann sogar seinen Strom über diese Datenleitung beziehen, sodass keine zusätzliche Stromquelle notwendig ist. Diese Betriebsart wird als "parasite power" bezeichnet.
Jeder DS18B20-Sensor hat einen einzigartigen 64-Bit-Seriencode. Dies ist wie eine einmalige Kennnummer für jeden Sensor. Dadurch können mehrere DS18B20-Sensoren an denselben 1-Wire-Bus angeschlossen werden und trotzdem individuell erkannt und ausgelesen werden. Dies ermöglicht die einfache Implementierung von Netzwerken mit mehreren Sensoren.
Dieser Sensor ist besonders nützlich in vielen Anwendungen, wie zum Beispiel in Heizungs-, Lüftungs- und Klimaanlagen (HVAC), zur Temperaturüberwachung in Gebäuden oder Maschinen und in Systemen zur Prozessüberwachung und -steuerung. Weitere Anwendungsgebiete sind medizinische Geräte, industrielle Steuerungssysteme und die Temperaturüberwachung in Kühlsystemen.
Zusammengefasst bietet der DS18B20 eine präzise und flexible Lösung für die Temperaturmessung mit einfacher Verkabelung und der Möglichkeit zur Integration in komplexe Systeme mit mehreren Sensoren.
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 |
Anschlussbelegung
Micro:Bit | Sensor |
---|---|
Pin 1 | Signal |
3V | +V |
GND | GND |
Code-Beispiel
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.
basic.forever(function () {
serial.writeValue("temp ", DS18B20.TemperatureNumber(DS18B20.pin.pin1))
basic.pause(1000)
serial.writeLine("temp : " + DS18B20.TemperatureString(DS18B20.pin.pin1))
basic.pause(1000)
basic.showNumber(DS18B20.TemperatureNumber(DS18B20.pin.pin1))
basic.pause(100)
})
Beispielprogramm Download
Der DS18B20 ist ein digitales Thermometer, das die Temperatur in Celsius messen kann. Es bietet verschiedene Genauigkeitsstufen von 9 bis 12 Bit. Das bedeutet, dass es sehr genaue Messungen liefern kann, wobei eine höhere Bit-Zahl eine genauere Temperaturmessung ermöglicht. Der Messbereich des DS18B20 liegt zwischen -55°C und +125°C, und die Genauigkeit beträgt ±0,5°C im Bereich von -10°C bis +85°C.
Der DS18B20 verwendet einen sogenannten 1-Wire-Bus, um mit einem Mikroprozessor zu kommunizieren. Das bedeutet, dass nur eine einzige Datenleitung benötigt wird, um Informationen auszutauschen. Der Sensor kann sogar seinen Strom über diese Datenleitung beziehen, sodass keine zusätzliche Stromquelle notwendig ist. Diese Betriebsart wird als "parasite power" bezeichnet.
Jeder DS18B20-Sensor hat einen einzigartigen 64-Bit-Seriencode. Dies ist wie eine einmalige Kennnummer für jeden Sensor. Dadurch können mehrere DS18B20-Sensoren an denselben 1-Wire-Bus angeschlossen werden und trotzdem individuell erkannt und ausgelesen werden. Dies ermöglicht die einfache Implementierung von Netzwerken mit mehreren Sensoren.
Dieser Sensor ist besonders nützlich in vielen Anwendungen, wie zum Beispiel in Heizungs-, Lüftungs- und Klimaanlagen (HVAC), zur Temperaturüberwachung in Gebäuden oder Maschinen und in Systemen zur Prozessüberwachung und -steuerung. Weitere Anwendungsgebiete sind medizinische Geräte, industrielle Steuerungssysteme und die Temperaturüberwachung in Kühlsystemen.
Zusammengefasst bietet der DS18B20 eine präzise und flexible Lösung für die Temperaturmessung mit einfacher Verkabelung und der Möglichkeit zur Integration in komplexe Systeme mit mehreren Sensoren.
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 |
Anschlussbelegung
Raspberry Pi Pico | Sensor |
---|---|
GPIO10 | Signal |
3,3V | +V |
GND | GND |
Code-Beispiel
Um das folgende Codebeispiel auf Ihren Pico zu laden, empfehlen wir die Verwendung von der Thonny IDE. Sie müssen nur zunächst unter Run > Configure interpreter … > Interpreter > Which kind of interpreter should Thonny use for running your code? > MicroPython (Raspberry Pi Pico) auswählen.
Es werden für das Codebeispiel die folgenden Bibliotheken verwendet:
OneWire Library von Damien P. George | veröffentlicht unter der MIT-Lizenz.
DS18x20 Library von Damien P. George | veröffentlicht unter der MIT-Lizenz.
Um diese Bibliotheken zu verwenden, müssen Sie sich die oben verlinkten py-Dateien herunterladen und auf den Pico in einem Ordner namens lib (Sie müssen diesen ggf. erstellen) laden. Danach können Sie den untenstehenden Code nun in Ihre IDE kopieren und klicken Sie auf Run.
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 GPIO10
ds_pin = machine.Pin(10)
# Initialisierung vom DS18B20
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
# Suche nach allen passenden Sensoren
roms = ds_sensor.scan()
# Serielle Ausgabe
print("KY-001 Temperaturmessung")
# 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("Temperatur:", round(ds_sensor.read_temp(rom), 2), "°C")
sleep(1)