

The DS18B20 Digital Temperature Sensor, manufactured by DF Robot (Part ID: Temperature Sensor), is a versatile and highly accurate temperature sensor. It provides temperature readings in the range of -55°C to +125°C with a resolution of up to 12 bits. The sensor communicates using a 1-Wire interface, enabling multiple sensors to share a single data line. This makes it an excellent choice for applications requiring distributed temperature monitoring.








The DS18B20 is designed to deliver reliable performance in a wide range of environments. Below are its key technical details:
| Parameter | Value |
|---|---|
| Operating Voltage | 3.0V to 5.5V |
| Temperature Range | -55°C to +125°C |
| Accuracy | ±0.5°C (from -10°C to +85°C) |
| Resolution | 9 to 12 bits (user-selectable) |
| Interface | 1-Wire |
| Maximum Current Draw | 1.5mA during conversion |
| Communication Protocol | 1-Wire digital protocol |
| Response Time | < 750ms (12-bit resolution) |
The DS18B20 sensor typically comes in a 3-pin TO-92 package. Below is the pinout:
| Pin | Name | Description |
|---|---|---|
| 1 | GND | Ground connection |
| 2 | DQ | Data line for 1-Wire communication |
| 3 | VDD | Power supply (3.0V to 5.5V) |
Note: A 4.7kΩ pull-up resistor is required on the DQ line to ensure proper communication.
Wiring the Sensor:
Powering the Sensor:
Reading Temperature Data:
Below is an example of how to use the DS18B20 with an Arduino UNO:
#include <OneWire.h>
#include <DallasTemperature.h>
// Pin connected to the DS18B20 data line
#define ONE_WIRE_BUS 2
// Setup a oneWire instance to communicate with any 1-Wire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass the oneWire reference to DallasTemperature library
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(9600); // Initialize serial communication
sensors.begin(); // Start the DS18B20 sensor
Serial.println("DS18B20 Temperature Sensor Initialized");
}
void loop() {
sensors.requestTemperatures(); // Request temperature readings
float temperatureC = sensors.getTempCByIndex(0); // Get temperature in Celsius
// Check if the reading is valid
if (temperatureC != DEVICE_DISCONNECTED_C) {
Serial.print("Temperature: ");
Serial.print(temperatureC);
Serial.println(" °C");
} else {
Serial.println("Error: Sensor not connected!");
}
delay(1000); // Wait 1 second before the next reading
}
No Temperature Reading:
Erratic or Incorrect Readings:
Device Not Detected:
Slow Response Time:
Q1: Can I use the DS18B20 with a 3.3V power supply?
A1: Yes, the DS18B20 operates within a voltage range of 3.0V to 5.5V.
Q2: How many DS18B20 sensors can I connect to a single data line?
A2: Theoretically, you can connect up to 100 sensors, but practical limits depend on cable length and power supply.
Q3: What is the maximum cable length for the DS18B20?
A3: The maximum cable length depends on the environment and wiring quality. Typically, lengths up to 30 meters are achievable with proper shielding and pull-up resistance.
Q4: Can the DS18B20 measure negative temperatures?
A4: Yes, it can measure temperatures as low as -55°C.
By following this documentation, you can effectively integrate the DS18B20 Digital Temperature Sensor into your projects for accurate and reliable temperature monitoring.