Sabtu, 15 Mei 2010

single 1-wire temperatur sensor DS18B20 dengan SMART-AVR Basic



Dalam SMART-AVR juga telah tersedia fasilitas untuk mengakses one-wire (1-wire) bus. Dalam contoh kali ini saya akan memberikan bagaimana mengakses single 1-wire device. Devicde yang saya gunakan dalam contoh ini adalah temperature sensor DS18B20. Dengan menggunakan rangkaian di atas, terlihat rangkaian sangat sederhana, hanya menggunakan 3 komponen pokok (controller, sensor dan rs232 chip), ini saya maksudkan untuk rangkaian uji coba, setelah mengerti cara menggunakannya bias dikembangkan sendiri dengan menggunakan lcd module atau yang lainnya. Ada baiknya untuk memulai project ini membaca terlebih dahulu datasheet DS18B20. Dalam menggunakan single 1-wire ini ada beberapa perintah yang digunakan dalam SMART-AVR Basic yaitu:
FN:OWRESET, yang berfungsi untuk me-reset 1-wire device
FN:OWWRITE, yang berfungsi menulis 1byte data ke 1-wire device
FN:OWREAD, yang berfungsi membaca 1byte data ke 1-wire device
Dalam proses menulis maupun membaca data tersimpan di OWBUF0. Maksudnya dalam proses write, data yang terkirim adalah nilai dari variable OWBUF0. Demikian pula sebaliknya, dalam proses read, data yang terbaca disimpan dalam variable OWBUF0. Dalam contoh program yang saya berikan akan menampilkan nilai temperature yang bisa dilihat dengan menggunakan hyperterminal yang umum ada dalam program MS Windows. Berikut contoh listing programnya:


'****************************************
'READ temperature single 1WIRE DS18B20
'****************************************
DELAY = 5
SEND: membaca single DS18B20
GOSUB ENTER
DELAY = 50

MAIN:
FN:OWRESET
VAR0 = OWPRESENCE
IF VAR0 = 0 THEN LOOP1
'COMMAND SKIP ROM CCHex / 204Dec
OWBUF0 = 204
FN:OWWRITE

'COMMAND CONVERT TEMP 44Hex / 68Dec
OWBUF0 = 68
FN:OWWRITE

FN:OWRESET
'COMMAND SKIP ROM CCHex / 204Dec
OWBUF0 = 204
FN:OWWRITE

'COMMAND READ SCRATCHPAD BEHex / 190Dec
OWBUF0 = 190
FN:OWWRITE

FN:OWREAD
VAR0 = OWBUF0

FN:OWREAD
VAR1 = OWBUF0

VAR0 = VAR0 AND 240
SWAP = VAR0
FN:SWAP
VAR0 = SWAP
VAR1 = VAR1 AND 15
SWAP = VAR1
FN:SWAP
VAR1 = SWAP
VAR2 = VAR0 OR VAR1
SEND: TEMPERATURE =
GOSUB TAMPIL

TCOM = 13
WRITE COM
DELAY = 100
GOTO MAIN

LOOP1:
SEND: 1WIRE chip tidak ditemukan
GOSUB ENTER
DELAY = 200
GOTO MAIN

TAMPIL:
HHI = 0
HLO = VAR2
FN:HEX2BCD

VAR0 = BCD43 AND 15
D2ASC = VAR0
FN:DASC
TCOM = D2ASC
WRITE COM

VAR0 = BCD21 AND 240
SWAP = VAR0
FN:SWAP
D2ASC = SWAP
FN:DASC
TCOM = D2ASC
WRITE COM

VAR0 = BCD21 AND 15
D2ASC = VAR0
FN:DASC
TCOM = D2ASC
WRITE COM

TCOM = 32
WRITE COM
TCOM = 32
WRITE COM
RETURN

ENTER:
DELAY = 5
TCOM = 13
WRITE COM
TCOM = 10
WRITE COM
RETURN
'****************************************

Dan berikut adalah hasil yang bisa dilihat dengan hyperterminal.

Selamat mencoba dan tunggu contoh program untuk multi-point sensor 1-wire DS18B20 pada waktu yang akan datang.

Regards,

Hendryawan
henel.automation@gmail.com
0812 17 13 025

Tidak ada komentar:

Posting Komentar