avatar_ete

IR_HABERLEŞME PROJESİ

Başlatan ete, 21 Haziran 2015, 18:44:10

İlyas KAYA

Belki birilerinin işine yarar. Ben aramış bulamamıştım.

"NEC IR protocol" ile  "X-10 RF Protocol" aynı.

X-10 RF Protocol de 32 bit işlem yapıyorsunuz tek farkı bu.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

sonmoikan

#16
Çok teşekkür ediyorum Hocam. Olayı o kadar net bir şekilde anladım ki kendi protokolümü bile yapabiliyorum.

3 protokolüde gerçekte yaptım hepsi güzel çalışıyor. Verici olanların çalışma frekansı elimden etkilendiği için  sinyali bazen algılamıyor.

Erol Hocam, IR alıcı veya verici kısmında 16f84A neden çalışmıyor acaba. Simülasyonda çalışıyor fakat  gerçek devrede çalışmıyor.
Sanki 84A nın bu frekansa kapasitesi yetmiyor gibi. Araya başka kodlar ekliyorum onlar çalışıyor.
Fakat 32khz lik sinyali alamıyor da veremiyor da. Sebebini merak ektim.
ABDULLAH

ete

#17
16F84A da HPWM yok zaten . AND kapılı sistemi kullanınca verici olarak 16F84A kullanılamaz. Alıcıda çalışması gerekir. Kristal yada rezonatör farkından olabilir.  Bu projeleri hazırlarken tamamen simulasyon imkanlarını kullandım. Modülasyon sinyallerini oluştururken komut gecikmelerinden dolayı bazı süre kısaltmaları yaptım. Gerçek devrede bunlara (vericilerde) ince ayar gerekebilir.
Ayrıca Alıcı göz frekansıda bu işte etken faktör bunu unutmayın. 38Khz lik gözler hepsinde çalışması gerekir.

Ete

blueboard

#18
Ete Hocam,elimde bir Sony oto teyp uzaktan kumandası var. Bu kumandaya bir alıcı yaparak en azından 4 röleyi kontrol etmek istiyorum. Konu ile ilgili projenızi defalarca okudum ancak bilgimin yetersiz olması nedeniyle anlayamadığım yerler oldu.Yardımınızı rica edeceğim.
Sizin projenizde uzaktan kumandadan toplamda 12 bit gönderiliyor.Oysa bendeki kumandadan header (2.4 high+0.6 low) 'dan sonra 16 bit data gönderiliyor. Ekteki resimi büyüterek bakarsanız gönderilen 1 ve 0 dan oluşan dataları göreceksiniz.Ses artırma tuşuna basarak resimledim.Sanırım Sony'nin 15 bitlik protokolüne göre gönderiliyor.
Sizin şöyle bir ifadeniz var"Cihaz kodu 5 bit
uzunluğundadır. Bu durumda 0-31 arası bir değer alacak demektir cihaz kodu. Ardından 7 bitlik tuş
kodu (0-127) yollanır."
Anlamadığım yer şurası: 5 bit uzunluk için kod 0-31 arasında olmalıdır, 7 bit için ise 0-127 arasında olmalıdır diyorsunuz.Bu uzunlukları neye göre belirliyorsunuz?
Bendeki kumandadan gelen datalar şu şekilde:
Header'den sonra 010010000100001  Bu durumda yine ilk 5 bit yani 01001 cihaz kodu , 0000100001 ise tuş kodu mu oluyor. Acemiliğimden dolayı kusura bakmayın.

ete

Sony (SIRC) protokülünde standart sistem 7 bit komut ve 5 bit adres biti olmak üzere toplam 12 bit olarak çalışıyor.
Ama Sony nin 7 bit komut + 8 bit adres=15 bitlik versiyonu ve yine 20 bitlik (7+5+8=20) versiyonlarıda mevcut.
Senin sistem 15 bitik versiyon. Bu durumda start bitinden sonra gelen 7 adet komut biti ve ardından da 8 bitlik adres biti bulunmaktadır.
Verdiğin bitlere bakılırsa;
0100100  00100001 (36 + 33) şeklinde 36 olan komut ve 33 olan ise adres olarak değerlendiriliyor.

Bir sayının kaç bitlik olduğuna bakılarak onun hangi aralıkta olacağını söylemek mümkündür.
7 bitlik bir sayı en fazla %1111111 şeklinde binary şekilde olabilir. Bunu desimale çevirirsek 64+32+16+8+4+2+1=127 desimal değerine eşittirr.

Ete

blueboard

