Pwm Decoder Entegresi varmı?

Başlatan gambit1244, 14 Ocak 2012, 20:36:25

muhittin_kaplan

geçenlerde RC kumandanın alıcısını bağlamıştım Lojik Analizere

SpeedyX

Aslına bakarsan Klein hocamın dediği gibi iyi bir RC filtre + ADC ile daha pratik olacak gibi görünüyor. ADC kodunu da ADC kesmesiyle bir döngü içinde yazıp global değişkenlere sonuçu kaydederek diğer modullerin sonucu hazır almaları sağlanırsa hiç bir mesele kalmaz.
Dezavantaj olarak ani değişimleri ancak ufak gecikmelerle farkedebilirsin, RC filtreden dolayı.

Diğer bir seçenek de başka bir işlemciyle PWM takibi yaptırıp hazır sonuçları ondan almak olabilir.

Seri haberleşme için kaybedilen zaman ADC okuma için yine kaybedilecek.

İşlemci ne?

Ben de bu aralar İzmir'deyim, yardım edebilirim.

muhittin_kaplan

Aslında Bir Ara İzmirlileri Toplasak iyi olacak :)

iyildirim

Hocalarım,
Bu iş için yapılmış input capture modülü varken ADC kullanmak çok da anlamlı gelmiyor bana. Tabii bilmediğim bir ayrıntı varsa o başka.

SpeedyX'in dediği gibi 8 bacaklı bir 12F serisi PIC,  bu iş için yapılmış bir decoder chip'e kolaylıkla dönüşebilir.  Yapılması gereken ister ana döngüde, ister kesmeli olsun, yükselen kenarda TIMER'ı resetleyip düşen kenarda TIMER değerini okumaktan ibaret.  RC kumandalar için PWM sinyalleri çoğu kumanda da aynı sinyalin havada  iletildiği şekilde, kanallara aynı anda değil sırayla geliyor. Bu yüzden tek bir timer kullanmakta hiç bir sakınca yok. Tek dikkat edilmesi gereken timer'ın max değerinin en az 2.5-3ms ve üzerinde olması.

Yine de işlemcininiz uygunsa tek işlemcide IC modülü ile işi bitirmek daha basit görünüyor.  Ayrı bir chip kullanıldığında bir de chip to chip iletişim vs. gerekecek.

OG

