KY-001 Temperature sensor (DS18B20)
The DS18B20 digital thermometer provides 9-bit to 12-bit Celsius temperature measurements.
- Arduino
- Raspberry Pi
- Raspberry Pi Pico
- Micro:Bit
![](/files/files/sensors/KY-001/KY-001.png)
The DS18B20 is a digital thermometer that can measure temperature in Celsius. It offers different accuracy levels from 9 to 12 bits. This means that it can provide very accurate measurements, with a higher bit count providing a more accurate temperature measurement. The measuring range of the DS18B20 is between -55°C and +125°C, and the accuracy is ±0.5°C in the range from -10°C to +85°C.
The DS18B20 uses a so-called 1-wire bus to communicate with a microprocessor. This means that only a single data line is needed to exchange information. The sensor can even draw its power from this data line, so no additional power source is required. This mode of operation is called "parasite power".
Each DS18B20 sensor has a unique 64-bit serial code. This is like a unique identification number for each sensor. This means that several DS18B20 sensors can be connected to the same 1-Wire bus and still be individually recognized and read out. This makes it easy to implement networks with multiple sensors.
This sensor is particularly useful in many applications, such as in heating, ventilation and air conditioning (HVAC) systems, for temperature monitoring in buildings or machines and in process monitoring and control systems. Other applications include medical devices, industrial control systems and temperature monitoring in cooling systems.
In summary, the DS18B20 offers a precise and flexible solution for temperature measurement with simple cabling and the possibility of integration into complex systems with multiple sensors.
Technical data
Technical Data | |
---|---|
Chipset | DS18B20 |
Communication Protocol | 1-Wire |
Accuracy | 9 to 12 Bit |
Measuring range | -55 °C to +125 °C |
Measurement accuracy | ±0.5 °C from -10 °C to +85 °C |
Pin assignment
Arduino | Sensor |
---|---|
Pin 4 | signal |
5 V | +V |
GND | GND |
Code-Example:
For the following code example two additional libraries are needed:
OneWire Library by. Paul Stoffregen | published under the MIT License
Dallas Temperature Control Library by Miles Burton | released under LGPL.
Both libraries are included in the package and must be copied to the "library" folder before starting the Arduino IDE.
This can be found by default under the following path of your Windows installation:
C:\user[username]\documents\Arduino\libraries
// Required libraries will be imported
#include <OneWire.h>
#include <DallasTemperature.h>
// Here the input pin is declared to which the sensor module is connected
#define KY001_Signal_PIN 4
// Libraries are configured
OneWire oneWire(KY001_Signal_PIN);
DallasTemperature sensors(&oneWire);
void setup() {
// Initialize serial output
Serial.begin(9600);
Serial.println("KY-001 temperature measurement");
// Sensor is initialized
sensors.begin();
}
//main program loop
void loop()
{
// Temperature measurement is started...
sensors.requestTemperatures();
// ... and output measured temperature
Serial.print("Temperature: ");
Serial.print(sensors.getTempCByIndex(0));
Serial.println(" °C");
delay(1000); // 1s pause until next measurement
}
Example program download
![](/files/files/sensors/KY-001/KY-001.png)
The DS18B20 is a digital thermometer that can measure temperature in Celsius. It offers different accuracy levels from 9 to 12 bits. This means that it can provide very accurate measurements, with a higher bit count providing a more accurate temperature measurement. The measuring range of the DS18B20 is between -55°C and +125°C, and the accuracy is ±0.5°C in the range from -10°C to +85°C.
The DS18B20 uses a so-called 1-wire bus to communicate with a microprocessor. This means that only a single data line is needed to exchange information. The sensor can even draw its power from this data line, so no additional power source is required. This mode of operation is called "parasite power".
Each DS18B20 sensor has a unique 64-bit serial code. This is like a unique identification number for each sensor. This means that several DS18B20 sensors can be connected to the same 1-Wire bus and still be individually recognized and read out. This makes it easy to implement networks with multiple sensors.
This sensor is particularly useful in many applications, such as in heating, ventilation and air conditioning (HVAC) systems, for temperature monitoring in buildings or machines and in process monitoring and control systems. Other applications include medical devices, industrial control systems and temperature monitoring in cooling systems.
In summary, the DS18B20 offers a precise and flexible solution for temperature measurement with simple cabling and the possibility of integration into complex systems with multiple sensors.
Technical Data | |
---|---|
Chipset | DS18B20 |
Communication Protocol | 1-Wire |
Accuracy | 9 to 12 Bit |
Measuring range | -55 °C to +125 °C |
Measurement accuracy | ±0.5 °C from -10 °C to +85 °C |
Pin assignment
Raspberry Pi | Sensor |
---|---|
GPIO4 [Pin 7] | Signal |
3.3 V [Pin 1] | +V |
GND [Pin 6] | GND |
Code-Example
To enable the Raspberry Pi to communicate with the DS18B20 sensor via the one-wire bus, it must first be activated. To do this, enter the following command:
sudo raspi-config
Now go to Interface Options and activate the 1-Wire interface. Your Raspberry Pi should then restart automatically. Or you can use the following command to restart manually:
sudo reboot
You can now use the following example. A console output is generated as soon as a signal is detected.
This is an example program that outputs the measured temperature serially after the sensor has been initialized.
# 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)
Example program download
Start with the command:
sudo python3 KY001-RPi.py
![](/files/files/sensors/KY-001/KY-001.png)
The DS18B20 is a digital thermometer that can measure temperature in Celsius. It offers different accuracy levels from 9 to 12 bits. This means that it can provide very accurate measurements, with a higher bit count providing a more accurate temperature measurement. The measuring range of the DS18B20 is between -55°C and +125°C, and the accuracy is ±0.5°C in the range from -10°C to +85°C.
The DS18B20 uses a so-called 1-wire bus to communicate with a microprocessor. This means that only a single data line is needed to exchange information. The sensor can even draw its power from this data line, so no additional power source is required. This mode of operation is called "parasite power".
Each DS18B20 sensor has a unique 64-bit serial code. This is like a unique identification number for each sensor. This means that several DS18B20 sensors can be connected to the same 1-Wire bus and still be individually recognized and read out. This makes it easy to implement networks with multiple sensors.
This sensor is particularly useful in many applications, such as in heating, ventilation and air conditioning (HVAC) systems, for temperature monitoring in buildings or machines and in process monitoring and control systems. Other applications include medical devices, industrial control systems and temperature monitoring in cooling systems.
In summary, the DS18B20 offers a precise and flexible solution for temperature measurement with simple cabling and the possibility of integration into complex systems with multiple sensors.
Technical Data | |
---|---|
Chipset | DS18B20 |
Communication Protocol | 1-Wire |
Accuracy | 9 to 12 Bit |
Measuring range | -55 °C to +125 °C |
Measurement accuracy | ±0.5 °C from -10 °C to +85 °C |
Pin assignment
Micro:Bit | Sensor |
---|---|
Pin 1 | Signal |
3 V | +V |
GND | GND |
Code-Example
An additional library is needed for the following code example:
pxt-ds18b20 from DFRobot | published under the GUI License.
Add the library to your IDE by clicking on "Extensions" and entering the following URL in the search box: https://github.com/DFRobot/pxt-ds18b20.git Confirm the search with [Enter].
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)
})
Example program download
![](/files/files/sensors/KY-001/KY-001.png)
The DS18B20 is a digital thermometer that can measure temperature in Celsius. It offers different accuracy levels from 9 to 12 bits. This means that it can provide very accurate measurements, with a higher bit count providing a more accurate temperature measurement. The measuring range of the DS18B20 is between -55°C and +125°C, and the accuracy is ±0.5°C in the range from -10°C to +85°C.
The DS18B20 uses a so-called 1-wire bus to communicate with a microprocessor. This means that only a single data line is needed to exchange information. The sensor can even draw its power from this data line, so no additional power source is required. This mode of operation is called "parasite power".
Each DS18B20 sensor has a unique 64-bit serial code. This is like a unique identification number for each sensor. This means that several DS18B20 sensors can be connected to the same 1-Wire bus and still be individually recognized and read out. This makes it easy to implement networks with multiple sensors.
This sensor is particularly useful in many applications, such as in heating, ventilation and air conditioning (HVAC) systems, for temperature monitoring in buildings or machines and in process monitoring and control systems. Other applications include medical devices, industrial control systems and temperature monitoring in cooling systems.
In summary, the DS18B20 offers a precise and flexible solution for temperature measurement with simple cabling and the possibility of integration into complex systems with multiple sensors.
Technical data | |
---|---|
Chipset | DS18B20 |
Communication Protocol | 1-Wire |
Accuracy | 9 to 12 Bit |
Measuring range | -55 °C to +125 °C |
Measurement accuracy | ±0.5 °C from -10 °C to +85 °C |
Pin assignment
Raspberry Pi Pico | Sensor |
---|---|
GPIO2 | Signal |
3,3V | +V |
GND | GND |
Code-Example
Two additional libraries are needed for the following code example:
OneWire Library by Damien P. George | published under the MIT License.
DS18X20 Library by Damien P. George | published under the MIT License.
This is an example program which outputs the measured temperature serially after initialization of the sensor.
# Load libraries
import machine, onewire, ds18x20
from time import sleep
# Initialization of GPIO2
ds_pin = machine.Pin(10)
# Initialization of the sensor object
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
# Search for all matching sensors
roms = ds_sensor.scan()
# Serial output
print("Found DS devices")
print("Temperature (°C)")
# Endless loop for continuous reading of the temperature
while True:
ds_sensor.convert_temp()
sleep(1)
# Based on the number of compatible sensors found it will count up
for rom in roms:
# Serial output of the measured temperature
print(ds_sensor.read_temp(rom))
sleep(3)