DS18B20 ile Eksi sıcaklığın 7 Seg.disp. görüntülenmes

Başlatan mtastan, 10 Mayıs 2005, 13:49:15

mtastan

DS18B20 sıcaklık sensörü kullanarak bir sıcaklık ölçümü yapıyorum fakat sıcaklığın Eksi değerinin görüntülenmesi kısmını gerçekleştirebilmiş değilim.
Şöyleki;


sıcaklığın artı olduğu durumda

TempC var word'sicaklik değişkeni
......
LCDOUT " TempC = ","+",DEC TempC
.......
Sicaklik eksi olduğu zaman

LCDOUT " TempC = ","-",DEC TempC DIG 4, DEC TempC DIG 3


bu şekilde LCD de görüntüle yapılıyor buraya kadar problem yok ama benim istediğim LCD de değilde 7 seg disp ile görüntülemek olduğu için ben artı sıcaklığın görüntülenmesi için


Sıcaklık= TempC dig 0 ' deyip +sıcaklığın birler hanesi,
Sıcaklık= TempC Dig 1 'deyip +sıcaklığın onlar hanesini görüntüleyebiliyorum.
negatif sıcaklık için ise söyle bir mantık kurdum

Sıcaklık= TempC DIG 4 ' negatif sıcaklığın onlar hanesi
Sıcaklık=TempC DIG 3 ' negatif sıcaklığın birler hanesi

Fakat ilgisiz değerler çıktı negatif sıcaklıkta. Bu mantıkla nasıl bir yol izlemeliyim. Yani negatif sıcaklığın dig 0 ve dig 1 ni nasıl elde edebilirim. bu konuda bilgisi ve deneyimi olan arkadaşlardan yardım bekliyorum....


DS18B20 ile ilgili programın tamamına(LCD için yazılmış) aşağıdaki linkten ulaçşabilirsiniz.

http://www.rentron.com/PicBasic/one-wire3.htm

oziant

sayın arkadaşım


ds1820 sıcaklık sensörü okuma işlemi  2  byte dır
1 byte sıcaklık, diger  byte sıcaklıgın artımı eksimi oldugu içindir
data sheetine bakarsın anlayabilirsin sıcaklıgı okuduguna göre
artımı eksimi oldugunu anlayabilirsin
MPLAB 5.62 ASM PROPİC 2

ete

@mtastan,

Sorunu sorma şeklinden eksi sıcaklık değerini hesaplayamadığını anlıyorum. Zira hesaplayabilse idin gerçekten TempC Dig 4 ifadesi sana eksi sıcaklığın onlar hanesi değerini verecek idi. Aynı şekilde TempC Dig 3 ise birler hanesin değerini vermesi gerekir idi. Bu durumda sen eksi sıcaklığı hesaplayamıyorsun.
Programın hesap kısmını aynen kullandı isen hesap sonucu doğru çıkması gerekir idi. Yanlış yaptığın bir yer var mutlaka. Bilmiyorum programın mantığını anladınmı. Anlamadığını kabul ederek biraz izah edeyim istersen.
Programda iki bölümde sıcaklık hesap ediliyor. Birisi artı sıcaklık değeri diğeri ise eksi sıcaklık değeri. Tabiiki hesap, sensörden okunan değere göre daha doğrusu sensörün 11. biti olan işaret bitinin değerine göre bu tercih yapılıyor. Şayet sıcaklık pozitif ise yani sıfırdan büyük ise işaret biti sıfır, sıcaklık negatif ise işaret biti bir olarak okunuyor sensörden okunan.
bu bit değerine görede program artı veya eksi sıcaklık hesaplama bölümüne gidiyor. Pozitif sıcaklık hesaplamada ve yazdırmada sorunun olmadığını söylemişsin. O halde yanlışın eksi sıcaklık hesap bölümünde olmalı. Bu bölümde yer alan ifadeler aynen şöyle; yalnızca santigrad değeri dikkate alır isek,

Sign   = "-"
Dummy  = 625 * ~R_Temp+1
TempC  = DIV32 10    

Dikkat edersen pozitif sıcaklık hesabında da hemen hemen aynı satırlar yer alıyor ufak bir farkla ( ~ ) işareti negatif sıcaklık hesabında fazladan kullanılmış. Bu işaret Pic Basic Pro da NOT anlamına gelir.  Yani bitlerin ters çevrilmesi anlamına gelir. Örneğin Sayı %0011 ise, NOT %0011 = %1100 olur
Belkide önemsemedin ve negatif sıcaklık hesabında bu işareti koymadın. Yerine NOT yazarsan da olur sanırım. Şayet koymadı isen bu işareti koy ve yeniden dene. DS18B20 sensöründe eksi sıcaklık -55 dereceye kadar ulaşabilmektedir.  Bu sıcaklığın Ham okunan değeri 64655 olacaktır.
Eksi sıcaklığın en küçük değeri ne karşılık gelen ham değer ise 65535 olacaktır. Sonuçta yukarıdaki hesapta yani eksi sıcaklık hesabında sonuçlar 55.000 ile 00.001 arasında bir değer olacaktır. Bu nedenle senin kullanacağın Dig 4 ve Dig 3 değerleri direkt eksi sıcaklığın digitlerini verecektir.
Şayet yapabiliyor isen sensörün ham değerini okumaya çalış ve nerede hata yaptığını bulmaya çalış.
Bu açıkladıklarımdan umarım bir şeyler anlamışsındır. Sorunun nerede olduğunu bende merak ediyorum. Bulursan bildirmeni rica ediyorum. Bulamaz isen yazdığın programın eksi sıcaklık hesap bölümünü buraya yaz birlikte inceleyelim.

ETE
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

mtastan

Ete arkadaşım teşekkür ederim haklısın ben gözden kaçırmışım olayı çözdüm yinede teşekkürler