Pendahuluan
Sensor DS18B20 adalah sensor suhu digital dengan protokol komunikasi 1-Wire. Sensor ini mampu mengukur suhu dengan akurasi ±0,5°C pada rentang -55°C hingga +125°C dan memiliki resolusi hingga 12-bit. Kelebihan DS18B20 adalah dapat dihubungkan dalam jumlah banyak hanya dengan satu pin data.
Cara Kerja Sensor DS18B20
DS18B20 adalah sensor suhu digital yang menggunakan protokol komunikasi 1-Wire. Artinya, komunikasi data hanya membutuhkan satu jalur data selain VCC dan GND.
1. Prinsip Dasar
- Di dalam DS18B20 ada sensor suhu internal, ADC (Analog to Digital Converter), serta memori untuk menyimpan hasil pengukuran.
- Sensor mengubah suhu menjadi data digital dengan resolusi 9–12 bit.
- Data dikirim secara serial ke mikrokontroler (Arduino, ESP32, dsb.) melalui satu pin data.
2. Proses Pengukuran
- Inisialisasi
- Mikrokontroler mengirim reset pulse ke DS18B20 pada jalur data.
- DS18B20 membalas dengan presence pulse untuk memberi tahu bahwa dia siap berkomunikasi.
- Perintah Konversi Suhu
- Mikrokontroler mengirim perintah Convert T.
- DS18B20 mulai mengukur suhu dan mengubahnya menjadi data digital.
- Waktu konversi tergantung resolusi:
- 9-bit → ~93,75 ms
- 12-bit → ~750 ms
- Pengambilan Data
- Setelah konversi selesai, mikrokontroler mengirim perintah Read Scratchpad.
- DS18B20 mengirim 9 byte data, termasuk:
- Hasil suhu (LSB dan MSB)
- Alarm high/low
- CRC untuk pengecekan error
- Konversi Data ke Suhu
- Mikrokontroler mengolah data biner dari sensor menjadi nilai suhu dalam °C atau °F.
3. Koneksi Listrik
- Mode Normal: Butuh 3 kabel → VCC, GND, DATA.
- Mode Parasite Power: Hanya butuh 2 kabel → DATA & GND (VCC diambil dari jalur data), tapi ini membatasi performa.
4. Fitur Unggulan
- Unique ID: Setiap sensor punya kode unik 64-bit, memungkinkan banyak sensor dipasang paralel di satu pin.
- Rentang suhu: -55°C sampai +125°C
- Tahan air
- Akurasi tinggi ±0,5°C (di -10°C sampai +85°C)
Contoh Penerapan Sensor DS18B20
1. Monitoring Suhu Akuarium
- DS18B20 versi waterproof dimasukkan ke dalam air untuk memantau suhu akuarium.
- Data suhu digunakan untuk mengontrol pemanas air (heater) atau kipas pendingin agar ikan tetap nyaman.
2. Sistem Pendingin Server
- Ditempatkan di dalam rak server untuk memantau suhu.
- Saat suhu melebihi batas tertentu, kipas pendingin otomatis menyala.
- Bisa dihubungkan ke sistem IoT agar suhu bisa dipantau lewat internet.
3. Smart Greenhouse (Rumah Kaca Pintar)
- DS18B20 digunakan untuk memantau suhu di dalam rumah kaca.
- Data suhu digunakan untuk mengendalikan kipas, jendela otomatis, atau sistem irigasi.
- Dapat dikombinasikan dengan sensor kelembaban DHT22 untuk kontrol iklim.
4. Sistem Pemantauan Suhu Air Panas
- Digunakan pada water heater atau sistem pemanas industri.
- Mengirim data ke mikrokontroler untuk menampilkan suhu di LCD atau aplikasi.
5. Thermostat Digital
- DS18B20 digunakan sebagai sensor utama.
- Mikrokontroler memproses data suhu dan mengaktifkan pemanas atau pendingin berdasarkan suhu yang diinginkan.
Karakteristik DS18B20
1. Tipe & Fungsi
- Jenis Sensor: Sensor suhu digital
- Protokol Komunikasi: 1-Wire (hanya 1 jalur data untuk komunikasi)
- Output Data: Digital (tidak perlu ADC)
2. Rentang & Akurasi
- Rentang pengukuran: -55°C sampai +125°C
- Akurasi: ±0,5°C (pada -10°C sampai +85°C)
- Resolusi: 9-bit hingga 12-bit (dapat diatur melalui software)
3. Tegangan & Arus
- Tegangan kerja (VCC): 3,0V – 5,5V
- Arus saat konversi: ±1,5 mA
- Arus standby: <1 µA
4. Fitur Khusus
- Parasite Power Mode: Bisa beroperasi hanya dengan 2 kabel (DATA & GND) tanpa kabel VCC terpisah.
- Alamat Unik 64-bit: Setiap sensor memiliki ID unik, memungkinkan banyak sensor dihubungkan paralel pada satu pin mikrokontroler.
- Tahan Air: Versi waterproof dilengkapi selubung stainless steel dan kabel terlindungi.
5. Waktu Konversi Suhu
- Resolusi 9-bit: ~93,75 ms
- Resolusi 10-bit: ~187,5 ms
- Resolusi 11-bit: ~375 ms
- Resolusi 12-bit: ~750 ms
Alat dan Bahan
- Board Mikrokontroler:(pilih salah satu )
- Arduino Uno
- Arduino Mega
- ESP32
- Sensor DS18B20 (tipe waterproof atau non-waterproof)
- Kabel jumper
Cara penggunaan menggunakan arduino uno

