Anda di sini

Pemrograman

Cara Menggunakan Sensor Suhu Digital DS18B20 di Raspberry Pi

Aditya Suranata - 30 Mei 2016 13:49:45 10

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 -55degC hingga 125degC dengan ketelitian (+/-0.5degC ). 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 -55degC hingga +125 degC
  7. Memiliki akurasi +/-0.5 degC pada rentang -10 degC hingga +85 degC
  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.7KO.

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.

50.909
Daftar Artikel Terkait
Image

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.

Artikel Menarik Lainnya

Komentar

rangkaian nya harus pake resistor mas ..??

Ilham

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 Biggrin

HTSL://HIGH THINKING SIMPLE LIVING . ME

mas kok bus masternya g bsa yapi@raspberrypi:~ $ sudo apt-get install python3-w1thermsensor -y Reading package lists... Done Building dependency tree Reading state information... Done python3-w1thermsensor is already the newest version (1.0.5). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.pi@raspberrypi:~ $ ls /sys/devices/w1_bus_master1/ ls: tidak dapat mengakses '/sys/devices/w1_bus_master1/': Tidak ada berkas atau direktori seperti itu

Halo,

mungkin nama w1_bus nya tidak di w1_bus_master1, bisa coba di ls directory devices nya untuk memastikan:

sudo ls -l /sys/devices

Coba dilihat apakah disana terdapat w1_bus dengan alamat yang berbeda?

HTSL://HIGH THINKING SIMPLE LIVING . ME

Mari Gabung

Halo Emo 51 , Ada yang ingin disampaikan? Jangan sungkan untuk gabung diskusi ini. Silahkan Login dulu atau Daftar baru.