Alıntı yapılan: gambit1244 - 14 Ocak 2012, 20:36:25
merhaba arkadaşlar,
elimde bir rf kumanda var bu kumandanın alıcısından pwm çıkışı geliyor
bana 5 kanal gerekiyor bu 5 kanalı sürekli izleyip tüm değişmeleri i2c vb bir ortamda bana aktarabilecek hazır bir entegre varmıdır?
bunun tersini yapan var ama pwm i çözen bulamadım. :(
teşekkürler..

Led süren 12 kanal TM1812 var ama tr'de bulunurmu bilmem. 800Kb e kadar hızda haberleşiyor muş.

http://hotfile.com/dl/141989226/efc6923/TM1812.pdf.html
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

muhittin_kaplan

Hocam Bakmadım Ama Led sürücüler PWM out değilmidir ?
Biz Remote Control Receiver ın çıkışı olan PWM i ölçmeye çalışıyoruz.

@iyıldırım.
Hocam 8 kanal için kaçtane CCP/Timer Gerek ?

iyildirim

Alıntı yapılan: muhittin_kaplan - 15 Ocak 2012, 20:24:18

@iyıldırım.
Hocam 8 kanal için kaçtane CCP/Timer Gerek ?

Muhittin hocam, işlemciye göre değişebilir ama düzgün bir işelmci de 8  kanal için 8 IC pini ve bir timer yeterli olur.
Eğer sadece PWM okumaya adanmış bir işlemciden bahsediyorsak, 8 adet GPIO ve bir TIMER da olur.

Bunun dışında eğer alıcı çıkışları uygunsa bir yöntem daha var. 
Bazı alıcılarda kanallara ek olarak bir de senkron kanalı çıkışı oluyor.
Eğer senkron kanalı varsa, ve alıcının çıkış pinlerinde işaret aynı anda görülmüyorsa,  (Yukarıda logic analyzer ile baktığınızdan bahsetmişsiniz. Bakma olanağınız var yani. ) bu durumda alıcı çıkışları diyot, OR kapısı vs. ile birleştirilip, senkron kanalını da hangi kanalı okuduğumuzu anlamak amaçlı kullanıp, işlemci üzerinde sadece bir IC pini veya yükselen ve alçalanda tetiklenecek INT pinine PWM sinyallerini, sadece yükselen de tetikleyen diğer bir INT pinine  de senkron kanalını girip 8 kanalı da okumak mümkün.  Bu durumda sadece  1 IC + 1 INT + 1 TIMER ile de iş biter. 

muhittin_kaplan


Aynı Anda değil Hocam Ardışık Olarak Gliyor PWM.

Yapmaya Çalıştığım Yöntemse şudur.
bir adet timer kurdum (100us) ve her gittiğimde pwm bağlı bir kanalın jojik değerine bakıyorum ve değerini artırıyorum eğer 1 se. daha sonra okuduğum durumu Temp Adında bir değişkene atıyorum.
tekrar kesmeye girdiğimde temp ile okunan değeri kontrol ediyorum. eğer okuduğğum 1 önceki 0 sa yükselen bir kenara geldiğimi anlıyorum ve değeri hesaplatıyorum.

iyildirim

Muhitin hocam, 100us lik kesmelerle çalışmak 1-2 ms lik darbelerin çözünürlüğü için yeterli oluyormu. 1 ms en fazla 10 'a bölünebiliyor.

Burada asıl nokta işlemciyi bu işe adayacakmıyız, yoksa normal hesap kitap işlerimizin arasında PWM de mi ölçeceğiz.

İşlemciyi PWM ölçmeye adayacaksak, darbelerin sırayla geldiğini de düşününce, bir döngü içerisinde sırayla çalışacak 8 döngü daha kullanıp darbeleri GPIO pinlerine girip, yükselen kenarda TIMER resetleyip, düşen kenarda TIMER değerini okumak yeterince yüksek bir çözünürlük sağlar.

İşlemciyi adamıyorsak, ya 8 adet IC pinimizin olması gerek ki bu durumda modülü konfigüre edip kullanmak yeterli.

8 adet IC pinimiz yok ise bu durumda GPIO pinlerini kullanmamız gerekir.
Ancak döngü içerisinde pin high veya low oldu diye kontrol etmek olanağımız olmayacak. İşlemciyi sadece bu işe adamıyoruz. Bu yüzden 8 adet PWM sinyalini, sinyallerin sıra ile geldiğini de göz önünde tutup, 8 girişli bir OR kapısı ile birleştirip, birleşik sinyali de bir INT pinine girebiliriz. 
Bu şekilde döngü içerisinde beklemek yerine sadece yükselen int kesmesinde timer resetleyip, düşen int kesmesinde timer değerini okuyarak PWM süreleri ölçülebilir.
Burada önemli olan nokta hangi kanalı okuduğumuzu bilmek. Birleşik sinyal hangi kanalı okuduğumuzu söylemeyecek.
Bunun için ya 8 adet PWM sinyalini GPIO pinlerine girip kesme sırasında tek tek 8 pinin durumlarını kontrol etmek gerekir.
Ki PCB de 8 sinyali işlemciye götürmek , 8 pini işlemciden yemek ve 8 ayrı pinin durumunu kontrol etmek yerine sadece tek bir kanalı GPIO pinine girip, int kesmesinde static-global bir kanal sayacı kullanıp, her yükselen kenarda bu sayacı arttırıp ve  sadece bu tek GPIO pinini  kontrol edip, pin HIGH ise sayacı sıfırlamak daha kullanışlı bir çözüm olur. Bu şekilde sayac hangi kanalı okuduğumuzu, timer ise okunan değeri söyleyecek.

Bu şekilde kesme ile kullanıldığında dikkat edilmesi gereken tek şey TIMER'ın max değerinin en az 2.5-3ms olmasını sağlamak. Aksi durumda yükselen ve düşen kenar arasında timer kendiğiliğinden resetlenir. Buna uygun prescaler kullanmak gerekir.

Karışık oldu ama umarım yeterince açıklayabilmişimdir.


muhittin_kaplan

Hocam ben 32f100 cm3 yapmayı planlıyorum. kodlarımı cm4 de yazıp debug diyorum belkide onu kullanırım. ben tümleşik bir sistem kurmayı düşünüyorum. otopilot,osd vb sistemleri tek bir MCU ya gömceeğim. Ben Pwm i tek kanal olarak dediğim yöntemle okudum (10uslik kesmelerle)
ve pc ye gönderdim. şimdi iki ve da  fazla kanalı okyup pc ye göndermeye çalışıyorum  (aslında pc ye göndermeme gerek yok ama birşekilde görmem gerek)
Benim alıcının çıkışı böyle başka alıcıya bakmadım. belki onlar ardışıl değildir. emin olmak gerek.
OR layıp tek pinden giriş yapınca nereden bileceğiz kanalın hangisi olduğunu, problem olur kanısındayım.

Klein

İki yöntemde de stabil çalışmayı etkileyecek bazı sorulara cevap aranması gerek.
PWM sinyalleri he zaman analizörde gördüğümüz düzende mi çıkacak?
Bir kanal HI olduğunda  bu kanal LO olmadan önce diğer kanallardan birinin HI olma ihtimali var mı?


Tüm kanalları bir or kapısında birleştirdik. Bir kanaldan gelen spwm HI oldu. Orçıkışı HI. Pki daha kanal LO olmadan diğer kanal HI olursa?
Analizör sinyallerinde bütün kanalların duty oranı neredeyse eşit. Eğer birinin oranı biraz değişirse kanallar üst üste binebilir. Bu dururmda
bu kanalın yükselen kenarını kaçırırız. Doğal olarak Yükselen kenar kesmesi alamayız.

muhittin_kaplan

min  Duty


Max Duty


Muhtemel üstü üstüne binmez.

SERRO EFE

Arkadaşlar kkmultikopterin boardını incelerseniz atmega168 in 4 adet ccpsini kullanarak direk servo pwm lerini aldığını görürsünüz bence en güzeli hepsini tek mcu üzerinden halletmek. Benimde aklımda var böyle bi proje ama başlama fırsatım olmadı. Şimdi elimdeki 2.4 ghz alıcıyı açtım acaba içersinde eski alıcılardaki gibi 4017 - 4015 gibi bi ic varmıdır diye ama malesef ondada işlemci var. Öyle olsaydı sadece 1 ccp bu iş için yetebilirdi.

iyildirim

Alıntı yapılan: muhittin_kaplan - 15 Ocak 2012, 22:24:15
OR layıp tek pinden giriş yapınca nereden bileceğiz kanalın hangisi olduğunu, problem olur kanısındayım.

Muhittin hocam kanalın hangisi olduğunu anlamak için birleşik sinyale ek olarak tek bir PWM sinyalini de işlemciye giriyoruz.
Ama F4'de yazıyorsanız zaten F4 de yeterince IC girişi var. Önerim direkt IC modülünü kullanmanız.

Klein hocam, şu ana kadar elime geçen incelediğim 8 kanala kadar PPM alıcılar böyle. Daha çok kanallı bir verici-alıcı da ben kullanmadım. Ama protokol belli


Sinyal havada da analizör de görüldüğü gibi iletiliyor. Alıcının yaptığı senkron darbesinde kanalı sıfırlayıp, sıralı gelen darbeleri  aynı genişlikte darbeler olarak farklı pinlere basmak. İki ayrı sinyalin kesiştiğini henüz hiç görmedim. Standart PPM/PCM alıcı vericilerde göreceğimi de sanmam.
Ama çeşitli sub protokoller çıkıyor, daha fazla kanal veya hız için geliştirmeler yapılıyor. Dediğiniz gibi öncelikle yöntemin alıcı ile uygunluğunu kontrol etmek gerekir.

Anlatmaya çalıştığım yöntem zaten sinyallerin sıralı olması, kesişmedikleri durumda geçerli. Yani standart PPM/PCM çalışan alıcı-vericilerde.

OG

Alıntı yapılan: muhittin_kaplan - 15 Ocak 2012, 20:24:18
Hocam Bakmadım Ama Led sürücüler PWM out değilmidir ?
Biz Remote Control Receiver ın çıkışı olan PWM i ölçmeye çalışıyoruz.

Dikkatli okumadan cevap yazmışım sory.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.