

The DS18B20 Digital Temperature Sensor, manufactured by DF Robot (Part ID: Temperature Sensor), is a versatile and highly accurate temperature sensor. It operates over a wide temperature range of -55°C to +125°C and communicates using a 1-Wire interface. This allows multiple sensors to share a single data line, making it an excellent choice for applications requiring multiple temperature measurements.








The DS18B20 is designed for ease of use and reliable performance. 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) |
| Communication Protocol | 1-Wire |
| Resolution | Programmable (9 to 12 bits) |
| Maximum Current Draw | 1.5mA during conversion |
| Sensor Type | Digital |
The DS18B20 is typically available in a 3-pin TO-92 package. Below is the pinout:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | GND | Ground (0V reference) |
| 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 for proper communication.
Wiring the Sensor:
Programming the Sensor:
OneWire and DallasTemperature libraries are commonly used.Reading Temperature:
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); // Start serial communication
sensors.begin(); // Initialize 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:
Incorrect Temperature Values:
Sensor Not Detected:
OneWire and DallasTemperature libraries are installed and included in your code.Q: Can I connect multiple DS18B20 sensors to the same data line?
A: Yes, the DS18B20 supports multiple sensors on a single 1-Wire bus. Each sensor has a unique 64-bit ROM code for identification.
Q: What is the maximum cable length for the DS18B20?
A: The maximum cable length depends on the operating environment and pull-up resistor value. Typically, lengths up to 30 meters are achievable with proper wiring and a strong pull-up resistor.
Q: Can the DS18B20 measure negative temperatures?
A: Yes, the DS18B20 can measure temperatures as low as -55°C.
Q: Is the DS18B20 waterproof?
A: The standard DS18B20 is not waterproof, but waterproof versions are available for outdoor or liquid temperature measurements.
By following this documentation, you can effectively integrate the DS18B20 Digital Temperature Sensor into your projects for accurate and reliable temperature monitoring.