Tutorial: Cara Menggunakan Sensor DS18B20 dengan Arduino Uno, ESP32, dan Arduino Mega

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

  1. Inisialisasi
    • Mikrokontroler mengirim reset pulse ke DS18B20 pada jalur data.
    • DS18B20 membalas dengan presence pulse untuk memberi tahu bahwa dia siap berkomunikasi.
  2. 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
  3. 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
  4. 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

Leave a Reply

Your email address will not be published. Required fields are marked *