Diposkan oleh supri ono | 7 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!



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))
  Waitms 10
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



7 comments :

  1. bisa minta tolong jelaskan program-nya secara jelas gan??
    :)

    ReplyDelete
  2. ini pembacaan untuk satu sensor ya mas??

    terima kasih

    ReplyDelete
  3. kalo mau untuk banyak sensor...tinggal di pangila aja programnya..
    misal 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

    ReplyDelete
  4. Mas, Tanya, punya program untuk sensor ds1822 tapi pake AVR ap g?

    ReplyDelete
  5. Mas, Tanya, punya program untuk sensor ds1822 tapi pake AVR ap g?

    ReplyDelete
    Replies
    1. pake AVR?// di postingan ane yang diatas itu pake AVR maz ...pake atmega8

      Delete

Yang sopan.... Sob biar ngak di delete commentnya