DS18B20 bağlı değilse nasıl anlarız??

Başlatan vale9, 28 Ağustos 2013, 16:13:47

vale9

Selamlar,

Bir tasarımımda DS18B20 sıcaklık sensörü kullanıyorum, herşey normal çalışıyor. Fakat sorunum şu; sensörün takılı olup olmadığını da anlamak istiyorum.

Bunu anlamak için okuduğum 16 bitlik değerin tamamı 1 ise; sensör yoktur diye mesaj üretiyorum. Ve işe yarıyor.

Fakat ölçtüğüm sıcaklık 0 derece civarına geldiğinde yine sensör yok mesajı alıyorum. Muhtemelen bu sefer de hep 1 geliyor. Aslında 0 derecenin karşılığı yine bütün bitlerin sıfır olması ama sanırım negatife geçerken tüm bitler 1 geliyor (-0,xxx gibi bir yerde). Yani sensörün takılı olmadığı durumla aynı!

Bu yöntem doğru mudur ya da sensörün takılı olmadığı anlamak için daha basit bir yöntem biliyor musunuz?

Teşekkürler.
Hayat 1'ler ve 0'lardan ibarettir.

OptimusPrime

https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

vale9

Hocam CRC nasıl kullanırız? Çok karmaşık görünüyor. Anladığım kadarıyla gelen bilginin doğruluğunu onaylamak için kullanılan bir çeşit counter
Hayat 1'ler ve 0'lardan ibarettir.

Kabil ATICI

sıcaklık değeri sıfır da iken tamam sıfır olur. Sıfırın hemen altına indiğinde tüm bitler 1 olur. Onun için 48 bit bir seri kodu vardır onu okuttur.
64 bitliktir ama
8 bit CRC (istiyorsan işlemezsin)+48 bit seri kodu (her alet için farklıdır)+8 bitlik aile kodu (28h)) şeklinde.
Bu değeri okuttur hatta istiyorsan kaydedersin ve bu değere göre kontrol ettirirsin.
ambar7

MC_Skywalker


Bayramsumbul

Merhabalar...Proteus'un Sample Dosyalarında Aynı Hatta Bağlı Cihazların Listesini Çıktı Alan Bir Örnek Vardı Onu İnceleyebilirsiniz...İyi Çalışmalar.
Bir Elektronik Meraklısının Serüveni...

vale9

Teşekkürler arkadaşlar, dediğiniz gibi ROM okursam burdan anlayabilirim. Bunu deneyeceğim.

Sanırım daha basit bir yolu da yok. Çünkü DQ pinine pull-up direnci bağlı olduğu için sensör bağlı olsa da olmasa da pini high olarak görüyor. Kalıcı olarak konum değiştirseydi oradan basitçe anlayabilirdim.
Hayat 1'ler ve 0'lardan ibarettir.

dombilik

            SYMBOL DQ_1 = PORTE.0		'Temp sensör 1 data hattı		
            SYMBOL DQ_DIR_1  = TRISE.0  
            ..
            ..
SENS_CONTROL_1:
            'TEMP 1 KONTROL
            LOW DQ_1                
            DELAYUS 500          
            DQ_DIR_1 = 1          
            DELAYUS 100           
            IF DQ_1 = 1 THEN
                 CLS
                 PRINT AT 1,1,"TEMP 1"
                 PRINT AT 2,1,"ARIZA!"
                 DELAYMS 1000
                 GOTO SENS_CONTROL_1
            ENDIF


Geçmişte böyle birşeyler yapıp kontrol etmişim..Bir dene istersen..
Bildiklerini kime miras bıraktın?kimseyemi? O zaman bildiklerinin ne önemi kalır. ******** /////////// ******** PROTON-ASM PROTEUS 7.4 SP3 EAGLE 5.40

vale9

Alıntı yapılan: dombilik - 28 Ağustos 2013, 20:48:03

Geçmişte böyle birşeyler yapıp kontrol etmişim..Bir dene istersen..

Dostum teşekkürler, ETE Hocamla da konuştuk o da aynı yöntemi önerdi (datasheet'teki Initialization Timing).

Bu şekilde denedim, çok düzgün çalışıyor :)
Hayat 1'ler ve 0'lardan ibarettir.