1den fazla DS1820 nasıl kullanılır

Başlatan MURSEL, 27 Haziran 2007, 18:13:55

MURSEL

merhaba arkadaşlar  uygulamarımda 4-5 tane ds1820 kullanarak farklı noktalardaki sıcaklıkları ögrenmem gerekiyor   fakat yazılımda nasıl bir algoritma oluşturmam lazım  sadece  1 ds1820 için 1wire.c ve ds1820.c  diriver dosyalrı bulunuyor   peki 5 tane ds1820 için ve ya daha fazla nasıl yol izlemem gerekiyor  ? bilgilendirirseniz sevinirim ( a.e.o)selametle

mika

Merhaba,
Her DS1820 için ayrı I/O pin kullanabilirsiniz. Ya da bütün DS1820'leri tek pine paralel bağlarsınız ve adresleyerek erişim sağlarsınız.
www.rentron.com adresinde DS1820 için örnek uygulamalar var, size fikir verebilir. Kolay gelsin.

Macera

Proteus'da bu konu ile ilgili örnek var.
Kod AVR için C üzerinden yazılmış.
Az bir değişiklik ile PIC için uygulanabilir.
Bendeki örneklerin klasörü
C:\Program Files\Labcenter Electronics\Proteus 6 Professional\SAMPLES\One-Wire\DS18X20 yolunda.
"Art without engineering is dreaming; engineering without art is calculating." -- Steven K. Roberts

MURSEL

tesekkürler arkadaşlar :)@mika senin yöntemle cözdüm 4 pinle 8 farklı sıcaklık okuyabildim  tesekkürler ilginize  selametle

tnen

DS1820lerin her birine ait sei numarası family code u ve CRC kodu vardır. Eğer DS1820leri tek hat uzerinden devrene bağlıycaksan yani paralel gibi bunun için once her sensorun bu kodlarını okuman gerekir.Daha sonra hangi sensoru okumak istiyorsan sensorlere bu kodu gonderip sıcaklıgı almalısın.Data sheet inde ds ye ne gondermen gerektiğini ve gonderdiğin koda karsılık ne aldıgını yazıyor.

include "modedefs.bas"
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3

DEFINE  OSC 4           
DQ      VAR PortA.0	
ID      VAR BYTE[8]     
LCDOUT $FE,1
LCDOUT " TNENDEN SEVGILERLE"
     PAUSE 2000
     LCDOUT $FE,1 
BASLA:
    PAUSE 500          
      
CEVIRIME_BASLA:
    OWOUT DQ, 1, [$33]  

ID_DONGU:
    OWIN DQ, 0, [STR ID\8]
    lcdout $fe,2
    lcdout "Family Code: ",hex2 ID[0],"h"
    lcdout $fe,$c0
    lcdout "Ser : ",HEX2 ID[1],HEX2 ID[2],HEX2 ID[3],HEX2 ID[4],HEX2 ID[5],HEX2 ID[6],"h"
    lcdout $fe,$94
    lcdout "CRC Value = ",HEX2 ID[7],"h"
    
ID_CIHAZ:
    IF ID[0] = $5 THEN
     lcdout $fe,$d4
     lcdout "CIHAZ = BUTON     "
     ENDIF
    IF (ID[0] = $28) OR (ID[0] = $22)OR (ID[0] = $10) THEN
        lcdout $fe,$d4
        lcdout "CIHAZ=SCKLIK SENSORU"
        ENDIF
    IF ID[0] = $01 THEN
        lcdout $fe,$d4
        lcdout "CIHAZ = IBUTON "
     ENDIF
    PAUSE 1000         
    GOTO CEVIRIME_BASLA 
    
    END


Bu kode cihaz ile ilgili bilgileri elde etmene yardımcı olur. Kolay gelsin.