Elektronik ve Teknoloji Merkezi Elektrotekno.com
Elektronik ve Teknoloji Merkezi




Click here to go to the original topic

Elektrotekno.com Ana Sayfa Microchip Pic Serisi
Yazar Mesaj
futureng
Tarih: 31.12.2007, 10:52 Mesaj konusu: rf ile ds18b20 sıcaklık okuyup gönderip RS232 ile LCD ye yaz

Arkadaşlar ben bir proje yaptım. rf kullanarak sıcaklık verisini kablosuz lcd ekrana yazdırıyorum. Yaptığım proje 3 adet devreden oluşuyor: 1: 16f628 li RF verici devresi 2: 16f628 li RF alıcı devresi 3: 16f877 li LCD ekranlı devre. Sıcaklık bilgisini 1-wire olarak okuyorum rf' e çevirip gönderiyorum. 2. devrem ile datayı alıp RS232 vasıtası ile 3. devreye aktarıyorum. 3.devre ise rs232 portundan aldığı bilgiyi LCD ekrana yazıyor. sorunum şu= ds18b20 den sıcaklık datası okunduğunda bana 3 adet bilgi veriyor. 1-işaret, 2-Isı değeri, 3- Ondalık değeri bu 3 bilgiyi seri olarak gönderiyorum. Fakat dataları alırken LCD ekrana yorumlamak için nasıl bu bilgiyi çözdüreceğim. Sistem çalışıyor fakat sadece "sıcaklık" bilgisini gönderip yorumlatabiliyorum. Çünkü diğer bilgiler LCD ekrana yazıalacak ham lıkta değil. Sıcaklık bilgisini direk Decimal e çevir diyorum o da basit olarak ekrana yazıyor. Fakat (-) dereceleri ve ondalığı nasıl ayırıp LCD ye gönderecem çözemedim. ( Bu iş için JAL dilini kullandım)
SOVALYE
Tarih: 03.01.2008, 11:46 Mesaj konusu: Jal dilini bilmiyorum ama yardımcı olursa diye Basic kodları

jal dilini bilmiyorum ama yardımcı olursa diye basic kodlarını yazdım...

'değişken tanımlamaları:
busy var bıt ' busy status-bit
ham var word ' sensör ham okuma değeri
ısı_ds1820 var word ' hesaplanmış ısı değeri
float var word ' holds remainder for + temp c display
x var word
ısaret_bıtı var ham.bit11 ' +/- sıcaklık işaret biti, 1 = olursa eksi sıcaklık
eksı_ısı con 1 ' sıfır altında isaret biti=1 oluyor kontrol için
derece con 223 ' ° işareti
ısaret var byte ' ısı değeri için +/- işaret
temp var byte ' div32 bit hesap için geçici değişken
symbol comm_pın=portc.7 ' one-wire data-pin "dq" portb.0 da

sensoroku:
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ı
ısaret = "+"
ıf ısaret_bıtı = eksı_ısı then
ısaret = "-"
temp=($ffff - ham+1)*625
ısı_ds1820 = dıv32 10
goto gec
endif
temp = 625 * ham
ısı_ds1820 = dıv32 10 ' div32 hassas derece hesabı için 32 bit bölme yapıyoruz.
gec:
float = (ısı_ds1820 //1000)/100
ısı_ds1820=ısı_ds1820/1000
lcdout $fe,$89,ısaret,dec ısı_ds1820,".",dec1 (float),derece,"c" '1. satırda ısı
return
end
goto sensoroku
DemirHan
Tarih: 03.01.2008, 17:06 Mesaj konusu:

JAL dilini bende duymadım (pic ler için) ama mantığını anlatabilirim belki kendin yazarsın
belli veri paketleri hazırlaman lazım örneğin senin durumunda 3 değişik veri var bunları 1 er baytlık paketlere koyduğunu düşün bu paketleri hep aynı sırayla göndereceksin 1. paket (+/-) 2. paket (sıcaklık tamsayı kısmı) 3. paket( sıcaklık kesirli kısım) ama bunların başına birde normalde bu 3 paketdede oluşması mümkün olmayan örneğin 0xff gibi bi başalngıç paketi daha eklersen sırası karışmaz toplamda bu 4 paketi arka arkaya yolarsın karşıdaki işlemci 0xff i alınca bilirki ondan sonraki paketde +/- bilgisi var bi sonrakinde tamsayı değeri var bi sonrakinde kesirli kısım var bu şekilde tüm data karışmadan karşı tarafa ileilmiş olur. sonra tekrar 0xff karakterinin gelmesini bekler bu arada gelen dataları dikkate almaz.


Aynı iş başka şekillerdede yapılabilir. Bu sadece fikir vermek için yazılmış bi örnek
Elektrotekno.com Ana Sayfa Microchip Pic Serisi
1. sayfa (Toplam 1 sayfa)

rf ile ds18b20 sıcaklık okuyup gönderip RS232 ile LCD ye yazdırma yardım?

Gizlilik Politikası

PLC programming