12F675 ile PWM

Başlatan ozgurelkt, 29 Mart 2017, 21:04:56

ozgurelkt

  Öncelikle Merhaba..   Şunu yapmak istiyorum.  12f675 ile  38Khz  pwm oluşturup   IR alıcıya göndermek , IR alıcıdan gelen sinyali de aynı pic den okumak istiyorum.Kısaca  IR  ile engel algılayıcı yapmak amacım ve bunu tek bir 12F675 ile yapmalıyım. Bunu normal döngü içinde yaptım, çalıştırdım.  Güneş ışığı, alıcı göz üzerine direk gelmediği  sürece sıkıntı yok. Güneş ışığı alıcı gözün üzerine geldiğinde  engel algılayıp devreyi  sık sık açıp kapatıyor. Aynı devreyi 12f683  ile kendi PWM modulunu kullanarak yaptım .Onda hiç sıkıntı yok.. Piyasada yapılan örnek kartlarda  alıcıdan gelen sinyal uçları  12F675 in T0CKI ve ucuna T1CKI uclarına bağlanmış.

   İşin mantığını anlamaya çalışıyorum eksiklerim var..

   1- anladığım kadarı ile  Alıcı gözden  sinyal geldiğinde kesmeye girilmiş,burda  zamanlayıcı olarak mı  çalıştırılmış,göz çıkış verdiğinde  0  çıkış 0 olacağı için düşün kenar  uygulanmış sanırım.
   
   2- Eğer kesme uygulanmışsa   burda neyi kontrol etmemiz lazım.  burada zaman tutmaya kalksam  ana dongudeki    oluştrduğum PWM  PIC kesmeden çıkmadığı için nasıl çalışacak... anlamadığım birşeyşer var  . kafam karıştı. ufak bir ip ucu yeterli olacak ama  o yolu gösterecek biri lazım .. yardım ederseniz sevinirim.

ete

Olaya tam hakim olmayınca işin mantığını bende çözemedim. T0CKI ve  T1CKI girişleri her iki timer'ın harici clk girişleridir.
Söz konusu sayaclar kendi kontrol registerleri aracılığı ile harici kaynaktan yada dahili OSC  gelen pulsları sayabilirler.
Bir IR sinyalin neden bu girişe verildiğini pek anlamadım doğrusu. Üstelik hem Tmr0 ve hemde Tmr1 sayac girişlerine verilmesine hiç anlam veremedim. Devrenin yapısı gereği saydıkları bir şeyler vardır o nedenle verilmiş olabilirler.
Bu sistemde Alıcı olarak nitelendirilen şey nedir. Bir foto transistörmüdür yoksa bir IR-Göz müdür. Bu soruların cevabı da elbette ana sorunun cevabını belirlemekte rol oynar.
Şayet alıcıda göz kullanılmıyor ise gelen IR sinyalden 38Khz lik modulasyon sinyalinin ayrılması ve geriye data bilgisinin bırakılması gerekir.  Bunu ayırmanın yolu clk saymak dan geçmiyor maalesef. Bilinen şekil (gözlerin çalışma mantığı), modulasyon sinyalinin peryodu kadar bir gecikme uygulayarak çıkıştan net ve düz bir sinyal almak şeklindedir. Burada bilmediğimiz bir yöntem mi geliştirdiler acaba?. Kısaca işin detayları olmadan fazla bir yorum yapılamıyor maalesef.

Her zaman söylerim bu gibi konularda çok fazla bilinmeyen vardır ve soru şema vs gibi ilave malzeme ile desteklenmez ise cevaplamak zor olur. Şema olsaydı bende orada göz mü yoksa başka bir şeymi kullanıyorlar görseydim mutlaka daha farklı yorum yapabilirdim diye düşünüyorum.

Ete

ozgurelkt

 Haklısınız .  yazıyla anlatmak zor. Söyle söyleyeyim yardımcı olabilirseniz.  Ekte basit bir şema var.  TSOP4038 IR_göz kullandım.  38 khz sinyali IR_LED ile şifrelememeden yaklasık 1 saniyede 10-50 ms süreyle gönderiyorum . TSOP4038  sinyal ucunu kontrol ediyorum 1 iken 0 oldu mu diye.. yani araya bir engel girdiğinde röle çalışıyor.  Fakat yazdığım kod   ALICI-göz direk güneş gördüğünde etkileniyor.  Bunu hazır PWM olan piclerde  çözdüm.  12f675 ile yapılan benzerlerinde çıkışı lojik analizör ile inceledim sifreleme yok. yaklasık 10ms boyunca 38khz göndermişler . 600ms falanda  sinyal yok.Ve ALICI-gözün sinyal ucu  T0CKI e bağlanmış.

düşündüğüm şu  38khz normal döngü içerisinde oluşturup  . alıcı-gözden(4038) sinyal geldiğinde seviye lojik 1 den lojik 0 a inecek, .  burda bir kesme oluşturulduysa neyi kontrol etmiş olabilirler. nasıl bir algoritma düşünebilirim.

Umarım  derdimi anlatabilmişimdir.

fatih88

sayın özgürelekt  tocki ucunu tesadüfen veya pcb cizeken kolay oldugu için almış olabilir şifre yoksa sinyal analizi yapacaksın timer kullanarak gelen sinyaller neyse low-high sürekerini kaydedeceksin gelen sinyal dogruysa senin sinyal sürelerine uymuyorsa veya hiç yoksa araya bir cisim girmiştir güneşten etkilenmemesi icinde mor bi cam koyuyorlar ama ne işe yarar bilmiyorum
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

