Sabtu, 15 Mei 2010

Multi sensor 1-wire DS18B20 dengan SMART-AVR Basic





Dalam contoh sebelumnya telah saya berikan contoh bagaimana membaca single 1-wire temperature sensor dengan menggunakan SMART-AVR Basic. Sekarang akan saya berikan contoh bagaimana menggunakan fasilitas 1-wire SMART-AVR Basic digunakan untuk membaca multi sensor temperature DS18B20 (max16 pcs), dalam contoh ini saya menggunakan 3pcs DS18B20. Dalam menggunakan mengakses multi sensor 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
FN:OWSEARCH, yang berfungsi mencari dan memetakan ”64-BIT LASERED ROM CODE” 1-wire device ke dalam internal rom table SMART-AVR Basic. Dalam perintah ini juga menghasilkan informasi berapa banyak device yang tersambung dalam 1-wire bus, informasi ini tersimpan dalam variable OWAMOUNT.
FN:OWMATCROM, yang berfungsi untuk mengakses 1-wire yang bersesuaian dengan 64bit ROM yang terkirim, dalam perintah ini harus di tentukan device numbernya dulu dengan memberi nilai dalam variable OWNUMBER dalam SMART-AVR Basic ini dibatasi dari 0 s/d 15 device saja. Seperti biasa saya membuat rangkaian uji coba seperti rangkaian terdahulu, mudah dan pengembangannya tergantung masing-masing pengguna, untuk rangkaian multi sensor bisa dilihat diatas. Berikut listing program multi sensor DS18B20:

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

PREMAIN:
FN:OWRESET
VAR0 = OWPRESENCE
IF VAR0 = 0 THEN LOOP1

FN:OWSEARCH
SEND: 1WIRE device found =
VAR2 = OWAMOUNT
GOSUB TAMPIL
SEND: pcs
GOSUB ENTER

MAIN:
OWNUMBER = 0
SEND: temp.1=
GOSUB PERDEVICE

OWNUMBER = 1
SEND: temp.2=
GOSUB PERDEVICE

OWNUMBER = 2
SEND: temp.3=
GOSUB PERDEVICE

TCOM = 13
WRITE COM

DELAY = 25
GOTO MAIN

PERDEVICE:
FN:OWMATCHROM

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

FN:OWRDROM

VAR0 = OWBUF0
VAR1 = OWBUF1
VAR0 = VAR0 AND 240
SWAP = VAR0
FN:SWAP
VAR0 = SWAP
VAR1 = VAR1 AND 15
SWAP = VAR1
FN:SWAP
VAR1 = SWAP
VAR2 = VAR0 OR VAR1
GOSUB TAMPIL
RETURN

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

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

'3X SPACE CHAR
TCOM = 32
WRITE COM
TCOM = 32
WRITE COM
TCOM = 32
WRITE COM
RETURN

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

Dalam listing program di atas terlihat lebih mudah dalam mengakses multi 1-wire sensor. Program akan mengirim hasilnya melalui RS232 dan bias dilihat dengan menggunakan program hyperterminal biasa, berikut contoh tampilannya:

Demikian contoh program yang bias saya berikan dan selamat mencoba.


Regards,

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

Tidak ada komentar:

Posting Komentar