DS1820 adalah sensor suhu yang dikeluarkan oleh Dallas Semiconductor. Untuk membacanya menggunakan protokol 1 wire communication. Dimana hanya ada tiga kabel yang terdiri dari +5V, GND dan DQ (Data Input/Output). Datasheet DS1820 dapat diunduh DS18S20.
Keunggulan dari DS1820 adalah, output berupa data digital dengan nilai ketelitian 0,5 derajat Celcius sehingga mempermudah pembacaan oleh mikrokontroller.
Pada tulisan ini akan digunakan compiler CodeVision untuk membuat programnya. Pada CodeVision sudah tersedia fasilitas wizard untuk mempermudah pengguna dalam membuat program. Termasuk salah satunya adalah device DS1820. Sehingga kita tidak perlu susah payah membuat coding untuk membaca DS1820.
Rangkaian yang digunakan adalah berikut:
Penjelasan:
[sourcecode]
// DS1820 Temperature Sensor functions
#include <ds1820.h>
#include <stdio.h>
#include <math.h>
[/sourcecode]
fungsi untuk mendeklarasikan library yang akan digunakan.
[sourcecode]
// maximum number of DS1820 devices
// connected to the 1 Wire bus
#define MAX_DS1820 8
// number of DS1820 devices
// connected to the 1 Wire bus
unsigned char ds1820_devices;
// DS1820 devices ROM code storage area,
// 9 bytes are used for each device
// (see the w1_search function description in the help)
unsigned char ds1820_rom_codes[MAX_DS1820][9];
char lcd_buffer1[33],lcd_buffer2[33];
unsigned char rom_codes[8][9];
unsigned char temp, Suhu;
[/sourcecode]
fungsi coding di atas adalah mendeklarasikan variabel yang akan digunakan.
[sourcecode]
ds1820_devices=w1_search(0xf0,ds1820_rom_codes);
[/sourcecode]
baris dia tas berfungsi untuk mendeteksi jumlah device DS1820 yang terhubung.
[sourcecode]
sprintf (lcd_buffer1,"%-u DEVICE(S) DETECTED",ds1820_devices);
lcd_clear();
lcd_gotoxy(0,0);lcd_puts(lcd_buffer1);
delay_ms(1500);
[/sourcecode]
fungsi di atas untuk menampilkan jumlah device yang dideteksi.
[sourcecode]
for (i=0;i<ds1820_devices;)
{ temp=ds1820_temperature_10(&rom_codes[i][0]);
sprintf (lcd_buffer1,"t%-u=%-i.%-u\xf8C\n\r",++i,temp/10,abs(temp%10));
};
sprintf (lcd_buffer2,"Status: Low");
lcd_clear();
lcd_gotoxy(0,0);lcd_puts(lcd_buffer1);
lcd_gotoxy(0,1);lcd_puts(lcd_buffer2);
delay_ms(500);
[/sourcecode]
fungsi: untuk membaca sensor DS1820 dan menampilkan hasil pada LCD 16×2
Untuk source code unduh disini.
Demikian semoga bermanfaat.
Mas, boleh minta source code nya, saya coba klik link nya tiadak kebuka, trims..
Silakan cek link, sudah saya perbaiki. trims
Mas, mau tanya untuk keluaran DS18B20 mengapa tidak dimasukan kedalam port adc saja ? apakah program untuk LM35 bisa digunakan untuk ds18b20 juga ?dengan fungsi yang sama pendeteksi suhu, terimkasih..
Sensor suhu DS18B20 dan LM35 berbeda. LM35 outputnya masih analog, sehingga harus dibaca dengan ADC kemudian di kalibrasi dengan sensor suhu. Sementara DS18B20 outputnya sudah digital dan tidak perlu dikalibrasi lagi. Cara pembacaan berbeda, DS18B20 dibaca dengan metode 1 wire.
bagaimana jika sensor ini saya bandingkan dengan termometer badan??
apa sensor ds18b20 ini tidak perlu kalibarasi lagi??
makasi
Sudah saya balas via email. terima kasih.
mas itu pake codevision berpa..kog saya simulasi pake proteus tidak jalan…kalo bisa minta source code sama file proteus yang bisa simulasi…
kirim ke: yusdianp@gmail.com
makasih ya mas sebelumnya
mas tanya,apa mas sudah pernah monitoring suhu dengan ngirim data dari sensor ke vb6.0.saya sudah mencobanya. saya mencoba memisahkan data t1 hingga t4 pada pada setiap text box namun data masih kacau.mohon banntuannya
Ya pernah, sudah ada artikel saya yang membahas masalah ini di blog ini juga.
Kenapa sensor DS18B20 Tidak perlu dikalibrasi?
mohon penjelasan rinci.
terima kasih.
putra.nainggolan@yahoo.co.id
Karena sesuai datasheetnya, output sudah berupa nilai suhu dan tidak disediakan fasilitas untuk kalibrasi.
Reblogged this on Rohmadi Shop.
mas ko saya coba di simulasi proteus dan langsung di praktekin di mikronya sensornya ga nampilin suhu yah???
mas ko saya coba source code nya dicoba di proteus ga berhasil tampil dan di coban ke mikronya langsung juga ga bisa? boleh minta source kode yang sudah berhasil
silakah donwload pada link yang ada.
abs(temp%10)
itu fungsinya buat apa? kenapa error ya gan..??
masukkan library berikut: