Elektrotekno.com Ana Sayfa || Programlanabilir Cihaz ve Elemanlar


ds18b20 yardım?

Açıklama:
Elektrik, Elektronik, Haberleşme ve Otomasyon konularının ağırlıklı olarak konuşulduğu, tartışıldığı ve bilgi paylaşımı yapıldığı forumumuza hoşgeldiniz.
Şu an Kod Paylaşım ve Soru Cevap Alanı kategorisi içerisindeki Programlanabilir Cihaz ve Elemanlar forumunda bulunuyorsunuz.
Bu sayfada üyelerimizin "ds18b20 yardım?" konusundaki problem, görüş ve önerileri okuyabilir ayrıca konu hakkındaki doküman, resim, proje, devre ve programlara ücretsiz olarak ulaşabilirsiniz. Üye olduktan sonra sizler de konu hakkında sorular sorabilir ya da yorum ve paylaşım yaparak birikimlerinizi aktarabilirsiniz.
Forumdan tam olarak yararlanabilmek için üye olmayı unutmayınız!
Kayıt: 15 Ekm 2006
Mesajlar: 221

Offline
onurbilke
Tarih: 15 12 2007 18:38

ds18b20 ile sıcaklık okuması yaptırıyorum fakat değişkeni word tanımlamama ramen ekrandan okuduğum en yüksek sıcaklık değeri 64 c daha yukarısını gösteremiyorum. 18b20 nin kataloğunda max 125 c gösterir diyo tahminim değişkenin kapasitesi yetmiyo 65535 te kalıyo oda 64 c ye karşılık geliyo. pic basic pro kullanıyorum.

sensor_oku: 'sıcaklığı oku ve ekrana yaz

owout comm_pin, 1, [$cc, $44]' ısı değerini oku
bekle:
owın comm_pin, 4, [busy] ' busy değerini oku
ıf busy = 0 then bekle ' hala meşgulmü? , evet ise goto bekle..!
owout comm_pin, 1, [$cc, $be]' scratchpad memory oku
owın comm_pin, 2, [ham.lowbyte, ham.highbyte]' iki byte oku ve okumayı bitir.
gosub hesapla
return

hesapla: ' ham değerden santigrat derece hesabı
sign = "+"
ıf sıgn_bıtı = negat_ısı then
sign = "-"
temp=($ffff-ham+1)*625
ısı = dıv32 10
goto gec
endif
temp = 625 * (ham+1) '
ısı = dıv32 10 ' div32 hassas derece hesabı için 32 bit bölme yapıyoruz.
gec:
float = (ısı //1000)/100
ısı=(ısı/1000)-1
sicaklik=ısı

lcdout $fe,$80," "
lcdout $fe,$80, "sıcaklık :", #sicaklik,0,"c"
Kayıt: 22 Nis 2006
Mesajlar: 409

Offline
ete
Tarih: 15 12 2007 22:57

Onurbilke,
Ortada bir yanlışlık var. Sıcaklığın 64 derece yada (64-1)=63 derece çıkması için ham değişkeninin 1024 olması gerek. 65535 değil. Zaten verilen hesabı (bir yerlerden hatırlıyorum) tersten yaparsan göreceksin.

ISI=ISI/1000 hesabında ISI 1000 e bölündüğü için 64000 imiş diye düşünmek lazım. Önceki satırda ISI=DIV32 10 satırı ile ısı değeri 10 bölünmüş o halde 10 ile çarpmak lazım. değerimiz oldu 640.000 . Ondan öncede temp=625 x (ham+1) olduğuna göre ham+1= 640000/625 eşitliğinden ham+1=1024 ve HAM=1023 olarak bulunur.

Burada sorun yalnızca hesap hatası başka bir şey değil. Aslında buna hesap hatasıda denmez işlem hatası demek daha doğru olur. 625 x (HAM+1) çarpım değerinin büyük bir sayı olup bu geçici bir bellek te tutulacak ve DIV32 ?? sayısına 32 bit olarak bölünerek sayı küçültülecektir. Sayı şayet 16 bit den daha büyük çıkarsa senin gördüğün hata meydana gelir. Halbuki burada 32 bit olarak 10 yerine 100'e bölsen sorun ortadan kalkacak idi. Şöyleki;

TEMP = 625 * (HAM+1)
ISI = DIV32 100
GEC:
FLOAT = (ISI //100)/10
ISI=ISI/100
RETURN

Yukarıdaki satırları düzelt işlemde düzelecek ve sıcaklık doğru okunacaktır.

ETE
Başa dön



ds18b20 yardım?


Benzer Konular

- dönem projesi için yardım

- entegre kullanmadan yürüyen ışık,,acil yardım..
- 3D - 2D geçiş matrislerle lütfen yardım edin
- Yardım. Türkçe EasyView Kullanım Klavuzu Lazım.
- röle bağlantı sorunu (yardım)
- robot kasası için yardım!!!
- bilgisayarla devre kontrolü için yardım edebilirim
- çift taraflı pcb ile çalışma nasıl yapılır (yardım)
- Şimşek çaktı Laptop adaptörden elektrik almıyor! [acil yardım!]

- proteus ta ta7281p veya benzer bacaklı eleman bulamıyorum yardım lütfen

- flip flop devresi yardım

Sitemize üyelik ve içeriğin indirilmesi tamamen ücretsizdir. Sitemizde paylaşılan tüm dokümanlar (Tezler, makaleler, ders notları, sınav soru cevaplar, projeler) paylaşımcıların bireysel çalışmaları olup telif hakları kendilerine aittir ya da açık bir şekilde kamusal alana yerleştirilmiş dokümanların birer kopyalarıdır. Kişilerin bireysel çalışmalarını sitemizde yüklemesinde, sitemizde paylaşıma teşvik eden puanlama sisteminin de etkisi büyüktür. Bunlara rağmen hala size ait olan ve burada bulunmasına izin vermediğiniz dokümanlar varsa iletişim bölümünden yöneticilere bildirmeniz durumunda derhal silineceklerdir.
Powered by phpBB | Translated by phpBB Türkiye | Ads by Google Adsense | Design by Crazy Bat based
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72