Başlangıç > Donanım/Yazılım > DS18B20 den Sıcaklık Okumada Farklı Bir Yöntem

DS18B20 den Sıcaklık Okumada Farklı Bir Yöntem

DS18B20 ölçüm sonucunu float olarak vermektedir. Fakat bu değişken tipini işlemek 8 bitlik bir mikrokontrolcü tarafından oldukça kasvetli bir iştir. Örneğin PIC16F84 de float bir değişkenin içerisinden ondalık ve tam kısımların ayırt edilebilmesi için yapılması gereken işlemler, program belleğinin neredeyse yarısını kaplayacak kadar yer işgal eder. Fakat aşağıdaki gibi alternatif bir yöntemle ondalık kısım (0.1 hassasiyetle) ve tam kısım, basit işlemlerle de elde edilebilir.

Aşağıdaki fonksiyon örneği pozitif sıcaklık değerleri için geçerlidir. Fonksiyon bReturnOption 1 ile çağırıldığında sıcaklığın tam sayı değerini, 0 ile çağırıldığında ise sıcaklığın ondalık değerini geri döndürür.

unsigned char bGetTemperature(unsigned char bReturnOption)
{
unsigned char bTemperatureLSB, bTemperatureMSB, i, bReturned;
vReset();
vWriteByte(0xCC);
vWriteByte(0x44);
for(i=0;i<8;i++) __delay_ms(100);
vReset();
vWriteByte(0xCC);
vWriteByte(0xBE);
bTemperatureLSB=bReadByte();
bTemperatureMSB=bReadByte();
vReset();

if(bReturnOption==1)
{
bReturned=((bTemperatureMSB<<4)|(bTemperatureLSB>>4));
}
else
{
bReturnOption=bTemperatureLSB&0x0F;
switch(bReturnOption)
{
case 0:
case 1: bReturned=0; break;
case 2:
case 3: bReturned=1; break;
case 4: bReturned=2; break;
case 5:
case 6: bReturned=3; break;
case 7: bReturned=4; break;
case 8: bReturned=5; break;
case 9:
case 10: bReturned=6; break;
case 11:
case 12: bReturned=7; break;
case 13: bReturned=8; break;
case 14:
case 15: bReturned=9; break;
}
}
return bReturned;

}

Reklamlar
  1. Henüz yorum yapılmamış.
  1. No trackbacks yet.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: