Sensor DS18B20 merupakan sensor suhu dengan tingkat kepresisian 0.0625℃. Sensor ini memiliki 2 macam bentuk yaitu bentuk probe waterproof yang dapat digunakan untuk mengukur suhu dalam suatu cairan, dan bentuk komponen transistor biasa.

Sensor ini dapat bekerja dengan komunikasi one-wire dan ADC internal dengan resolusi sampai 12-bit yang dapat di-setting oleh pengguna. Misalkan tegangan referensi yang digunakan yaitu 5 VDC, maka apabila terjadi perubahan suhu, nilai tegangan terkecil yang berubah yaitu:

Pinout & Spesifikasi Sensor DS18B20

.
Mode Sensor DS18B20

Terdapat dua jenis mode rangkaian yang dapat digunakan untuk mengakses sensor DS18B20, yaitu mode normal dan mode parasite. Pada mode normal, GND terhubung dengan sumber tegangan negatif, VCC terhubung dengan sumber tegangan positif (5V) dan DQ terhubung dengan pin mikrokontroler, namun ditambahakan resistor Pull-Up sebesar 4.7KΩ untuk menjaga transfer data tetap stabil. Mode ini cocok digunakan untuk rangkaian yang melibatkan banyak sensor dan membutuhkan jarak yang panjang.
Pada mode parasite, GND dan VCC disatukan dan terhubung dengan sumber tegangan negatif. DQ terhubung dengan pin data mikrokontroler melalui resistor Pull-Up 4.7KΩ untuk menjaga transfer data tetap stabil. Sumber tegangan positif pada mode ini diambil dari pin data. Mode ini cocok digunakan untuk rangkaian yang melibatkan sedikit sensor dalam jarak yang pendek.
Contoh Rangkaian Sensor DS18B20 & Arduino Uno

Percobaan 59: Akses Sensor Suhu Ruangan dan Cairan DS18B20

- Hubungkan O dengan pin D9 ATMEGA 2560
- Hubungkan board ATMEGA 2560 dengan Komputer menggunakan kabel USB.
- Bukalah IDE Arduino, kemudian ketikkan kode program/sketch atau buka file SENSOR_SUHU_UDARA_CAIRAN_DS18B20
- Compile menggunakan verify button (tanda ceklist pada IDE arduino) untuk mengecek ada atau tidaknya error/kesalahan dalam pengetikan.
- Upload program ke arduino dengan cara, pilih File > Upload to I/O board, atau tekan tombol tanda panah pada jendela IDE arduino.
Code:
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into digital pin on the Arduino
#define ONE_WIRE_BUS 9
// Setup a oneWire instance to communicate with any OneWire device
OneWire oneWire(ONE_WIRE_BUS);
// Pass oneWire reference to DallasTemperature library
DallasTemperature sensors(&oneWire);
void setup(void)
{
sensors.begin(); // Start up the library
Serial.begin(9600);
}
void loop(void)
{
// Send the command to get temperatures
sensors.requestTemperatures();
//print the temperature in Celsius
Serial.print("Temperature: ");
Serial.print(sensors.getTempCByIndex(0));
Serial.print("C | ");
//print the temperature in Fahrenheit
Serial.print((sensors.getTempCByIndex(0) * 9.0) / 5.0 + 32.0);
Serial.println("F");
delay(500);
}
Video Demo:
.