Membaca Suhu DS1820 dengan ATMega16

DS1ds1820820 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:
schematic
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.

You may also like...

19 Responses

  1. Regie says:

    Mas, boleh minta source code nya, saya coba klik link nya tiadak kebuka, trims..

  2. Regie says:

    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..

    • roohmadi says:

      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.

  3. Nilam Krisna says:

    bagaimana jika sensor ini saya bandingkan dengan termometer badan??
    apa sensor ds18b20 ini tidak perlu kalibarasi lagi??
    makasi

  4. yusdian says:

    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

  5. bimbi says:

    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

  6. Jepri Nainggolan says:

    Kenapa sensor DS18B20 Tidak perlu dikalibrasi?
    mohon penjelasan rinci.
    terima kasih.
    putra.nainggolan@yahoo.co.id

  7. Yusuf Wibisono says:

    mas ko saya coba di simulasi proteus dan langsung di praktekin di mikronya sensornya ga nampilin suhu yah???

  8. 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

  9. Dian says:

    abs(temp%10)
    itu fungsinya buat apa? kenapa error ya gan..??

  10. Eka Sari says:

    Mas mau tanya, cara untuk kontrol suhu dengan menggunakan ds18b20 gimana yah? saya ingin membuat kontrol suhu dengan set point di 40 derajat celcius dan 100 derajat celcius. mohon bimbingan nya.terimakasih

  11. mikel says:

    Mas saya coba sensor ds18b20 baik di hardware maupun proteus, sesuai dengan coding yang ada di example cvavr kok terkadang muncul -9999 ya? mohon bantuannya untuk skripsi Mas.

Leave a Reply

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