DS18B20 adalah Jenis sensor yang berfungsi untuk mendeteksi suhu ruangan dan merupakan jenis seri sensor terbaru dari keluaran produsen Maxim.
Introduction
Sensor Suhu DS18B20 merupakan jenis sensor digital 1-wire. Sensor ini memiliki 64-bit serial number yang dapat dipasang lebih dari satu penggunaan sensor dalam satu mikro. Sensor ini sangat berguna untuk memperoleh nilai suhu dan projek projek kontrol suhu. Selain harganya murah, sensor ini efektif menghasilkan data yang akurat.
Sensor Suhu DS18B20 |
- GND dihubungkan ke pin ground Arduino
- DQ dihubungkan ke pin Digital Arduino
- VDD dihubungkan ke pin 5volt Arduino
Sensor Suhu DS18B20 Waterproof |
Spesifikasi sensor suhu DS18B20:
- Batas Power supply: 3.0V sampai 5.5V
- Kisaran Suhu: -55ºC sampai +125ºC
- Keakuratan data +/-0.5 ºC (antara -10ºC sampai 85ºC)
Download DS18B20 datasheet.
Schematic
Terdapat 3 schematic berbeda yang dapat dioperasikan dengan Arduino, tergantung jenis sensor yang digunakan.
Schematic Sensor DS18B20 Normal |
Pada rangkaian sensor pertama ini bisa ditambahkan resistor 4,7 ohm yang berfungsi sebagai pullup pin digital atau penguat sinyal data yang akan dikirimkan ke pin digital arduino.
Schematich Sensor DS18B20 Waterproof |
Pada rangkaian kedua, jika yang digunakan adalah jenis sensor waterproof, maka signal pin bisa langsung dihubungkan ke pin digital arduino
Schematich Sensor DS18B20 dengan Breakboard |
Pada rangkaian ketiga ini sama dengan rangkaian kedua, tinggal menghubungkan pin signal sensor ke pin digital arduino. Pada breadboard DS18B20 ini sudah dilengkapi dengan driver pullup yang memungkinkan data yang dambil oleh sensor akan lebih akurat.
Installing Library
Agar arduino IDE bisa mengenali program sensor DS18B20 terlebih dahulu diinstal library sensor DS18B20.
- Pertama, buka Software Arduino IDE. Kemudian buka Sketch > Include Library > Manage Libraries.
- Ketik OneWire pada kotak pencarian, kemudian install library by Paul Stoffregen
Menambah Library |
- Setelah itu ketik dallas pada kotak pencarian, kemudian install library by Miles Burton
Library by Paul Stoffregen |
Atau bisa menambahkan library secara manual kedalam program files (x86) -> Arduino -> libraries pada windows dengan mendownload file dibawah ini:
Download library oneWire.h
Download library Dallas Temperature Control
Source Code
Setelah selesai menambahkan library yang dibutuhkan, upload kode berikut ke Arduino:
/*********
Hestech indonesia
Complete project details at https://www.hestech.id
Based on the Dallas Temperature Library example
*********/
#include <OneWire.h>
#include <DallasTemperature.h>
// signal sensor dihbungkan pada Pin digital pin 2
#define ONE_WIRE_BUS 2
// 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);
}
Terdapat banyak cara untuk memperoleh hasil sensor suhu ini. Namun, jika kamu hanya menggunakan 1 sensor saja, kode program diatas sudah cukup terpenuhi.
Demonstration
Setelah diupload, kemudian buka serial monitor maka akan menghasilkan output seperti pada gambar berikut:
Kamu juga bisa membuat lebih dari 1 sensor yang dapat bekerja secara bersamaan. Berikut adalah schematicnya:
Multiple Sensor
Tampilan hasil snsor DS18B20 pada serial monitor |
Multiple Sensor
Rangkailah komponen sensor dan arduino seperti pada gambar dibawah ini:
Kemudian upload program dibawah ini:
Menghubungkan tiga sensor ds18b20 ke arduino |
/*
* Hestech Indonesia
* Complete Project Details https://www.hestech.id
*/
#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
Sensor suhu DS18B20 adalah sensor digital onewire. Untuk menggunakan sensor ini dengan Arduino, kamu memerlukan libray OneWire dan DallasTemperature. kamu dapat menggunakan satu sensor atau lebih pada jalur data yang sama, karena masing masing sensor dapat diidentifikasi berdasarkan alamat sensor itu sendiri.
Display LCD
Selain serial monitor sebagai output display, LCD juga bisa ditambahkan sebagai penamil hasil kalibrasi sensor ds18b20, rangkaiannya adalah sebagai berikut:
Download: Arduino_Sensor_ds18b20_display_LCD.fzz
Kemudian upload program dibawah ini kedalam arduino:
Selain serial monitor sebagai output display, LCD juga bisa ditambahkan sebagai penamil hasil kalibrasi sensor ds18b20, rangkaiannya adalah sebagai berikut:
Download: Arduino_Sensor_ds18b20_display_LCD.fzz
Display LCD |
/* --- www.hestech.id --- */
#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 "Multiple Sensor"
lcd.setCursor(00, 1); //set pada baris 2 dan kolom 1
lcd.print("hestech.id"); //menuliskan "hestech.id"
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 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 mempermudah hitungan sensor dari 1
printTemperature(tempDeviceAddress);
delay (1500);
lcd.clear();
}
}
}
comment 0 komentar
more_vert