Arduino, Project, Sensors, TUTORIAL

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 Supply3V to 5.5V
Current Consumption1mA
Temperature Range-55 to 125°C
Accuracy±0.5°C
Resolution9 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 :

  1. Arduino Uno
  2. Kabel USB
  3. Sensor Suhu DS18B20 versi TO-92
  4. Sensor Suhu DS18B20 waterproof
  5. Breadboard
  6. Jumper

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 :

  1. Buka software Arduino IDE Kemudian klik ikon library di sisi kiri
  2. Ketik “ ds18b20 ” di kotak pencarian
  3. Carilah DallasTemperature Library karya Miles Burton
  4. 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.

Tinggalkan Balasan