Tutorial : Mengukur Suhu Menggunakan DS18B20 dan Arduino Uno

Tutorial : Mengukur Suhu Menggunakan DS18B20 dan Arduino Uno

DS18B20 adalah antarmuka 1-Wire Sensor suhu yang diproduksi oleh Dallas Semiconductor Corp. Antarmuka 1-Wire® yang unik hanya memerlukan satu pin digital untuk komunikasi dua arah dengan mikrokontroler.

Sensor biasanya memiliki 2 jenis kemasan. Salah satu kemasan paket TO-92 terlihat persis seperti transistor biasa. Satu lagi dalam gaya probe tahan air yang dapat lebih berguna ketika Anda perlu mengukur sesuatu yang jauh, di bawah air atau di bawah tanah.

Sensor suhu DS18B20 cukup presisi dan tidak memerlukan komponen eksternal untuk bekerja. Dapat mengukur suhu dari -55 °C hingga +125 °C dengan Akurasi ±0,5 °C.

Resolusi sensor suhu dapat dikonfigurasi pengguna hingga 9, 10, 11, atau 12 bit. Namun, resolusi default saat power-up adalah 12-bit (yaitu 0,0625°C presisi).

Spesifikasi:

  • Power Supply    3V to 5.5V
  • Current Consumption    1mA
  • Temperature Range    -55 to 125°C
  • Accuracy    ±0.5°C
  • Resolution    9 to 12 bit (selectable)
  • Conversion Time    < 750ms

 PIN OUT

DIAGRAM

 

 

Library DS18B20 untuk Arduino
Protokol Dallas 1-Wire agak rumit, dan membutuhkan banyak kode untuk menguraikan komunikasi. Untuk menyembunyikan kerumitan yang tidak perlu ini, kita perlu menginstal library DallasTemperature.h sehingga kita dapat mengeluarkan perintah sederhana untuk mendapatkan pembacaan suhu dari sensor.

Untuk menginstal library, navigasikan ke Sketch -> Include Library -> Manage Libraries... pada IDE Arduino. Tunggu Library Manager mengunduh indeks library dan memperbarui daftar library yang diinstal.

Filter pada pencarian ketikkan "DallasTemperature" dan "OneWire" install kedua library berikut

  Code:

 Sketsa berikut akan memberi Anda pemahaman lengkap tentang cara membaca pembacaan suhu dari Sensor Suhu DS18B20 dan dapat menjadi dasar untuk eksperimen dan proyek yang lebih praktis.

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

// Data wire dihubungkan ke pin 2
#define ONE_WIRE_BUS 2

// inisialisasi one wire
OneWire oneWire(ONE_WIRE_BUS);	

// referensikan one wire ke lib dallas
DallasTemperature sensors(&oneWire);

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

void loop(void)
{ 
  // kirim command utk mendapatkan temperatur
  sensors.requestTemperatures(); 

  //print temperatur dalam Celsius
  Serial.print("Temperatur: ");
  Serial.print(sensors.getTempCByIndex(0));
  Serial.print((char)176);//karakter derajat
  Serial.print("C  |  ");
  
  //print temperatur dalam Fahrenheit
  Serial.print((sensors.getTempCByIndex(0) * 9.0) / 5.0 + 32.0);
  Serial.print((char)176);
Serial.println("F"); delay(500);
}

Hasil dapat dilihat pada serial monitor.