Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

DS18b20 bağlı mı?

Başlatan ismail kaya, 25 Şubat 2014, 18:50:14

ismail kaya

CCS C ds18b20 iki adet ve sht 11 'i okuyan bir devre hazırladım. Gayet güzel çalışıyor fakat; sensörlerin olup olmadığını nasıl kontrol edebilirim?

if(ds1820_read()) { } bu şekilde hata verdi.

xoom

#1
okuduğunuz sıcaklık değerini bir değişkene aktarıp o şekilde kullanmalısınız.
Örnek LCD'de göstermek istersen..
   OkunanSicaklik= ds1820_read();

   printf(lcd_putc,"Sicaklik:\n %3.1f derece", OkunanSicaklik);

   delay_ms(250;)


Edit: Ben yanlış anladım herhalde..
Alıntı Yapsensörlerin olup olmadığını nasıl kontrol edebilirim?
ne demek?


ismail kaya

#2
LCD'de gösteriyorum o anda sensörü çıkardığımda ekranda görünmesin istiyorum normalde 3 sensör program başladığında belli süre sonra her sensör ekranda değişiyor. takılı olmayan ekranda görünmesin istiyorum.
       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


şöyle birşey buldum CCS C de bir deneyeyim. yada alternatif ne yapabilirim

mesaj birleştirme:: 25 Şubat 2014, 19:22:32

  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


bu kodun CCS C karşılığı nedir acaba?

MrDarK

Ds18b20 takılı değilken -'li değerde bir veri alırsınız ; O zaman sorgu kolay eğer ölçüm değeri 0'dan küçükse Error yazarsın bu kadar
Picproje Eğitim Gönüllüleri ~ MrDarK

ismail kaya

-0.06 degeri alıyor ama ben -30 dan +100 dereceyi ölçeceğim bu değeri ihmal mi edeyim?

MrDarK

#5
senin için -li değer önemli ise bu yöntemi kullanamazsın tabiki.

CCS için örnek kod verebileceğim yer ;

http://etepic.com/index.php?topic=694.0

Burada dökümanlar mevcut. Eğer bu kütüphaneyi kullanırsan zaten kırmızı renkteki şu kısımda ;

float ds1820_read()
{
 int8 busy=0, temp1, temp2;
 signed int16 temp3;
 float result;

 onewire_reset();
 onewire_write(0xCC);
 onewire_write(0x44);

 while (busy == 0)
  busy = onewire_read();

 onewire_reset();
 onewire_write(0xCC);
 onewire_write(0xBE);
 temp1 = onewire_read();
 temp2 = onewire_read();
 temp3 = make16(temp2, temp1);
 
 result = (float) temp3 / 2.0;   //Calculation for DS18S20 with 0.5 deg C resolution
// result = (float) temp3 / 16.0;  //Calculation for DS18B20 with 0.1 deg C resolution
 
 delay_ms(200);
 return(result);
}


Yazılımın takılacaktır while döngüsü içinde onu o şekilde kilitlenecek şekilde değilde belirli bir süre cevap gelmezse şeklinde modifiye edip kullanabilirsin. Buda -li değerleride alarak yaptığın durum olur ;)

Bu arada konu gereği Ete Hocamıza 'da hazırlayıp paylaştığı döküman için teşekkürler :)
Picproje Eğitim Gönüllüleri ~ MrDarK