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:


// DS1820 Temperature Sensor functions
 #include <ds1820.h>
 #include <stdio.h>
 #include <math.h>

fungsi untuk mendeklarasikan library yang akan digunakan.


// 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;

fungsi coding di atas adalah mendeklarasikan variabel yang akan digunakan.


ds1820_devices=w1_search(0xf0,ds1820_rom_codes);

baris dia tas berfungsi untuk mendeteksi jumlah device DS1820 yang terhubung.


sprintf (lcd_buffer1,"%-u DEVICE(S) DETECTED",ds1820_devices);
 lcd_clear();
 lcd_gotoxy(0,0);lcd_puts(lcd_buffer1);
 delay_ms(1500);

fungsi di atas untuk menampilkan jumlah device yang dideteksi.

 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);

fungsi: untuk membaca sensor DS1820 dan menampilkan hasil pada LCD 16×2

Untuk source code unduh disini.

Demikian semoga bermanfaat.