Thumbnail mengakses sensor suhu DS18B20

Tutorial mengakses sensor suhu DS18b20

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 suhu - DS18B20

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

  1. Interface menggunakan 1-wire sebagai komunikasi data
  2. Terdapat pengenal unik 64 bit pada setiap sensor
  3. Dapat mengukur suhu dari range -55°C sampai +125 °C
  4. Keakurasian sensor yaitu +/-0.5 °C  pada suhu -10 °C sampai +85 °C
  5. Resolusi sensor yaitu 9 – 12 bit
  6. Dapat mengkonversi data suhu 12-bit (digital word) hanya membutuhkan waktu 750 ms
  7. Mempunyai konfigurasi alarm yang dapat disetting
  8. 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

Rangkaian Sensor suhu DS18B20 dengan arduino Uno

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 :

  1. Mac : (home directory)/Documents/Arduino/libraries
  2. PC (Windows) : program files (x86) -> Arduino -> libraries
  3. 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

Rangkaian multiple Sensor suhu DS18B20 dan arduino uno

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]

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *