IR kumanda devresi yardim

Başlatan slymn60, 17 Kasım 2016, 19:27:34

slymn60

merhaba arkadaşlar. elimde resimde görünen [IMG]http://i63.tinypic.com/s62347.jpg[/img]
kumanda ve alıcı gözü vs1838B devresı var ancak ben bu devreyı bır turlu calıştıramıyorum.
Devrede kullandığım entegre 16f628A
Denediğim protokoller RC-5 ve NEC iki protokolü de uyguladım ancak sonuç elde edemedim.
Merak ettiğim çözüm aradığım konular:
1) Bu kumandanın hangi protokolle çalıştığını kesin olarak nasıl anlarım.
2) Arduıno için yüzlerce örnek ve hazır kütüphane varken Pic için ne yapmam gerekiyor

ete

O kumanda kesnilikle NEC protokolü ile çalışıyor..
Elimde bir kaç tane var ve hepside nec protokolü ile çalışıyor. Ancak bir tanesi protokol şekli aynı olmasına rağmen süreleri farklı çalışıyor. Nec protokolünde 9 ms lik bir HIGH ve ardından 4,5ms lik bir low sinyali header sinyali olarak gelir. Ancak IR göz çıkışında bu 9 ms LOW ve 4,5ms lik HIGH olarak görülür. Anlayacağın göz gelen bitleri ters çevirip dışarı verir.
Ne olduğunu anlamanın iki yolu var. Ya skop ile bakacaksın yada en güzel Lojik Analizör ile data ve senkron bitlerine bakacaksın.

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

slymn60

Peki kullanırken hangi yöntemle bu haberleşme sinyallerini yakaliyordunuz kimi projelerde timer kullanan var kiminde portb kesmesi kiminde ise delay_ms() ile yapıyorlar bende deniyorum ancak bir turlu sonuç alamadım sinyali nasıl yakalayip çözümlüyorsunuz teşekkürler cevap için

ayban

http://ccspicc.blogspot.com.tr/2016/07/extended-nec-ir-remote-control-decoder-pic18f4550-circuit-ccs-c.html  CCS ile yapılmış bu uygulama bahsettiğiniz kumanda  ile uyumludur,devre denenmiş olup çalışmasında herhangi bir sıkıntı yoktur.CCS kodları çok karmaşık olmayıp rahatlıkla diğer derleyicilere uyarlanabilir.
"Tek kitap okuyandan kork!"

ete

Ben PBP (Basic) kullanırım. Yaptığım iş şöyle;
Önce Düşen Kenarda PORTB.0 kesmesi oluşturuyorum. Bu kesme ile LOW sinyallerini kesme içinde yakalayıp (amaç 9 ms LOW sinyalini yakalamak) peşinden gelen HIGH sinyal süresini PULSIN komutu ile ölçüyorum. Süre 4,5 ms den kısa veya uzun ise bir şey yapmadan kesmeden çıkıyorum.
Şayet sinyal istenen seviyede ise peşinden gelen 32 adet bit'in yalnızca HIGH olanlarını süre bazında yine pulsin komutu ile alarak  bir dizi değişkenine kayıt ediyorum. Bitleri aldığıma dair bir bayrağı set ediyorum ve kesmeden çıkıyorum.
Ana program kısmında bayrağı kontrol ederek set edilmiş ise alınmış süre bitlerini işliyorum.
Aslında Adres ile ilgilenmiyorum beni tuş kodları ilgilendiriyor. Bu nedenle yalnızca 16-24 arası bitleri alıp bunların sürelerine bakarak komut değerini hesaplıyorum. Hepsi bu.

BU arada hemen belirteyim. İlk çalışmalarımda önce 9 ms lik sinyali yakalıyor ve peşinden 4,5ms lik sinyali yakalamaya çalışıyordum. Baktım ki bu sistem çok iyi çalışmıyor. Sebebi tabiiki komut gecikmeleri. Süreler sürekli şaşıyor. Bir sinyal yakalayacaksanız önce onun önündeki sinyali yakalayıp sonra net şekilde asıl sinyalinizi süre bazında ölçmek hatasız sonuçlar veriyor. Bu sayede benim kod çok hızlı bir şekilde sinyali yakalayıp kodu çözmektedir.

NEC protokolünün kötü tarafı komut tekrarlarının programınızı şaşırtmasıdır. Zira tuşa basılı tuttuğunuz zaman sürekli olarak kodun tekrarı verilmekte buda okuma sisteminizi şaşırtmaktadır. Bunu önlemek için net olarak 4,5ms lik sürenin yakalanmasında yarar var.
Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com