One Wire Digital Temperature Sensor – DS18B20+
This is the latest DS18B20 1-Wire digital temperature sensor from Maxim IC. Reports degrees C with 9 to 12-bit precision, -55C to 125C (+/-0.5C). Each sensor has a unique 64-Bit Serial number etched into it – allows for a huge number of sensors to be used on one data bus.
This is a wonderful part that is the cornerstone of many data-logging and temperature control projects.
DS18B20+ Features:
- Unique 1-Wire interface requires only one port pin for communication
- Each device has a unique 64-bit serial code stored in an onboard ROM
- Multidrop capability simplifies distributed temperature sensing applications
- Requires no external components
- Can be powered from the data line. The power supply range is 3.0V to 5.5V
- Measures temperatures from -55°C to +125°C (-67°F to +257°F)
- ±0.5°C accuracy from -10°C to +85°C
- Thermometer resolution is user-selectable from 9 to 12 bits
- Converts temperature to 12-bit digital word in 750ms (max.)
- User-definable nonvolatile (NV) alarm settings
- Alarm search command identifies and addresses devices whose temperature is outside of programmed limits (temperature alarm condition)
- Applications include thermostatic controls, industrial systems, consumer products, thermometers, or any thermally sensitive system
DS18B20+ Specifications:
- Supply voltage: 3.0 to 5.5 V
- Standby current: 1 μA
- Active current: 1.5 mA
- Measuring range: -55 °C to + 125 °C (-67 °F to +257 °F)
- Accuracy (Thermometer Error):
- ±0.5 °C from -10 °C to +85 °C
- ±1 °C from -30 °C to +100 °C
- ±2 °C from -55 °C to +125 °C
- Resolution: 9-bit to 12-bit (programmable)
- Conversion time: < 750 ms (12-bit resolution)
- Communication protocol: 1-Wire® bus protocol
- Package: 3-pin TO-92
DS18B20+ (TO-220) Device Pin Out:
DS18B20+ Block Diagram:
Connecting DS18B20+ to Arduino:
You’ll need to download the Arduino Libraries “OneWire” and “DallasTemp” which you can find below, and install them to your Arduino Libraries folder.
Connect your Arduino as per this diagram:
Notes:
- You don’t need a Scottish Uno, an ordinary Uno will do!
- You only need one 4.7K resistor per circuit, no matter how many temperature sensors you add in a daisy chain formation
Example Arduino Code for DS18B20+:
/* Example code for the DS18B20+ One-Wire Digital Temperature Sensor */ // Include Arduino libraries: #include <OneWire.h> #include <DallasTemperature.h> // Define the Arduino data pin connected to the 1-Wire bus: #define ONE_WIRE_BUS 2 // Create a new instance of the oneWire class to communicate with any OneWire device: OneWire oneWire(ONE_WIRE_BUS); // Pass the oneWire reference to DallasTemperature library: DallasTemperature sensors(&oneWire); void setup() { // Begin serial communication at a baud rate of 9600: Serial.begin(9600); // Start up the library: sensors.begin(); } void loop() { // Send the command for all devices on the bus to perform a temperature conversion: sensors.requestTemperatures(); // Fetch the temperature in degrees Celsius for device index: float tempC = sensors.getTempCByIndex(0); // the index 0 refers to the first device float tempF = sensors.getTempFByIndex(0); // Fetch the temperature in degrees Fahrenheit for device index Serial.print("Temperature: "); //Output to the serial monitor Serial.print(tempC); // Print the temperature in Celsius Serial.print(" \xC2\xB0"); Serial.print("C | "); Serial.print(tempF); // Print the temperature in Fahrenheit Serial.print(" \xC2\xB0"); Serial.println("F"); // Wait 1 second: delay(1000); }
DS18B20+ Documents:
- DS18B20 Datasheet
- OneWire (Arduino Library)
- DallasTemp (Arduino Library)
- DS18B20 PCB (Eagle PCB Data File)
- TO-92 Step File (Mechanical Model)
Robert Pin –
Very simple to use and apparently reliable…also very cheap. A little small / fiddly. Doesn’t need an A2D converter..works straight away with a Pi.
Adam Coghl –
These are great little sensors. They are easy to connect up, read and manage. They work over a wide range of temperatures and they are accurate and easy to callibrate.
Agung –
How to use the sensor to the arduino ? and the code in arduino, please help 🙁