Cara Menggunakan Sensor Suhu Digital DS18B20 di Raspberry Pi


Aditya Suranata 30 Mei 2016 Pemrograman

Mulai Baca

Raspberry Pi Smart Home Controller Dengan Antarmuka Web Moderen

DS18B20 adalah sensor suhu digital seri terbaru dari Maxim IC (dulu yang buat adalah Dallas Semiconductor, lalu dicaplok oleh Maxim Integrated Products). Sensor ini mampu membaca suhu dengan ketelitian 9 hingga 12-bit, rentang -55°C hingga 125°C dengan ketelitian (+/-0.5°C ). Setiap sensor yang diproduksi memiliki kode unik sebesar 64-Bit yang disematkan pada masing-masing chip, sehingga memungkinkan penggunaan sensor dalam jumlah besar hanya melalui satu kabel saja (single wire data bus/1-wire protocol). Ini merupakan komponen yang luar biasa, dan merupakan batu patokan dari banyak proyek-proyek data logging dan kontrol berbasis temperatur di luar sana.

Fitur dari sensor suhu DS18B20

Sebagai acuan dan informasi pendukung, sensor ini memiliki fitur utama sebagai berikut:

  1. Antarmuka hanya menggunakan satu kabel sebagai komunikasi (menggunakan protokol Unique 1-Wire)
  2. Setiap sensor memiliki kode pengenal unik 64-bit yang tertanam di onboard ROM
  3. Kemampuan multidrop yang menyederhanakan aplikasi penginderaan suhu terdistribusi
  4. Tidak memerlukan komponen tambahan
  5. Juga bisa diumpankan daya melalui jalur datanya. Rentang dayanya adalah 3.0V hingga 5.5V
  6. Bisa mengukur temperatur mulai dari -55°C hingga +125 °C
  7. Memiliki akurasi +/-0.5 °C  pada rentang -10 °C hingga +85 °C
  8. Resolusi sensor bisa dipilih mulai dari 9 hingga 12 bit
  9. Bisa mengkonversi data suhu ke 12-bit digital word hanya dalam 750 milidetik (maksimal)
  10. Memiliki konfigurasi alarm yang bisa disetel (nonvolatile)
  11. Bisa digunakan untuk fitur pencari alarm dan alamat sensor yang temperaturnya diluar batas (temperature alarm condition)
  12. Penggunaannya bisa dalam lingkungan kendali termostatis, sistem industri, produk rumahan, termometer, atau sistem apapun yang memerlukan pembacaan suhu.

Sensor DS18B20 memiliki dua jenis casing, yang umum beredar di pasaran yaitu casing biasa dan casing anti air (kiri).

Interfacing Sensor Suhu DS18B20 di Raspberry Pi

Pada tulisan kali ini saya akan mencoba berbagi cara interfacing sensor DS18B20 di Raspberry Pi. Tujuan dari tulisan ini adalah kita memahami bagaimana cara melakukan pembacaan sensor DS18B20 di Raspberry Pi yang terhubung melalui komunikasi 1-wire, menggunakan bahasa pemrograman Python 3.

Langkah pertama adalah, kita melakukan perakitan perangkat keras. Komponen yang kita perlukan disini adalah sensornya sendiri, baik tipe anti air atau yang biasa dan sebuah resistor/hambatan dengan nilai 4.7KΩ.

DS18B20 adalah "1-wire" sensor yang bisa dihubungkan secara parallel. Jika dipasang lebih dari satu, semua sensor berbagi pin yang sama, tapi resistor 4.7Knya cukup dipasang satu saja.

Fungsi dari resistor ini adalah sebagai 'pullup' dari jalur data, dan diperlukan untuk membantu memastikan proses transfer data tetap berjalan stabil dan baik.

Perhatian: meskipun bentuk dari DS18B20 yang biasa berkaki tiga, sangat mirip dengan sensor suhu analog LM35 atau sensor jenis lain seperti TMP36, sensor-sensor itu sama sekali tidak cocok dengan tulisan ini, jadi jangan coba-coba untuk menggunakan tipe lain karena dapat merusak sensor dan Raspberry Pi sendiri.

Skema Pengkabelan Single/Multi DS18B20 di Raspberry Pi

Kabel merah adalah tegangan positif 3.3V, hitam adalah negatif/ground, dan biru adalah Data.

Koding Program Pembacaan Sensor Suhu DS18B20 dengan Python 3

Pada console Raspberry pi, pertama kita perlu menginstall library w1thermsensor. Library ini mendukung pembacaan sensor digital 1-wire tidak hanya DS18B20 tapi juga sensor saudaranya seperti DS18S20 * DS1822 * DS18B20 * DS28EA00 * DS1825/MAX31850K.

Pertama kita aktifkan dulu modul kernel 1-wire. Buka file konfigurasi Raspberry Pi,

$ sudo nano /boot/config.txt

Cari baris yang berisi tulisan #Additional overlays and parameters are documented... dan tambahkan dibawahnya dtoverlay=w1-gpio,gpiopin=4 sehingga menjadi:

# Additional overlays and parameters are documented /boot/overlays/README
dtoverlay=w1-gpio,gpiopin=4

Tekan CTRL+X+Y enter untuk keluar dari nano. Lalu reboot Raspi:

$ sudo reboot

Setelah reboot, kita bisa menginstall w1thermsensor:

$ sudo apt-get install python3-w1thermsensor -y

Tunggu proses download dan instalasi selesai. Setelah itu, kita buka console Raspi lagi untuk mencari tahu kode unik dari sensor yang terpasang. Caranya cukup masuk ke direktori w1_bus_master1 menggunakan perintah ls:

$ ls /sys/devices/w1_bus_master1/

Akan muncul hasil seperti berikut:

28-000005504c8b  w1_master_attempts         w1_master_remove
driver           w1_master_max_slave_count  w1_master_search
subsystem        w1_master_name             w1_master_slave_count
uevent           w1_master_pointer          w1_master_slaves
w1_master_add    w1_master_pullup           w1_master_timeout

Bisa terlihat yang saya bold dan garis bawahi adalah kode unik dari sensor. Kita ambil kodenya setelah tanda (-), angka 28 kita abaikan. Sehingga kode sensor saya adalah 000005504c8b.

Setelah mendapatkan kode unik sensor, kemudian buka Python 3, dan coba ketik perintah berikut untuk memastikan sensor suhu terpasang dengan baik:

$ sudo python3

>>> from w1thermsensor import W1ThermSensor as PembacaSensor
>>> sensorSuhu = PembacaSensor(PembacaSensor.THERM_SENSOR_DS18B20, "000005504c8b")
>>> sensorSuhu.get_temperature()
32.687

Dari hasil diatas, bisa terlihat suhunya adalah 32.687 derajat selsius. Selanjutnya, program bisa dikembangkan tanpa batas.

Sekian tulisan singkat ini, semoga bermanfaat dan apabila ingin berdiskusi silahkan kirim komentar atau gabung di Forum Miarana.

Komentar

rangkaian nya harus pake resistor mas ..??

Sensor DS18B20 ini wajib menggunakan pull-up resistor mas. Pull-up resistornya terhubung pada pin VCC dan pin Data tujuannya untuk menjamin tegangan logika tetap stabil. Untuk nilai resistornya bisa menggunakan 4.7 Kilo Ohm hingga10 Kilo Ohm

HTSL://HIGH THINKING SIMPLE LIVING . ME

ini suhu yang ditampilkan sekali? atau terus menerus?

Bisa onetime bisa realtime, onetime jika pakai contoh script di halaman ini.. tapi kalo mas pasangin dengan Salamigal, maka datanya bisa dibaca realtime/terus menerus melalui antarmuka web moderen

 

HTSL://HIGH THINKING SIMPLE LIVING . ME

ini kenapa ya? pas di cek masih bisa keluar kode, tapi pas di test error gitu
mohon pencerahan
ls /sys/devices/w1_bus_master1/
28-0215634efbff

>>> from w1thermsensor import W1ThermSensor as PembacaSensor
>>> sensorSuhu= PembacaSensor(PembacaSensor.THERM_SENSOR_DS18B20, "0215634efbff")
>>> sensorSuhu.get_temperature()
Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python3/dist-packages/w1thermsensor/core.py", line 244, in get_temperature
return factor(self.raw_sensor_value)
File "/usr/lib/python3/dist-packages/w1thermsensor/core.py", line 208, in raw_sensor_value
raise SensorNotReadyError()
w1thermsensor.core.SensorNotReadyError: Sensor is not yet ready to read temperature
>>>

Tipe Raspberry dan OS yang digunakan apa mas?

Dilihat dari pesan errornya, sepertinya sensornya tidak terhubung dengan sempurna jadi python gagal membaca

HTSL://HIGH THINKING SIMPLE LIVING . ME

sudah bisa, tapi yang terbaca hanya 9bit (satu angka di belakang koma, jadi misa 29,5 ; 30 ; 30,5 . naik keliapatan 5
cara merubah jadi 11 atau 12 bit bisa?

Sepertinya bawaan sensornya mas, mungkin datasheetnya si DS18B20 ada keterangan untuk itu, saya kurang tahu :D

HTSL://HIGH THINKING SIMPLE LIVING . ME

Aditya Suranata

Tentang Penulis, Aditya Suranata

Aditya suka menulis, bukan hanya sekedar hobi, menulis menjadi medianya untuk mencurahkan pikiran dan perasaan. Di TutorKeren.com kebanyakan menyumbang tulisan sesuai dengan minat dan keahliannya yaitu pada kategori pemrograman dan elektronika. Selain itu juga gemar menulis mengenai hal-hal umum, seperti ilmu alam, sosial dan beberapa pengalamannya yang mungkin bisa berguna untuk orang lain.

lihat artikel lain oleh Aditya Suranata

Artikel Lainnya

Kategori Tulisan

E-Book Terbaru

Teknik Antarmuka MATLAB dan Arduino

Teknik Antarmuka MATLAB dan Arduino - Cover.jpg
Pelajari konsep yang sangat luar biasa antara visualisasi, analisis dan komputasi yang ditawarkan MATLAB dengan Platform Arduino sebagai perangkat...
Jumlah Halaman:
411 Halaman

Video Terbaru

Belum Puas ? Mari Kita Saling Bicara


Join Forum Diskusi MiaranaDIY untuk berdiskusi dengan respon cepat mengenai berbagai macam tutorial hingga ulasan yang terdapat di blog ini. Untuk berlangganan artikel terbaru silahkan Like & Follow Facebook Page MiaranaDIY dan Follow Twitter @MiaranaDIY