DS18B20:
- VCC → 5V Arduino
- GND → GND
- DATA → Pin 2 Arduino
LCD 16×2 I2C:
- VCC → 5V
- GND → GND
- SDA → SCA Arduino
- SCL → SCL Arduino
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
// Pin data DS18B20
#define ONE_WIRE_BUS 2
// Setup OneWire dan DallasTemperature
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// Setup LCD I2C (alamat bisa 0x27 atau 0x3F)
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init();
lcd.backlight();
sensors.begin();
// Teks pembuka
lcd.setCursor(0, 0);
lcd.print(" Welcome to");
lcd.setCursor(0, 1);
lcd.print(" DS18B20 Reader");
delay(2000);
// Efek animasi scroll kiri
for (int i = 0; i < 16; i++) {
lcd.scrollDisplayLeft();
delay(100);
}
lcd.clear();
}
void loop() {
sensors.requestTemperatures();
float suhuC = sensors.getTempCByIndex(0);
// Header animasi berkedip
lcd.setCursor(0, 0);
lcd.print(" Suhu Saat Ini ");
// Menampilkan suhu Celcius
lcd.setCursor(0, 1);
if (suhuC == DEVICE_DISCONNECTED_C) {
lcd.print("Sensor Error ");
} else {
lcd.print("C: ");
lcd.print(suhuC, 1);
lcd.print((char)223); // simbol derajat
lcd.print(" ");
// Tambah Fahrenheit
float suhuF = sensors.toFahrenheit(suhuC);
lcd.print("F: ");
lcd.print(suhuF, 1);
lcd.print((char)223);
}
delay(1500);
// Efek "wipe" clear
lcd.clear();
}
Cara Penggunaan dengan ESP32
ESP32 adalah mikrokontroler yang lebih canggih dengan konektivitas Wi-Fi dan Bluetooth. Dengan ESP32, Anda dapat mengirimkan data ke server atau aplikasi web melalui jaringan

DS18B20
- VCC → 3.3V (atau 5V)
- GND → GND
- DATA → GPIO4 (atau pin lain, tapi sesuaikan di
#define ONE_WIRE_BUS
)
LCD I2C
- VCC → 5V
- GND → GND
- SDA → GPIO21
- SCL → GPIO22
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
// Pin data DS18B20 di ESP32
#define ONE_WIRE_BUS 4 // bisa ganti pin bebas, misalnya GPIO4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27, 16, 2); // alamat I2C LCD (0x27 atau 0x3F)
void setup() {
lcd.init();
lcd.backlight();
sensors.begin();
// Teks pembuka
lcd.setCursor(0, 0);
lcd.print(" Welcome to");
lcd.setCursor(0, 1);
lcd.print(" DS18B20 Reader");
delay(2000);
// Efek scroll kiri
for (int i = 0; i < 16; i++) {
lcd.scrollDisplayLeft();
delay(100);
}
lcd.clear();
}
void loop() {
sensors.requestTemperatures();
float suhuC = sensors.getTempCByIndex(0);
lcd.setCursor(0, 0);
lcd.print(" Suhu Saat Ini ");
lcd.setCursor(0, 1);
if (suhuC == DEVICE_DISCONNECTED_C) {
lcd.print("Sensor Error ");
} else {
lcd.print("C: ");
lcd.print(suhuC, 1);
lcd.print((char)223);
lcd.print(" ");
float suhuF = sensors.toFahrenheit(suhuC);
lcd.print("F: ");
lcd.print(suhuF, 1);
lcd.print((char)223);
}
delay(1500);
lcd.clear();
}
Cara Penggunaan dengan Arduino Mega
Arduino Mega memiliki lebih banyak pin dan lebih banyak port serial dibandingkan dengan Arduino Uno, yang membuatnya lebih fleksibel

DS18B20
- VCC → 5V
- GND → GND
- DATA → Pin 2 Mega
LCD I2C (Mega punya dedicated SDA/SCL)
- VCC → 5V
- GND → GND
- SDA → Pin SDA
- SCL → Pin SCL