fbpx

Tutorial Kendali Suhu Ruangan dengan Sensor DS18b20 dan Arduino Uno

Sensor suhu DS18b20 digunakan untuk mendeteksi suhu ruangan namun dapat juga digunakan untuk mendeteksi suhu air. Suhu yang dapat dideteksi antara -55 ºC – 125 ºC. Sensor ini juga sangat presisi, jika tegangan referensi sebesar 5Volt, ia dapat merasakan perubahan tegangan sebesar 5/(212-1) = 0.0012 Volt pada rentang suhu -10 sd +850C. Pada artikel kali ini akan membahas cara mengendalikan LED dengan parameter suhu menggunakan sensor DS18b20 pada Arduino Uno. Sensor DS18b20 yang digunakan seperti terlihat pada gambar di bawah ini

Sensor DS18b20 terdapat 3 buah kabel. Merah untuk VCC, hitam untuk GND, dan kuning untuk pin Data. Untuk mengambil data suhu dari sensor DS18b20 ini dibutuhkan resistor pull-up sebesar 4,7 KOhm yang dihubungkan antara pin Data dan VCC. Resistor pullup ini fungsinya sebagai penguat sinyal agar terbaca oleh pin Arduino Uno. Jika tidak menggunakan resistor 4K7 maka akan muncul nilai -127 pada jendela Serial Monitor Arduino IDE.

Nilai resistor 4K7 ohm ini nilai yang direkomendasikan di datasheet DS18b20 ya, tapi jika kebetulan lagi susah nyarinya bisa pake resitor 10K. Sudah saya coba ternyata bisa juga, he he

Nilai suhu yang terbaca pada serial monitor digunakan untuk mengendalikan LED dengan ketentuan saat suhu lebih besar dari 32º C maka LED akan menyala, namun saat suhu yang terdeteksi kurang dari 30º C maka LED akan padam. Untuk lebih memahami penggunaan sensor DS18b20 marilah kita membuat eksperimen sederhana menggunakan komponen berikut

Alat dan Bahan

  1. Sensor DS18b20 (waterproof)
  2. Arduino Uno
  3. Resistor 510 Ω
  4. Resistor 4K7 Ω
  5. LED sebagai indikator aktuator

Kemudian buatlah rangkaian seperti pada gambar di bawah ini dengan konfigurasi pin :

  • Kabel kuning/DATA ke pin A0)
  • Kabel merah/VCC ke 5v dan kedua kabel ini (kuning dan merah) dihubungkan oleh resistor 4K7 Ω.
  • Kabel hitam ke GND
  • LED terhubung dengan pin A1.

Source Code Kendali Suhu DS18b20+Uno

Kemudian buka Arduino IDE di laptop Anda (jika belum punya dapat diunduh di arduino.cc), dan isikan listing program  sebagai berikut :

1.	#include <OneWire.h> //Memanggil library OneWire yang diperlukan sebagai dependensi library Dallas Temperature
2.	#include <DallasTemperature.h> // Memanggil library Dallas Temperature
3.	
4.	#define ONE_WIRE_BUS A2  // Menempatkan PIN hasil pembacaan sensor DS18B20 pada PIN A0.
5.	#define led A1           // deklarasi pin led pada PIN A1
6.	   
7.	OneWire oneWire(ONE_WIRE_BUS); //Membuat variabel oneWire berdasarkan PIN yang telah didefinisikan
8.	DallasTemperature sensor(&amp;oneWire); //Membuat variabel untuk menyimpan hasil pengukuran
9.	float suhuDS18B20; //deklarasi variable suhu DS18B20 dengan jenis data float
10.	
11.	void setup(void)
12.	{
13.	  Serial.begin(9600);   //Menginisiasikan setup kecepatan komunikasi
14.	  sensor.begin();       //Menginisiasikan sensor One-Wire DS18B20
15.	  pinMode(led, OUTPUT); //Menginisialisasi LED sebagai Output
16.	}
17.	
18.	void loop(void)
19.	{
20.	  sensor.setResolution(9);       // Sebelum melakukan pengukuran, atur resolusinya
21.	  //sensor.setResolution(10);
22.	  //sensor.setResolution(11);
23.	  //sensor.setResolution(12);
24.	  sensor.requestTemperatures();  // Perintah konversi suhu
25.	  suhuDS18B20 = sensor.getTempCByIndex(0);  //Membaca data suhu dari sensor #0 dan mengkonversikannya ke nilai Celsius
26.	  // suhuDS18B20 = (suhuDS18B20*9/5) + 32;
27.	  // suhuDS18B20 = suhuDS18B20 = 273.15;
28.	  Serial.println(suhuDS18B20, 1);    //Presisi 1 digit (satu angka dibelakang koma)
29.	  //Serial.println(suhuDS18B20, 2);  //Presisi 2 digit (dua angka dibelakang koma)
30.	  //Serial.println(suhuDS18B20, 3);  //Presisi 3 digit (tiga angka dibelakang koma)
31.	  //Serial.println(suhuDS18B20, 4);  //Presisi 4 digit (empat angka dibelakang koma)
32.	  Serial.print("Suhu: ");
33.	  //lcd.setCursor(6, 0);
34.	  //lcd.print((char)223);
35.	  Serial.println("C"); 
36.	  delay(1000);    //delay 1 detik (1000 miliseconds)
37.	
38.	  if (suhuDS18B20 > 32.0) {       //instruksi untuk menyaakan LED saat suhu lebih dari 32 derajat
39.	    digitalWrite(led, HIGH);
40.	  }
41.	
42.	  else if (suhuDS18B20 < 30.0){   //instruksi untuk mematikan LED saat suhu kurang dari 32 derajat
43.	    digitalWrite(led, LOW);
44.	  }45.	}


Catatan: untuk library ‘DallasTemperature.h’ Anda perlu menginstalnya terlebih dahulu. Bisa Anda donlot di sini

Upload sketch (program ke atas) dengan menekan tombol upload atau melalui shortkey CTRL+U, kemudian aktifkan tools ‘Serial Monitor’ di IDE Arduino melalui menu Tools | Serial Monitor. Jika langkah-langkah di atas Anda lakukan dengan benar, maka tampilan di Serial Monitor akan seperti gambar di bawah (pastikan kabel USB antara laptop dan Arduino tetap terpasang).

Setelah data suhu terlihat pada serial monitor cobalah untuk menaikkan suhu pada sensor DS18b20 degan cara dekatkan sensor pada korek api atau lilin yang menyala. Amati perubahan nilai suhu pada serial monitor dan kondisi LED pada rangkaian percobaan yang telah dibuat. Jika suhu yang terdeteksi di atas 32ºC maka lampu LED akan menyala. Kemudian coba turunkan suhu dengan cara mengaktifkan kipas/fan pada sensor. Maka saat suhu yang dideteksi oleh sensor di bawah 30 ºC maka LED akan padam. Jika hasil percobaan Anda sesuai dengan ketentuan LED akan aktif saat suhu di atas 32ºC dan LED akan padam saat suhu yang terdeteksi di bawah 30 ºC, maka Anda telah berhasil mengendalikan LED dengan parameter suhu. Ohya, dalam implementasinya, LED ini bisa digantikan dengan relay (atau SSR) untuk mengendalikan pemanas atau pendingin ruangan. Selamat bereksperimen.

About the Author