Arduino Sensor Suhu DS18B20
Halo sahabat semua, gimana kabarnya ? Semoga tambah baik, makin sehat, tambah ilmu, semakin barokah umurnya , Aamiin… Kali ini masih di tema yang sama : ngArduino, kita lanjutkan membuat aplikasi Arduino level dasar : Arduino sensor suhu DS18B20. Kalau pada postingan sebelumnya kita berurusan dengan sensor suhu LM35 (silakan baca : Monitoring Suhu LM35), yang ini sedikit berbeda tipe sensor. Apa sih bedanya ? Yang jelas namanya beda hehe.. kalau sensor suhu LM35 output berupa sinyal analog, nah kalau DS18B20 outputnya berupa sinyal digital. Trus cara memprogram atau membuat program untuk membaca keluaran sensor DS18B20 bagaimana ?
Oke, daripada kelamaan sekarang kita mulai membuat aplikasi arduino sensor suhu Ds18B20. Kita lihat dulu sensor suhu DS18B20. Penampakan aslinya sih mirip – mirip LM35, ada 3 kaki, bentuk hitam kecil gitu.. Cuma yang kita pakai ini nanti sensornya sudah dibungkus dengan ‘waterproof’ sehingga sensor tahan air. Ketiga kaki/pin sensor suhu DS18B20 fungsinya juga hampir sama dengan LM35. Kaki nomor 1 sebagai input tegangan (5V), kaki tengah data output dan kaki ke-3 sebagai ground.
Cara komunikasinya memakai One Wire. Ya, dari namanya kita sudah bisa nebak, cukup pakai 1 kabel/jalur saja. Dengan system one wire ini sensor suhu DS18B20 dapat kita buat koneksi seperti jaringan, jadi cukup 1 jalur tetapi dapat membaca lebih dari 1 sensor suhu DS18B20. Berikut beberapa spesifikasi sensor suhu DS18B20, versi lengkap silakan cek datasheet.
- Power supply : 3V – 5,5 V
- Konsumsi arus : 1 mA
- Range suhu : -55 sampai 1250C
- Akurasi : ±0,5%
- Resolusi : 9 – 12 bit
- Waktu konversi : < 750 ms
Sekarang kita siapkan kebutuhan komponen untuk membuat aplikasi Arduino dengan sensor suhu DS18B20 ini. Aplikasi yang akan kita buat berupa monitoring suhu kemudian hasilnya kita tampilkan ke dalam LCD 16×2.
- Arduino UNO
- Sensor suhu DS18B20
- Resistor 4K7
- LCD 16×2
- Trimpot 10K
- Kabel konektor
Rangkaian Arduino dengan DS18B20.
Koneksi sensor suhu DS18B20 dengan Arduino UNO juga sangat mudah, cukup kaki tegangan (Vcc dan Gnd) hubungkan dengan 5V dan GND Arduino UNO kemudian kaki data out hubungkan dengan salah satu pin digital Arduino, bebas mau pin mana saja boleh. Pada aplikasi Arduino ini kita pilih pin 9. Resistor sebagai pullup sebesar 4K7 dikoneksikan antara pin 9 dengan Vcc.
Koneksi LCD dengan Arduino UNO :
- RS — pin 2
- E — pin 3
- D4 — pin 4
- D5 — pin 5
- D6 — pin 6
- D7 — pin 7
Koneksi Sensor DS18B20 dengan Arduino UNO :
- Vcc — 5V
- Data — pin 9 (pullup dengan Resistor 4K7)
- Gnd — GND
Pemrograman Arduino UNO dengan DS18B20.
Sekarang kita masuk ke pemrograman Arduino untuk membaca sensor suhu DS18B20. Cukup siapkan library Arduino untuk pembacaan sensor suhu DS18B20. Jika belum punya silakan download suhu disini Library DS18B20. Ok, selanjutnya letakkan di folder libraries dimana anda menyimpan aplikasi Arduino IDE atau dari menu Sketch -> Include Library -> Manage Libraries…
Ok sekarang kita mulai membuat programnya, buka lembar kerja baru di Arduino IDE kemudian ketik program berikut :
/*********************************** * Monitoring Suhu Sensor DS18B20 * Tampilan LCD 16x2 * www.ardutech.com ***********************************/ #include <OneWire.h> //library OneWire #include <DallasTemperature.h> //library DS18B20 #include <LiquidCrystal.h> //library LCD // pin data DS18B0 konek ke pin 9 Arduino UNO #define ONE_WIRE_BUS 9 //koneksi pin LCD 16x2 ke Arduino UNO //(RS,E,D4,D5,D6,D7) LiquidCrystal lcd(2, 3, 4, 5, 6, 7); // Setup komunikasi one wire OneWire oneWire(ONE_WIRE_BUS); // mereferensikan sensor ke library one wire DallasTemperature sensors(&oneWire); void setup(void) { lcd.begin(16, 2);//jenis LCD 16x2 lcd.print("Monitoring Suhu");//tampilan baris 1 lcd.setCursor(0,1); //set ke baris 2 lcd.print("Sensor DS18B20");//tampilan baris 2 sensors.begin(); // Start sensor delay(2000);//tunggu 2 detik lcd.clear();//hapus tampilan lcd.print("Sensor DS18B20");//tampilan baris 1 lcd.setCursor(0,1);//set ke baris 2 lcd.print("Temp=");//tampilan baris 2 } void loop(void) { //kirim perintah ke sensor sensors.requestTemperatures(); lcd.setCursor(5,1);//set ke baris 2 kolom 4 //ambil data suhu dan tampilkan hasilnya ke LCD lcd.print(sensors.getTempCByIndex(0)); lcd.print(" C ");//Celcius delay(1000);//tunda 1 detik }
Simpan (Save) kemudian Upload ke Arduino IDE, lihat hasilnya di LCD.
Jika belum berhasil silakan cek koneksi atau jalur kabelnya. Pastikan juga resistor 4K7 terpasang antara pin 9 dengan Vcc. Coba beri perubahan suhu pada sensor dan amati hasilnya pada LCD. Sekarang kita lihat programnya. Pada baris – baris awal merupakan pemakaian pustaka (library) yang digunakan yaitu OneWire, DallasTemperature dan LiquidCrystal.
#include <OneWire.h> //library OneWire #include <DallasTemperature.h> //library DS18B20 #include <LiquidCrystal.h> //library LCD
Selanjutnya pendefinisian pin yang terhubung dengan data DS18B20 yaitu pin 9. Anda boleh saja menyambung ke pin yang lain, asal pada program juga menyesuaikan (tidak harus di pin 9).
// pin data DS18B0 konek ke pin 9 Arduino UNO #define ONE_WIRE_BUS 9
Koneksi antara pin LCD dengan Arduino, menyesuaikan rangkaian yang dibuat.
//koneksi pin LCD 16x2 ke Arduino UNO //(RS,E,D4,D5,D6,D7) LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
Berikutnya setup dengan library sensor Dallas.
// Setup komunikasi one wire OneWire oneWire(ONE_WIRE_BUS); // mereferensikan sensor ke library one wire DallasTemperature sensors(&oneWire);
Pada program inisialisasi, perintah untuk menampilkan data awal ke LCD.
void setup(void) { lcd.begin(16, 2);//jenis LCD 16x2 lcd.print("Monitoring Suhu");//tampilan baris 1 lcd.setCursor(0,1); //set ke baris 2 lcd.print("Sensor DS18B20");//tampilan baris 2 sensors.begin(); // Start sensor delay(2000);//tunggu 2 detik lcd.clear();//hapus tampilan lcd.print("Sensor DS18B20");//tampilan baris 1 lcd.setCursor(0,1);//set ke baris 2 lcd.print("Temp=");//tampilan baris 2
Selanjutnya pada program utama, kirim perintah ke sensor suhu DS18B20, caranya sangat mudah:
//kirim perintah ke sensor sensors.requestTemperatures();
Kemudian perintah baca data dan hasilnya langsung ditampilkan ke LCD :
//ambil data suhu dan tampilkan hasilnya ke LCD lcd.print(sensors.getTempCByIndex(0));
Cukup mudah kan ? lain kesempatan Insya Allah kita coba membuat monitoring sensor suhu DS18B20 dengan jumlah sensor lebih dari 1. Semoga bermanfaat,
Pingback: 3 Ch Sensor DS18B20 Arduino