Selasa, 05 April 2016

Cara Menampilkan Suhu dengan Arduino DS18S20 sensor

Hallo sobat AWI'ers, Sobat Arduino Indonesia :). Kebetulan lagi ada sensor suhu waterproof DS18S20 yang bakal di pakai sama tim ROV Indonesia untuk ikut kompetisi MATE 2016 di Hong Kong 2016 bulan ini,

yuk kita ulik sedikit bagaimana cara menamilkan data sensor suhu waterproof tersebut pada serial monitor arduino.

Yang belum tau sensor suhu waterprrof, bentuk nya seperti dibawah ini

ada 3 kabel pada sensor tersebut
  • hitam (ground)
  • merah (vcc 5V)
  • kuning/putih (data)
pada konfigurasi sesnsor ke arduino antara kabel kuning dan merah menggunakan resistor 4K7 ohm

susunan sebagai berikut :

untuk pemrograman, siapkan library oneWire.h yang bisa di searching terlebih dahulu

dan berikut pemrogramannya

#include <OneWire.h>

int DS18S20_Pin = A1; //DS18S20 Signal pin on digital 2

//Temperature chip i/o
OneWire ds(DS18S20_Pin); // on digital pin 2

void setup(void) {
 Serial.begin(9600);
}

void loop(void) {
 float temperature = getTemp();
 Serial.println(temperature);

 delay(100); //just here to slow down the output so it is easier to read

}


float getTemp(){
 //returns the temperature from one DS18S20 in DEG Celsius

 byte data[12];
 byte addr[8];

 if ( !ds.search(addr)) {
   //no more sensors on chain, reset search
   ds.reset_search();
   return -1000;
 }

 if ( OneWire::crc8( addr, 7) != addr[7]) {
   Serial.println("CRC is not valid!");
   return -1000;
 }

 if ( addr[0] != 0x10 && addr[0] != 0x28) {
   Serial.print("Device is not recognized");
   return -1000;
 }

 ds.reset();
 ds.select(addr);
 ds.write(0x44,1); // start conversion, with parasite power on at the end

 byte present = ds.reset();
 ds.select(addr); 
 ds.write(0xBE); // Read Scratchpad


 for (int i = 0; i < 9; i++) { // we need 9 bytes
  data[i] = ds.read();
 }

 ds.reset_search();

 byte MSB = data[1];
 byte LSB = data[0];

 float tempRead = ((MSB << 8) | LSB); //using two's compliment
 float TemperatureSum = tempRead / 16;

 return TemperatureSum;

}
untuk hasil output bisa diihat di serial monitor





Selamat Mencoba

Salam Arduino Indonesia

4 komentar:

  1. asalamualaikum. kak mau nanya kenapa hasil output saya tidak sesuai dg yg d contoh padahal sudah mengikuti caranya ?
    hasil outputnya -1000.00

    BalasHapus
    Balasan
    1. Komentar ini telah dihapus oleh pengarang.

      Hapus