undefined undefined.
Diposkan oleh
ono
|
8
komentar
DS1822 + BASCOM AVR + ATMEGA 8 = LOVE
Ini adalah postingan kedua dari Meka...sebenarnya postingan ini sudah pernah penulis tampilkan di laman fecebook tepatnya di grup mikrokontroler dan komputer.
Agan semua pasti sudah lebih tahu dari meka...kalo saat ini banyak sekali jenis sensor suhu dengan tingkat akurasi yang akurat. ya salah satunya sensor DS1822 sensor ini mengunakan komunikasi 1 ware (1 jalur ), untuk project ini penulis mengunakan mikrokontrler atmega8 dengan kompiler BASCOM AVR... cekidot ni penampakanya.
skematik rangkaian sensor DS1822 dapat dilihat berikut ini!
langkah pertama sobat harus baca dulu alamat dari sensor DS1822. Baca ROM maksud ane sobat...ni programnya...
Agan semua pasti sudah lebih tahu dari meka...kalo saat ini banyak sekali jenis sensor suhu dengan tingkat akurasi yang akurat. ya salah satunya sensor DS1822 sensor ini mengunakan komunikasi 1 ware (1 jalur ), untuk project ini penulis mengunakan mikrokontrler atmega8 dengan kompiler BASCOM AVR... cekidot ni penampakanya.
skematik rangkaian sensor DS1822 dapat dilihat berikut ini!
sebelum proses coding terlebih dahulu sobat semua harus tahu command yang digunakan untuk proses pembacaan isi memory sensor DS1822. berikut ini tabelnya sob...
No.
|
Comand
|
Description
|
Protocol
|
Keterangan
|
1.
|
Convert T
|
Konversi temperatur
|
44h
|
|
2.
|
Baca Scratchpad
|
Baca isi memory
scratchpad beserta CRC
|
BEh
|
Diikuti 9bit data ke
master
|
3.
|
Tulis Scratchpad
|
Tulis data pada
memory scratchpad
|
4Eh
|
Mater mengirim 3bit
|
4.
|
Copy scratchpad
|
Copy data scratchpad
kemudian simpan di EEPROM
|
48h
|
|
5.
|
Recall E
|
Memangil ulang data
EEPROM kemudian simpan si Scratchpad
|
B8h
|
|
6.
|
Baca power
|
Baca sinyal power ke
master โ hanya untuk mode parasite power
|
B4h
|
langkah pertama sobat harus baca dulu alamat dari sensor DS1822. Baca ROM maksud ane sobat...ni programnya...
regfile = "m8def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portd.3 , Rs = Portd.2
Config Lcd = 16 * 2 : Cursor Noblink Off : Cls
Config 1wire = Portb.0
Dim Rom(8)as Byte , Count As Byte
Do
1wreset : 1wwrite &H33
For Count = 1 To 8
Rom(count) = 1wread()
Next Count
Upperline : Lcd Hex(rom(1)) ; "." ; Hex(rom(2)) ; "." ; Hex(rom(3)) ; "." ; Hex(rom(4))
Lowerline : Lcd Hex(rom(5)) ; "." ; Hex(rom(6)) ; "." ; Hex(rom(7)) ; "." ; Hex(rom(8))
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portd.3 , Rs = Portd.2
Config Lcd = 16 * 2 : Cursor Noblink Off : Cls
Config 1wire = Portb.0
Dim Rom(8)as Byte , Count As Byte
Do
1wreset : 1wwrite &H33
For Count = 1 To 8
Rom(count) = 1wread()
Next Count
Upperline : Lcd Hex(rom(1)) ; "." ; Hex(rom(2)) ; "." ; Hex(rom(3)) ; "." ; Hex(rom(4))
Lowerline : Lcd Hex(rom(5)) ; "." ; Hex(rom(6)) ; "." ; Hex(rom(7)) ; "." ; Hex(rom(8))
Waitms 10
Loop
Loop
selantjutnya gunakan program ini untuk membaca besarnya temperatur yang dibaca oleh sensor...
$regfile = "m8def.dat"
$crystal = 8000000
Deflcdchar 0 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portd.3 , Rs = Portd.2
Config Lcd = 16 * 2 : Cursor Noblink Off : Cls
Config 1wire = Portd.7
Dim Ds1822 As Integer
Dim Suhu As Single
Dim Tampil_suhu As String * 5
Dim Ds1822_rom As String * 16
Ds1822_rom = "28.04.32.F6.01.00.00.16"
Do
1wreset
1wwrite &H55 'mach rom
1wwrite &H28 : 1wwrite &H04 : 1wwrite &H32 : 1wwrite &HF6
1wwrite &H01 : 1wwrite &H00 : 1wwrite &H00 : 1wwrite &H16
1wwrite &H44 'mulai komversi '
1wreset
1wwrite &H55
1wwrite &H28 : 1wwrite &H04 : 1wwrite &H32 : 1wwrite &HF6
1wwrite &H01 : 1wwrite &H00 : 1wwrite &H00 : 1wwrite &H16
1wwrite &HBE
Ds1822 = 1wread(8)
1wreset
Ds1822 = Ds1822 And &HFFF
Suhu = Ds1822 * 0.0625
Tampil_suhu = Fusing(suhu , "#.#")
Upperline : Lcd "Sensor DS1822"
Lowerline : Lcd "Temp: " ; Tampil_suhu ; Chr(0) ; "C" : Waitms 10
Loop
$crystal = 8000000
Deflcdchar 0 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portd.3 , Rs = Portd.2
Config Lcd = 16 * 2 : Cursor Noblink Off : Cls
Config 1wire = Portd.7
Dim Ds1822 As Integer
Dim Suhu As Single
Dim Tampil_suhu As String * 5
Dim Ds1822_rom As String * 16
Ds1822_rom = "28.04.32.F6.01.00.00.16"
Do
1wreset
1wwrite &H55 'mach rom
1wwrite &H28 : 1wwrite &H04 : 1wwrite &H32 : 1wwrite &HF6
1wwrite &H01 : 1wwrite &H00 : 1wwrite &H00 : 1wwrite &H16
1wwrite &H44 'mulai komversi '
1wreset
1wwrite &H55
1wwrite &H28 : 1wwrite &H04 : 1wwrite &H32 : 1wwrite &HF6
1wwrite &H01 : 1wwrite &H00 : 1wwrite &H00 : 1wwrite &H16
1wwrite &HBE
Ds1822 = 1wread(8)
1wreset
Ds1822 = Ds1822 And &HFFF
Suhu = Ds1822 * 0.0625
Tampil_suhu = Fusing(suhu , "#.#")
Upperline : Lcd "Sensor DS1822"
Lowerline : Lcd "Temp: " ; Tampil_suhu ; Chr(0) ; "C" : Waitms 10
Loop
bisa minta tolong jelaskan program-nya secara jelas gan??
ReplyDelete:)
program yang mana satu gan??
ReplyDeleteini pembacaan untuk satu sensor ya mas??
ReplyDeleteterima kasih
kalo mau untuk banyak sensor...tinggal di pangila aja programnya..
ReplyDeletemisal buat rutin untuk panggil 1 sensor dengan rom yang telah dibaca
kemudian panggil sensor ke 2 dengan rom sensor 2
1wwrite &H28 : 1wwrite &H04 : 1wwrite &H32 : 1wwrite &HF6
1wwrite &H01 : 1wwrite &H00 : 1wwrite &H00 : 1wwrite &H16
ni perintah march rom....tinggal ganti sesuai dengan rom sensor yang ingin dibaca
Mas, Tanya, punya program untuk sensor ds1822 tapi pake AVR ap g?
ReplyDeleteMas, Tanya, punya program untuk sensor ds1822 tapi pake AVR ap g?
ReplyDeletepake AVR?// di postingan ane yang diatas itu pake AVR maz ...pake atmega8
Deletesore mas
ReplyDeletebutuh pencerahan mas,saya coba hasil yg terbaca 255.9 C
Bisa bantu mas