Ete Hocam,verdiğiniz bilgilere göre bir şeyler yapmaya çalıştım. Alınan paketin 15 bit olacağını belirttim,Ama sanki şurada bir hatam var gibi geliyor.
"Cihaz=%11111111
       for I=0 to 7   ' cihaz kodu ayıklama  15 bit versiyonda cihaz kodu 8 bit
         IF IR_AL(7+I)<80 then Cihaz.Bit0[I]=0"
Dosyanın son halini de ekledim.Teşekkürler.

ete

Ben bir hata göremedim. Kodlar doğrudur.
Ete

blueboard

Teşekkür ederim. Artık bayramdan sonra gerçek devreyi kurarak deneyeceğim. İyi bayramlar dilerim.

blueboard

Ete Hocam,

Paket var word 56
IR_AL var word(12) '58
Tus   Var Byte 82
Cihaz Var Byte 83
ifadelerindeki 56,58,82 ve 83 ile neyi belirliyoruz?

Elzemefe

Adres oluyor  proteus ta takip etmen açısından değerleri  görebiliyorsun
wach window  olması lazım  yanılmıyorsam
simüle ederken oraya  eklediğin o adresteki değişikliği görebiliyorsun

ete

Hemen dikkatimi çekti. IR-Al(12) de yer alan 12 rakamı 15 olmalı.

Diğer rakamlar derleyiciye derleme esnasında ilgili değişkenleri o yazılan hafıza adreslerine yerleştirmesi için yazılır. Böylece simulasyonda o değişkenleri izleyebilirsin.

Ete

blueboard

Ete Hocam, size gönderdiğim değişiklik yapılmış dosyada "IR_AL var word(15) '58" olarak yazmıştım. Son sorumda sizin orijinal dosyanızdan alıntı yaptığım için 12 olarak yazıyordu.

Biraz önceki sorumu değiştirerek tekrarlıyayım;
"Paket var word 56
IR_AL var word(15) '58

Tus   Var Byte 82
Cihaz Var Byte 83"
yerine
"Paket var word
IR_AL var word(15)

Tus   Var Byte
Cihaz Var Byte "
şeklinde yazsak sakınca olur mu?

blueboard

#27
Biraz önce protues'ta "Paket var word
IR_AL var word(15)

Tus   Var Byte
Cihaz Var Byte "
şeklinde denedim çalıştı. Ama sakınca var mıdır?

Müsadenizle son bir şey daha sormak istiyorum;
benim cihazın kodu  " 00100001" şeklinde geliyor.Bunu alıcı programında ilgili yere yani:
"Cihaz=%11111111  ' cihaz kodu 8 bit
       for I=0 to 7   ' cihaz kodu ayıklama  15 bit versiyonda cihaz kodu 8 bit
         IF IR_AL(7+I)<80 then Cihaz.Bit0[I]=0
       next"

şeklinde mi yoksa
"Cihaz=%00100001     'cihaz kodu 8 bit
       for I=0 to 7   ' cihaz kodu ayıklama  15 bit versiyonda cihaz kodu 8 bit
         IF IR_AL(7+I)<80 then Cihaz.Bit0[I]=0
       next"
şeklinde mi yazmam gerekir?Teşekkürler.

ete

Cihaz kodu belli ise cihaz=%....... Şeklinde verip cihaz döngüsünü atlaman gerekir.
Aslında cihazı hiç kullanmıyoruz. Direk atlayabilirsinde. Yalnızca command tanımlama kısmına ait döngüyü çalıştır yeterli olur.
Ete

blueboard

Ete Hocam,sayenizde Sony kumandası ile ilgili sorunu çözdüm,gayet güzel çalışıyor.Eğer sizden çok fazla bir şey istemeyeceksem bir şey daha sormak istiyorum. Hazır Sony'i çözmüşken verdiğiniz bilgiler ışığında kendimi NEC'te deneyeyim dedim. NEC protokolüne göre çalışan bir uzaktan kumanda buldum ve kumandadan gönderilen dataları okuyarak sizin NEC için yazmış olduğunuz programa uyarladım. Kumandadan tuşlara bastığımda 16f628a 'da ilgili pin lojik1 oluyor. Ama şöyle bir sıkıntı var: Kumandadan tuşa bastığımda örneğin b1 lojik1 olsun. Yaklaşık 25 sn boyunca b1 pini lojik1 de kaldıktan sonra lojik 0 'a dönüyor. Lojik0 gerçekleşmeden yeni bir tuşu algılamıyor. Oysa Sony programında tuştan elimi çektiğim anda ilgili pin lojik 0 oluyor ve hemen yeni bir tuşa basabiliyordum. NEC programındaki 25 sn süren döngü gecikmesi nasıl çözülebilir? Değişiklik yaptığım programı ekledim.Teşekkür ederim.

Powered by EzPortal