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