ete

#4
10 mslik 38Khz lik sinyal IR_Göz den çıkınca 10 mslik uzunluğu olan bir HIGH sinyali şekline döner. Sinyalin olmaması durumu ise IR gözden direk LOW olarak çıkar.
Bu durumda IR led den bu şekilde yayılan sinyaller bir engele çarpıp tekrar IR_Göz'e ulaşırsa göz çıkışında 10 ms lik HIGH sinyali oluşacak ve buda GPIO.5 piniden giren o sinyalin bir kesme oluşturmasını sağlayacaktır.

Normalde 38 Khz lik modülasyon sinyaline güneş bulaşır ise modülasyon ortadan kalkar ve Ir_göz çıkışında sürekli low çıkması gerekir. Güneşin etkisi bu şekilde kaldırılıyor. Ama sen biraz farklı anlatıyorsun. Anlatım farkın 12F683 ile bunu sağladığını ama 12F675 ile sağlayamadığını belirtmişsin. İşin bu kısmını anlamadım doğrusu. 683 de donanımsal PWM vardır ve kolaylıkla 38Khz lik sinyali oluşturabilirsin. Ama 675 de bu özellik olmayınca ancak kesme yolu ile o sinyali oluşturabilmen mümkün olur. Burada sorulacak soru 12F675 de bu sinyali nasıl oluşturuyorsun yada oluşturuyorlar.?
En sağlıklısı kesme ile bunun yapılması aksi halde basit bir döngü ile bu sinyal oluşturulabilir.

Sonuçta benim düşünceme göre sistemin temeli, 38Khz lik modulasyon sinyalini 10 ms süre ile led üzerinden yaymak ve bu sinyalin bir cisimden yansıyarak göz girmesini sağlamak ve göz çıkışından buna karşılık 10ms lik bir HIGH sinyali elde etmek üzerine kuruludur diyorum. Güneş ışığı IR göz girişini ancak sürekli HIGH da tutabilir. bu da modulasyonun kaybolmasına sebep olur ve çıkan sinyal bu durumda ne ise ona bakmak gerekir.  Yada GPIO.5 den giren sinyalin süresine de bakmak çözüm ılabilir 10 ms ise bu bizim sinyaldir değilse güneş etkisidir demekte doğru bir düşünce olabilir.

ete

ozgurelkt

#5
Alıntı yapılan: ete - 30 Mart 2017, 13:16:11

GPIO.5 den giren sinyalin süresine de bakmak çözüm ılabilir 10 ms ise bu bizim sinyaldir değilse güneş etkisidir demekte doğru bir düşünce olabilir.

ete


teşekkür ederim sizi de meşgul ettim..

    yukarıda dediğiniz zamanı olçmek istesem nasıl bir yol izlemem lazım.
  Diyelim ki 10ms  38 kzh sinyali normal döngü içerisinde ürettim  ve IR LED den yolladım. sinyal ALICI  GÖZ e geldiği anda sinyal var olduğu sürece    TMR0 say diyeceğim. bu anda ana döngüdeki  38kzh sinyal üretimim ,pic kesmeye girdiği için o süreyi sayana kadar durmayacak mı
bu zamanı sayma işleminde nasıl bir yol izleyebilirim.



ozgurelkt

Alıntı yapılan: fatih88 - 30 Mart 2017, 13:08:55
sayın özgürelekt  tocki ucunu tesadüfen veya pcb cizeken kolay oldugu için almış olabilir şifre yoksa sinyal analizi yapacaksın timer kullanarak gelen sinyaller neyse low-high sürekerini kaydedeceksin gelen sinyal dogruysa senin sinyal sürelerine uymuyorsa veya hiç yoksa araya bir cisim girmiştir güneşten etkilenmemesi icinde mor bi cam koyuyorlar ama ne işe yarar bilmiyorum

fatih bey teşekkürler evet filtre var normalde .. filtre olsa bile  kıpraşma yapıyor.  sifreleme yapmadım zaten benim yapmam gereken şu sanırım  zamanı ölçmek  ama zamanı ölçerken yazılamsal yaptığım PWM sürekliliğini nasıl sağlayacam ..  yani hem 10 ms PWM üretmem hemde aynı zamanda bu 10ms zamanı ölçmem lazım. burda takıldım.

ete

Zamanı ölçmenin türlü yolu var. Birincisi pulsin komutu ile ölçersin ama bu senin kesmelerine engel olur.
Şöyle düşünelim.Kesme yolu ile 38Khz sinyal çıkartıyorsun. Aklıma gelmişken sorayım bu sinyali kesme yolu ile çıkartıyorsan her 10 ms de bir 600 us lik beklemeyi nasıl yapıyorsun?
Neyse konumuza dönelim. TMR0 kesmesi yanında PORT CHANGE kesmesini için açarsın.
GPIO.5 girişi yükselince kesme oluşur. TMR1 sayacını 1/8 bölme oranı ile çalıştırırsın. kenar düşünce yeniden kesme oluşur ve TMR1 değerini hemen başka bir değişkene aktarıp kesmeden çıkarsın.
Aktardığın değişken değeri aşağı yukarı 1250 değerine yakın bir değer ise mesela 1240-1260 arasında bir değer ise bu 10 ms lik HIGH dır aradığın sinyaldir. Değilse güneş etkisidir dersin olur biter.
Bunun dışındaki süre ölçme sistemleri sana yaramıyor.
Ete



ozgurelkt

teşekkür ederim.. . kesme ile oluşturmadım . normal döngü içerisinde yaptım.

Powered by EzPortal