18b20 + pic +max232 ile pc'ye veri gönderimi....

Başlatan mustafa_cmbz, 08 Ağustos 2008, 23:25:42

mustafa_cmbz

arkadaşlar elektroniğe meraklı bir arkadaşıma sıcaklığı okuyup pc'ye gönderecek bir devre lazım etti bunun ile ilgili bir proje yapmayı düşünüyor...pc yi sadece log tutmak için kullancak,ısının değerine göre kendi yazacağı visual basic programı ile ısı seviyesini değerlendirip parelel porttaki röleleri kontrol edecek...bana düşen ise burada ısısyı okuyup pc'ye göndermek bunun için seri portu kullanacak ve ısı ölçme işlemi için 18b20 kullanmaya karar verdim..fakat daha önce hiç bu tarz bir uygulama yapmadığım için bu konu bana yabancı geliyor..sitede bir ön arama yaptım fakat uğraşları devam eden arkadaşlar var yaşadıkları sorunları hala çözememişler...

bu konu ile iligli daha önce uğraş vermil arkadaşlar ve büyüklerimiz varsa biraz püf noktalarından bahsederler ise bende bir yerden başlamak istiyorum...

başlangıç olması için sitede bulduğum bir buraya koymak istedim....sizce bu kod benim işimi görürmü? yani ben sadece pic'ten pc'ye data yollayacam sanırım buna simplex diyorlar nette de biraz araştırma yapım mantığı buymuş fakat örnek olması açısından sizlerde paylaşımda bulunursanız projemizde çok büyük katkınız olacaktır...

kod:


include "modedefs.bas" 

si var portb.0 
so var portb.1 
veri var byte 
BAUD con 84 '9600 Baud Rate 

Start: 
trisb=1 
portb=0 
Main: 
pause 1000 
serout2 so,baud,["Merhaba"] 
Loop: 
serin2 si,baud,100,Loop,[veri] 
if veri="x" then 
serout2 so,baud,["X Alindi"] 
else 
serout2 so,baud,["X Alinamadi"] 
endif 
pause 100 
goto Loop



şu an daha pcb vs hazırlamadığım için deneme imkanı bulamıyorum isis'in seri port'u simule etme şansı varmış birazdan onu da araştıracağım...

birde ben yukarıdaki programda yazılan değişkenlerin yerine direkt saniye başına sensörden okuyacağım degerleri bir tek değişkene aktarsam onlarıda serout2 komutuyla max232 aracılığı ile pc'ye göndersem sorun çıkartırmı?  

bir diğer sorum ise pc ile max232 arasında haberleşme şekilleri değiştiğinde mesela çift yönlü tek yönlü vs. olduğunda devre şemasında önemli değişiklikler yapmamıza gerek varmı yoksa nette bulabileceğim herhangi bir devre şeması işimi görürmü?

fikirlerinizi bekliyorum....kolay gelsin...

Klein

Eğer, "Merhaba" gibi bir veriyi gönderebiliyorsan , istediğin başka herhangi bir veriyi de gönderebilirsin. Sorun çıkması için hiçbir sebep yok. Ama sıcaklık bilgisini tek değişkene atıp oradan 1 karakter olarak göndermek , hiçbir haberleşme sistemi için önerebileceğim birşey değil.  Senin hız gereksinimin olmadığını düşünüyorum. bu yüzden bir karakter dizisi olarak göndermen daha akıllıca olacaktır.
örneğin.
<stx><xxx><etx><cs> şeklinde bir dizilim uygulayabilirsin.
stx: Başlangıç karakteridir.  ASCII kod tablosunda 0x02 sayısı stx için ayrılmıştır.
etx: Bitiş karakteri.  ASCII tabloda 0x03 tür. Ama illa bunları kullanmak zorunda değilsin. başka karakterler de kullanabilirsin.
xxx:  göndereceğin veridir.  örneğin 30 derece için "030" şeklindedir. Uzunluğu her zaman sabit yaparsan ,  alıcı kısmında rahat edersin.
cs: kontrol toplamıdır. Verinin doğru alınıp alınmadığını test etmek için kullanılır.  işleme giren tüm karakterleri byte değişkende toplayıp, en sonunda 255 den çıkarırsan , yeterli bir güvenlik sağlar.

mustafa_cmbz

hocam o dediğiniz benim için biraz zor gibi gözüküyor fakat ben şöyle düşündüm...şimdi yavaştan proton öğrenmeye çalışyıorum akşam çiçek sulayıcı için kod yazıyordum seri iletşim için serout komutunu inceledim çok ilginç şeyler var mesela biz sıcaklığı virgüllere bölmek için dec1 dec2 felan yazıyoruz ya hesaplama işleminden sonra işte bu tarz şeyleri serout komutuyla gönderme imkanımız var gibi duruyor böyle bişey ile yapabilirmiyiz acaba ? yani başlangıç ve bitiş bilgisi göndermesek sadece direkt olarak ısıyı okuyup bunu bir değişkene atayıp belirli aralıklar ile serout komutuyla çıkışa göndersek olmazmı? elimde sıckalık sensörü olmadığı için deneyemiyorum...isisteki malzeme de simuled edilmiyor...elim kolum bağlandı...

Erol YILMAZ

Alıntı yapılan: "mustafa_cmbz"şimdi yavaştan proton öğrenmeye çalışyıorum

C dilini öğrenip kaliteli bir derleyici ile (Hi-tech, IAR yada Microchip) ile
yazmaya başlaman önümüzdeki 4-5 yılda vereceğin en iyi karar olacaktır.

mustafa_cmbz

eline diline saglık hocam...bende c öğrenmeyi düşünüyorum fakat program açısından bir sıkıntım var size bir şey soracağım bu konu ile iligli sitede biraz araştırma yaptım fakat bu konuda fazla bilgim olmadığı için size danışmaya karar verdim c'ye başlamak için aşağıdaki linkteki hangi programı yüklememi önerirsiniz?

https://www.picproje.org/index.php/topic,107&postdays=0&postorder=asc&start=100

Erol YILMAZ

PIC16 serisi için Hi-tech PICC

http://www.4shared.com/file/54882152/9c4567b/STD_960PL2.html

PIC18 için Microchip in C18 derleyicisi kullanabilirsin.

İkisi de kaliteli derleyiciler, Ve bu işin yanında altında vs olmaktansa içinde olmanı sağlarlar :D

İlaçlarıda yanında veriliyor.