Menghubungkan Sensor Suhu Digital One Wire DS18B20 dengan Arduino
Pada tutorial ini akan menunjukan cara bagaimana menggunakan sensor suhu DS18B20 dengan board Arduino UNO. Kamu akan belajar bagaimana cara menyambungkan kabel senor, install library yang di perlukan dan mendapatkan hasil pembacaan sensor.
Sensor Suhu DS18B20
DS18B20 adalah sensor suhu digital one wire, yang artinya sensor ini hanya membutuhkan satu jalur data untuk berkomunikasi dengan Arduino, sehingga kamu bisa menghubungkan beberapa sensor hanya dengan menggunakan satu pin digital Arduino. Sensor Suhu DS18B20 tersedia dalam 2 bentuk, ada yang menyerupai transistor kecil dan ada juga yang waterproof bentuknya probe dan memiliki kabel Panjang.

Berikut ini spesifikasi dari sensor suhu DS18B20
| Power Supply | 3V to 5.5V |
| Current Consumption | 1mA |
| Temperature Range | -55 to 125°C |
| Accuracy | ±0.5°C |
| Resolution | 9 to 12 bit (selectable) |
| Conversion Time | < 750ms |
Untuk datashet nya, kamu bisa cek disini
Susunan Pin DS18B20
- GND adalah pin ground
- DQ adalah jalur yang digunakan untuk mengirim data dari sensor ke mikrokontroller, dan kamu memerlukan resistor pull-up 4,7kΩ ke VDD.
- VDD adalah pin untuk supply sensor. Tegangan yang diterima oleh sensor harus berada pada rentang 3.3v – 5v.
Untuk mencoba project ini kamu memerlukan komponen ini :
Menghubungkan Sensor Suhu DS18B20 ke Arduino



Apabila kamu menggunakan DS18B20 waterproof kode warna kabelnya adalah:
- merah untuk VCC/VDD
- hitam untuk ground
- kuning untuk data komunikasi
Install Library DS18B20
Untuk memakai fitur komunikasi onewire pada DS18B20 kamu memerlukan library bernama DallasTemperture. Dengan library ini kamu tidak perlu menuliskan semua kode untuk beberapa sensor.
Untuk install library tersebut ikuti langkah berikut ini :
- Buka software Arduino IDE Kemudian klik ikon library di sisi kiri
- Ketik “ ds18b20 ” di kotak pencarian
- Carilah DallasTemperature Library karya Miles Burton
- Klik tombol Instal untuk menambahkannya ke Arduino IDE Kamu

Agar berfungsi dengan benar, pustaka DallasTemperature perlu dipasangkan dengan library lain yang disebut OneWire.

Setelah kedua library terpasang, kamu sudah siap untuk mulai menggunakan sensor suhu DS18B20
Contoh Kode Arduino Untuk 1 Sensor DS18B20
Sketsa contoh di bawah ini akan membantu kamu untuk memahami cara membaca dan menampilkan data suhu dari sensor suhu DS18B20. Atau kamu bisa download codingannya disini.
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is conntec to the Arduino digital pin 4
#define ONE_WIRE_BUS 4
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature sensor
DallasTemperature sensors(&oneWire);
void setup(void)
{
// Start serial communication for debugging purposes
Serial.begin(9600);
// Start up the library
sensors.begin();
}
void loop(void){
// Call sensors.requestTemperatures() to issue a global temperature and Requests to all devices on the bus
sensors.requestTemperatures();
Serial.print("Celsius temperature: ");
// Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
Serial.print(sensors.getTempCByIndex(0));
Serial.print(" - Fahrenheit temperature: ");
Serial.println(sensors.getTempFByIndex(0));
delay(1000);
}Setelah mengunggah sketsa ke Arduino, buka serial monitor dan baud rate nya di 9600. Kamu akan melihat suhu saat ini ditampilkan dalam °C dan °F

Contoh Kode Arduino Untuk Beberapa Sensor DS18B20
Untuk membaca suhu dari beberapa sensor, kamu hanya perlu menghubungkan semua jalur data bersama-sama seperti yang ditunjukkan pada diagram skematik berikut:

Kemudian, unggah kode berikut. Kode ini memindai semua perangkat pada Pin 4 dan mencetak suhu untuk setiap perangkat. Sketsa ini didasarkan pada contoh yang disediakan oleh pustaka DallasTemperature. Kamu juga bisa download codingannya disini.
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into port 4 on the Arduino
#define ONE_WIRE_BUS 4
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
int numberOfDevices; // Number of temperature devices found
DeviceAddress tempDeviceAddress; // We'll use this variable to store a found device address
void setup(void) {
// start serial port
Serial.begin(9600);
// Start up the library
sensors.begin();
// Grab a count of devices on the wire
numberOfDevices = sensors.getDeviceCount();
// locate devices on the bus
Serial.print("Locating devices...");
Serial.print("Found ");
Serial.print(numberOfDevices, DEC);
Serial.println(" devices.");
// Loop through each device, print out address
for(int i=0;i<numberOfDevices; i++) {
// Search the wire for address
if(sensors.getAddress(tempDeviceAddress, i)) {
Serial.print("Found device ");
Serial.print(i, DEC);
Serial.print(" with address: ");
printAddress(tempDeviceAddress);
Serial.println();
} else {
Serial.print("Found ghost device at ");
Serial.print(i, DEC);
Serial.print(" but could not detect address. Check power and cabling");
}
}
}
void loop(void) {
sensors.requestTemperatures(); // Send the command to get temperatures
// Loop through each device, print out temperature data
for(int i=0;i<numberOfDevices; i++) {
// Search the wire for address
if(sensors.getAddress(tempDeviceAddress, i)){
// Output the device ID
Serial.print("Temperature for device: ");
Serial.println(i,DEC);
// Print the data
float tempC = sensors.getTempC(tempDeviceAddress);
Serial.print("Temp C: ");
Serial.print(tempC);
Serial.print(" Temp F: ");
Serial.println(DallasTemperature::toFahrenheit(tempC)); // Converts tempC to Fahrenheit
}
}
delay(5000);
}
// function to print a device address
void printAddress(DeviceAddress deviceAddress) {
for (uint8_t i = 0; i < 8; i++) {
if (deviceAddress[i] < 16) Serial.print("0");
Serial.print(deviceAddress[i], HEX);
}
}Cara Kerja Kode Program
- getDeviceCount() Metode untuk mendapatkan jumlah sensor DS18B20 pada jalur data
- getAddress() Untuk mendapatkan alamat sensor, setiap sensor memiliki kode alamat yang unik sehingga setiap sensor dapat diidentifikasi berdasarkan alamatnya
- getTempC() Untuk mendapatkan hasil pembacaan suhu dari sensor
Kesimpulan
Sensor suhu DS18B20 adalah sensor digital one-wire. Untuk menggunakan sensor ini dengan Arduino, Anda memerlukan library OneWire dan DallasTemperature. Kamu dapat menggunakan satu sensor atau beberapa sensor pada jalur data yang sama karena kamu dapat mengidentifikasi setiap sensor berdasarkan alamat uniknya.
Sekarang, kamu dapat mengembangkan proyek ini lebih lanjut dan misalnya menampilkan pembacaan sensor pada LCD atau OLED.
Produk yang direkomendasikan
Arduino UNO R3 ATMEGA328P DIP ATMEGA 16U2 Compatible – Tanpa Kabel untuk Proyek DIY
Rp97.110USB 2.0 CABLE KABEL DATA PRINTER TYPE A TO B MALE TO MALE 50CM FOR ARDUINO UNO
Rp7.290DS18B20 TO-92 ONE WIRE TEMPERATURE SENSOR FOR ARDUINO UNO MEGA IC
Rp4.900DS18B20 WATERPROOF TEMPERATURE SUHU SENSOR PROBE ARDUINO UNO MEGA
Rp13.950BREADBOARD MINI SOLDERLESS 400 400P
Rp5.85040PCS JUMPER CABLE KABEL 20CM FEMALE TO FEMALE DUPONT FOR BREADBOARD
Rp8.910

























