K

sht 11 yardım

Başlatan korcenk, 07 Haziran 2012, 07:49:45

korcenk

arkadaşlar sht 11 den bilgi okuyabiliyorum ama derece ve nem hesabını bilmiyorum.
bilen bir arkadaş anlatabilirmi.ete hacanın programını inceledim bazı degerler neye göre yazılmış çözemedim .
iyi calışmalar

ete

SHT-11 Data sheet'ine bakmak aklına gelmiyormu?. Orada sıcaklık ve nem hesaplaması ile ilgili formülü vermişler.
Tabiiki verilen formül hem küsüratlı sayıları hemde neagtif sayıları içeriyor. Ayrıca formülde sabit çarpan sayılarıda kullanılıyor.
Bütün mesele bu formülün basic matematiğine uyarlanmasıdır. İşlem olarak mümkün olduğunca 32 bit hesap yapılacak ve ondalıklı sayılarda virgülden kurtarılacaktır.

Data sheet de sıcaklık hesabı için verilen formül şöyle;
T=d1+d2*Okunan   , 14 bit okuma yapıldığında d2 ve d2 parametreleri ise d1=-40 ve d2=0,01 olarak verilmiş.
O halde  Sıcaklık hesaplama formülümüz  T=0,01 * Okunan -40  şeklinde yazılabilir.
Formülü virgülden kurtarmak için 100 ile çarpıyoruz. ve,
T=1* Okunan - 4000 şeklinde formülümüzü elde etmiş oluyoruz.
Bunu T=Okunan - 4000 şeklinde kullanabiliriz.
Bu hesap sonucunda sıcaklığın 100 ile çarpılmış halini elde edeceğimiz için çıkan sonucu 100 e bölerek sıcaklığın tam sayı kısmını, 100 ile MOD alma işlemini yaparak 2 hane olaak ondalık kısmını hesaplayabiliriz.


Data sheet de verilen Nem hesap formülü aşağıdaki şekildedir. Bu sıcaklığa göre düzeltilmemiş ham ne hesabı formülüdür.
RH = c1 + c2* Okunan + c3 * (Okunan)^2
Bu formülü şöylede yazabiliriz. Okunan parantezine alıyoruz.
RH=(C2+(C3 * Okunan) * Okunan + C1
Yine data sheet de sabit çarpan değerleri aşağıdaki şekilde verilmiş.
C1 = -4
C2 = 0.0405
C3 = -2.8E-6
Bütün amacımız virgülden kurtulmuş bir formül kullanmaktır. Bu nedenle önce bu sabit çarpanları 10 ile çarpalım.
C1=-40
C2=0,405
C3=-2,8E-5
şimdi bunları tek tek ele alaım.
C1 için yapılacak bir şey yok.
C2 ve C3 için formülde kullanılan normal çarpma işlemleri yerine ** şeklinde 32 bit çarpma yapıp elde
edilen 32 bit değerin yalnızca üst 16 byte'ını alarak işlemleri yapabiliriz. Bu işlem bize sadeleştirme
işinde yardımcı olacaktır. Zira bu çarpam sonucunda sayının 65536 ya bölünmüş halini elde edeceğimiz için
eşitlik bozulmasın diye önden sayımızı 65536 ile çarpmamız gerekecektir.
Mesela C2=0,405 sayısını 65536 ile çarparsak  26542 sayısını elde ederiz o halde kullanacağımız C2 parametresi 26542 olacaktır.
C3= -2,8 E-5 idi. Bu sayıyı kullanılır hale getirmek epeyce karmaşık bir işlem gerektiriyor. Formüle
bakarsanız Aslında formül içinde bu parametre C3 * Okunan şeklinde yer almaktadır.
O halde 0,0000028 sayısını 65536 ile çarparsak bize 1,835 değerini verecektir.
Bu durumda bu eşitliği biz (1,835/65536)* Okunan şeklinde yazabiliriz.
Biraz daha ileri gidip (0.835*Okunan + Okunan)/65536 şeklinde de yazabiliriz. EŞitlik hiç bozulmuyor dikkat ederseniz. (Okunan parantezine alırsanız eski haline dönecektir).
0,85 sayısını 65536 ile çarpıp yine kendisine bölersek eşitlik yine bozulmayacaktır. O halde 0,835 *

65536=54723 olduğundan eşitlik (54723/65536)*Okunan + Okunan)/65536 şeklinde dönüşecektir.
Formülü oluşturan parametrelerin Her ikiside 65536 ya bölündükleri iiçin bu işlemdeki çarpım işini
54723 ** Okunan + Okunan ** şeklinde kullanabiliriz artık.
Sonuç olarak formülümüz aşağıdaki şekli alacaktır.

RH=(26542-(54723**Okunan+Okunan))**Okunan-40

Benzer çevirme işlemini Sıcaklığa bağlı rutubet düzenlemesinde de kullanabiliriz.
Formül,  RHtc = (T - 25) * (0.01 + 0.00008 * Okunan) + RH  şeklindedir.
EKsi değer matematiği yapamadığımız için sıcaklıkları kelvin cinsinden kullanarak işlemi pozitife çevirebiliriz.

RHtc = ((T+273) - 25) * (0.01 + 0.00008 * Okunan) - (273 * (0.01 + 0.00008 * Okunan)) + RH(yukarıda hesaplanan).
((T+273) - 25)= (T+248) olduğundazn formülde bu şekilde yer alacaktır.
0,01 + 0,00008 * Okunan şeklindeki ifadeyi kullanılır hale getirmeye çalışalım.
0,01 değeri 655/65536 ya eşittir.
0.00008 * Okunan ise benzer şekilde  5.243/65536 * Okunan şekline çevrilebilir.
BU ise (5* Okunan + 0.243* Okunan)/65536 şeklinde yazılabilir.
Bu ise benzer şekilde (5*Okunan + 15917/65536 * Okunan)/65536  şeklinde yazılabilir.
xxx/65536 sistemi bize ** operatörünü kullanma imkanını getirdiği için formül elemanlarını buna çevirmeye çalıştık.
Sonuçta formülümüzün bu kısmı aşağıdaki eşitliğe dönüşecektir.

RHtc=655+(Okunan*5)+(Okunan**15917) ve buradan elde ettiğimiz değeri aşağıdaki formülde yerine koyarak sıcaklığa göre ayarlanmış rutubeti hesap edebileceğiz.

RHtc=(RHtc**(degC+2480))-(RHtc**2730)+RH   ' kompanse edilmiş rutubet değeri

Ete

korcenk

ete hocam yapmış oldugun açıklama için çok teşekkürler.
datasheete baktım ama sizin örneklerinizdeki sayılar nerden geldigini anlayamamıştım. şimdi anladım

iyi çalışmalar

Powered by EzPortal