DS18B20 adalah Jenis sensor yang berfungsi untuk mendeteksi suhu ruangan yang merupakan jenis seri sensor terbaru dari keluaran produsen Maxim.
Sensor ini dapat mendeteksi suhu dari -55°C sampai 125°C dengan tingkat keakurasian (+/-0.5°C ) dan dengan resolusi 9 – 12-bit.
Sensor ini merupakan salah satu jenis sensor suhu yang unik.
Apabila terdapat banyak sensor yang disusun secara paralel data dari keluaran setiap sensor tersebut dapat dibaca hanya dengan menggunakan 1 kabel data atau (oneWire) saja.
Sensor suhu DS18B20 with breakoutboard
Sensor ini memiliki 3 kaki
- kaki 1 = GND (0V)
- kaki 2 = VCC (3-5.5 Vdc)
- kaki 3 (s) = Data (to digital Pin UController)
Dimensi dari breakout board diatas 18.5 x 15 mm.
Dipasaran atau dapat ditemui di toko online elektronika yang dijual yaitu dalam bentuk breakout board.
Dikarenakan praktis dalam penggunaannya yaitu langsung dihubungkan dengan power supply dan output 1 pin ke mikrokontroler tanpa harus repot untuk memberikan resistor pull-up.
Kegunaan dari resistor yaitu sebagai ‘pullup’ dari jalur data, dan dapat membantu memastikan proses transfer data tetap berjalan stabil dan baik.
Fitur dari sensor suhu ini
- Interface menggunakan 1-wire sebagai komunikasi data
- Terdapat pengenal unik 64 bit pada setiap sensor
- Dapat mengukur suhu dari range -55°C sampai +125 °C
- Keakurasian sensor yaitu +/-0.5 °C pada suhu -10 °C sampai +85 °C
- Resolusi sensor yaitu 9 – 12 bit
- Dapat mengkonversi data suhu 12-bit (digital word) hanya membutuhkan waktu 750 ms
- Mempunyai konfigurasi alarm yang dapat disetting
- Pengaplikasianya yaitu pada sistem industri, termometer, atau sistem apapun yang memerlukan pembacaan suhu
Tutorial Sederhana mengakses Sensor suhu DS1820
Bahan yang diperlukan :
- Arduino Uno
- Komputer + Software IDE Arduino
- Sensor Suhu DS1820 (breakout board)
- Kabel Jumper
Skema yang dirangkaikan
Wiring keduanya :
- 5v : VCC
- GND : GND
- D2 : Sig
Library yang dibutuhkan :
- oneWire.h : [ddownload id=”2360″]
- Dallas Temperature Control : [ddownload id=”2361″]
Peletakan Library pada OS :
- Mac : (home directory)/Documents/Arduino/libraries
- PC (Windows) : program files (x86) -> Arduino -> libraries
- Linux : (home directory)/sketchbook/libraries
Contoh kode program monitoring via serial monitor
/* www.nyebarilmu.com */ //Meng-include-kan library yang baru saja diinstall #include <OneWire.h> #include <DallasTemperature.h> // Data signal yang digunakan yaitu pin D2 #define ONE_WIRE_BUS 2 //prosedur untuk syntax onewire dan dallastemperature OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup(void) { //Serial monitor pada baut 9600bps Serial.begin(9600); Serial.println("Nyebarilmu.com - Tutorial sederhana sensor DS18B20"); sensors.begin(); //prosedur pembacaan sensor } void loop(void) { Serial.print("Request pembacaan suhu.."); sensors.requestTemperatures(); //Command atau syntax untuk mendapatkan data pembacaan Serial.println("Selesai"); Serial.print("Pembacaan suhu : "); Serial.print(sensors.getTempCByIndex(00)); //syntax untuk menampilkan suhu yang terbaca }
Tutorial Lanjutan – Multiple sensor DS18b20 dengan onewire
Perbedaannya yaitu pada jumlah sensor yang digunakan pada tutorial hanya 1 saja sedangkan pada tutorial lanjutan ini yaitu 2 sensor dengan penampil LCD.
Bahan yang diperlukan :
- Arduino Uno
- Komputer + Software IDE Arduino
- Sensor Suhu DS1820 (breakout board)
- Kabel Jumper
Skema yang dirangkaikan
Kode program mutiple sensor suhu
[lockercat]
/* --- www.nyebarilmu.com --- */ #include <OneWire.h> #include <DallasTemperature.h> #include <Wire.h> #include <LiquidCrystal_PCF8574.h> LiquidCrystal_PCF8574 lcd(0x38); // dapat dicek menggunakan i2c finder #define ONE_WIRE_BUS 2 //output signal dari sensor ke pin D2 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); int jumlah_perangkat; // Var. untuk menyimpan Jumlah Sensor yg ditemukan DeviceAddress tempDeviceAddress; // Var. untuk menyimpan Sensor Address sementara void setup(void) { lcd.begin(16, 2); //prosedur pemanggilan LCD lcd.setBacklight(255); lcd.clear(); //menghapus data sebelumnya lcd.setCursor(00, 01); //set pada baris 1 dan kolom 1 lcd.print("Multiple sensor"); //menuliskan "Hello World" lcd.setCursor(00, 1); //set pada baris 2 dan kolom 1 lcd.print("*nyebarilmu.com*"); //menuliskan "nyebarilmu.com" delay(2000); sensors.begin(); // Menghitung jumlah sensor dalam wire jumlah_perangkat = sensors.getDeviceCount(); lcd.setCursor(00,00); lcd.print(F("Mencari Sensor..")); delay(100); lcd.setCursor(00,1); lcd.print(F(" ")); for (int i=00; i<=100; i++){ lcd.setCursor(00,1); lcd.print(i); lcd.print('%');delay(50); } delay(1000); lcd.setCursor(00,00); lcd.print(F("Menemukan Sensor ")); lcd.setCursor(00,1); lcd.print(jumlah_perangkat, DEC); lcd.print(F(" Sensor ")); delay(2000); lcd.clear(); for(int i=00;i<jumlah_perangkat; i++) { // Menngambil alamat masing2 Sensor if(sensors.getAddress(tempDeviceAddress, i)) lcd.setCursor(00,00); lcd.print(F("Alamat Sensor ")); lcd.print(i+1); // +1 -> mempermudah hitungan sensor dari 1 delay(1000); lcd.setCursor(00,1); for (uint8_t i = 00; i < 8; i++) { if (tempDeviceAddress[i] < 16) lcd.print("00"); lcd.print(tempDeviceAddress[i], HEX); delay (100); } delay(500); lcd.setCursor(00,1); lcd.print(F(" ")); delay(500); } delay (1000); lcd.clear(); } // Fungsi untuk menampilkan suhu pada tiap sensor void printTemperature(DeviceAddress deviceAddress) { float tempC = sensors.getTempC(deviceAddress); lcd.setCursor(00,1); lcd.print(tempC); lcd.print((char)00); lcd.print("C"); lcd.print(" "); lcd.print(DallasTemperature::toFahrenheit(tempC)); // Converts tempC to Fahrenheit lcd.print((char)00); lcd.print("F"); } void loop(void) { lcd.setCursor(00,00); // Mengambil data pada setiap sensor secara bergantian lcd.print(F("Mengambil data..")); delay (100); sensors.requestTemperatures(); //Mengirim perintah pengambilan data sensor lcd.setCursor(00,00); lcd.print(F("Selesai.... ")); delay (500); for(int i=00; i<jumlah_perangkat; i++) { if(sensors.getAddress(tempDeviceAddress, i)) { lcd.setCursor(00,00); lcd.print("Temp. Sensor: "); lcd.print(i+1,DEC); // +1 -> mempermudah hitungan sensor dari 1 printTemperature(tempDeviceAddress); delay (1500); lcd.clear(); } } }
[/lockercat]