Interfacing DS18B20 with Arduino

The DS18B20 is a highly accurate one-wire digital temperature sensor that can be easily interfaced with Arduino boards. This guide will provide a comprehensive overview of the DS18B20, including its hardware setup, software integration, and practical applications.

DS18B20 Features

  • One-Wire Interface: The DS18B20 uses a one-wire interface, which simplifies the wiring and reduces the number of pins required.
  • Wide Measurement Range: The DS18B20 can measure temperatures from -55°C to +125°C.
  • High Accuracy: The sensor offers a resolution of 0.0625°C and a typical accuracy of ±0.5°C.
  • Parasite Power: The DS18B20 can be powered directly from the one-wire bus, reducing the need for external power supplies.

Hardware Setup

To connect a DS18B20 to an Arduino board, you’ll need the following components:

  • DS18B20 Sensor: Purchase a DS18B20 sensor module.
  • Arduino Board: Choose a suitable Arduino board with digital input/output pins.
  • Resistor (Optional): If using a parasitic power configuration, connect a 4.7kΩ resistor between the VCC and GND pins of the sensor.

Connect the sensor to the Arduino as follows:

  • DATA: Connect the DATA pin of the sensor to a digital input pin on the Arduino.
  • VCC: If using external power, connect the VCC pin of the sensor to the 5V pin on the Arduino.
  • GND: Connect the GND pin of the sensor to the ground pin on the Arduino.

Arduino Code

Here’s a basic example of how to read temperature from a DS18B20 sensor using the OneWire library:

C++

#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 2

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);   

void setup() {
  Serial.begin(9600);
  sensors.begin();
}

void loop() {
  sensors.requestTemperatures();   
  float temperature = sensors.getTempCByIndex(0);

  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.println(" °C");

  delay(1000);   
}

Explanation

  1. Include Libraries: Include the OneWire and DallasTemperature libraries.
  2. Initialize OneWire and Sensors: Initialize the OneWire bus and the DallasTemperature object.
  3. Request Temperatures: Use the requestTemperatures() function to request temperature readings from all connected sensors.
  4. Read Temperature: Use the getTempCByIndex(0) function to read the temperature of the first sensor (index 0).
  5. Display Temperature: Print the temperature value to the serial monitor.

Additional Tips

  • Multiple Sensors: You can connect multiple DS18B20 sensors to the same one-wire bus and read the temperature from each sensor individually.
  • Accuracy: The DS18B20 offers a high degree of accuracy, but calibration may be necessary for critical applications.
  • Parasite Power: If using parasitic power, ensure that the resistor value is appropriate for the sensor’s power requirements.
  • Error Handling: Implement error handling to check for communication errors or sensor failures.

By following these steps and understanding the DS18B20’s capabilities, you can accurately measure temperature in your Arduino projects.

DHT22/DHT11 Sensor Functionality and Interfacing
Relay Basics and Pinout with Load Connections

Get industry recognized certification – Contact us

keyboard_arrow_up
Open chat
Need help?
Hello 👋
Can we help you?