RC sinyali pulse süresi göstergesi

RC sinyali pulse süresi göstergesi

Deniz Tanrıverdi' Alıntı:
O arkadaş benim Türker bey. Baktım Sümer hoca ortalıkta boş boş geziyor, kimseye bulaşmasın diye uğraşabileceği bir şey yarattım :D
Şaka bir yana, Sümer hoca sakal bıraksa kendisine Noel baba diye hitap edeceğim...
:saygilar:
Deniz hocam sormamda sakinca yoksa bunu nerede ve nasil kullanmayi planliyorsunuz ?
 
RC sinyali pulse süresi göstergesi

Sümer Abim eline sağlık. Tam olarak son bir iki haftadır üzerinde düşündüğüm (ve teorik olarka çalıştığım) şeye el atmışsın.

Pulse süresini hangi yöntemi kullanarak okuduğunu merak ettim ama paylaşırsan sevinirim.

Ben ne diye bunun üzerine kafa yoruyordum diye sorarsan; malum benim Hurricane modelimde motor ses efektleri için ses sistemi kullanıyorum. Ses sisteminde motor çalıştırma ve ve durdurma için ayrı ayrı sesler de tanımlı ve bu sesler gerçek uçağın sesinden doğrudan kayıt edilmiş sesler. Doğal olarak hem motor çalışma hem de durma sekansları nispeten uzun süreli gerçekleşiyor, bu süreler bizim model ölçeğindeki motor-pervane sistemlerinin düşük eylemsizlikleri nedeniyle kolaylıkla benzeştirilemiyor. Eğer hiçbir ayar yapmadan direk ses devresi ve motor birbirine bağlanırsa, motor çalışınca doğal olarak anında pervane dönmeye başlıyor, ama arka plandaki ses önce motor starterinin devir alması, sonra pervanenin hafif hafif dönmeye başlaması, motorun öksürüp canlanması vs derken bihayli geriden geliyor. Keza motorun durdurulmasında da benzer şekilde pervanenin dönüşü ile ses arasında bir senkronsuzluk oluyor. Sen beni gayet iyi tanıyorsun ama tanımayanlar için söyleyeyim, modeli bu şekilde kullanmaktansa yakarım daha iyi :D O yüzden üreticinin tavsiyesi dışına çıkıp ses devresi ile ESC'yi alıcıda ayrı kanallara bağlayıp radyomda programlama yapıp hem iki giriş çıkışlara gecikme atadım hem de uygun miktarlarda yavaşlatma tanımladım. Sonuç şu videoda:

Bu VIDEOYU görmek için izniniz yok. Giriş yap veya üye ol

Sonuç çok kötü değil (hatta bu videodan sonra birazcık daha iyi senkron da sağlayabildim), ama mükemmel de değil. O yüzden bunu daha da iyi yapmak için kafa yormaktaydım. Aslında tam olarak istediğim şey, özellikle ilk çalışma sırasında gerçek motorun fasılalı ateşlemesini benzeştirecek şekilde pervanenin darbeli bir şekilde dönmeye başlayıp ses sistemindeki ses kaydı kararlı rölanti devrine ulaştığında pervanenin de kararlı bir devirle dönmesini sağlayabilmek. Tabiki böyle bir şeyi radyo miksleri ile başarmak, en azından elimdeki mevcut radyo ile, imkansız.

Planıma geçmeden önce şu anki çalışma sistemimi açıklayayım:
Motor çalıştırma ve stop için kumandamda bir anahtar atadım. Bu anahtar "motor çalıştır" konumuna gelince ESC'ye ve ses devresine rölanti devrinin sinyali gidiyor, ses devresi çalıştırma sekansını başlatıyor motor dönmeye başlıyor (tanımladığım yavaşlatma ve gecikmelerle ses ile hemen hemen aynı anda motor dönmeye başlıyor). Uçuş boyunca bu anahtar aynı konumda kalacak, yani gaz kolunu sonuna kadar geri çeksem bile motor durmuyor, rölantide dönmeye devam ediyor ve ses devresi de "motor kapatma" sekansına geçmiyor. İniş sonrası taksi ve parka ulaşınca aynı anahtar "motor kapalı" konumuna getiriliyor ve ses devresi motor durdurma efektini oynatmaya başlarken motor da olabildiğince uyumlu bir şekilde yavaş yavaş duruyor.

Yapmayı istediğim şey ise şu:

Alıcı ile ses sistemi ve ESC arasında bir mikroişlemcili devre koymak. Bu devre aynı zamanda uçağın ışık sistemlerini de kontrol edecek amao ayrı hikaye :). Bu devre ile motor çalıştırma sırasında yukarıda da yazdığım gibi modelin motoruna gaz sinyallerini darbeli olarak yollayıp pervanenin sese uyumlu olarak hareket etmesini sağlamak motor çalıştırma sekansı tamamlanınca (zaman tanımlaması yapılabilir zira çalıştırma süresi net ve sabit) alıcıdan gelen sinyali doğrudan ESC ve ses devresine iletmek. kısacası uçuş boyunca bu devre hiçbirşeye karışmayıp sadece alıcıdan gelen sinyali aynen aktaracak (güvenlik gerekçesi). Uçuş sonlandırılıp uçak park edilip motor kapatma komutu geldiği andan itibaren de devre tekrar devreye girip ESC ye motorun sesle uyumlu bir şekilde yavaşlayıp durması için gereken sinyalleri gönderecek.

Gelelim olayın teknik kısmına;

Yukarıda yazdıklarımı yapabilmek için devrenin her şeyden önce alıcıdan gelen sinyali okuyup anlayabilmesi gerekli, tercümesi, sinyal pulse süresini ölçmesi gerekiyor :) bu kısım için gerekli kodları ve kütüphaneleri buldum, bulduğum kütüphane 0.5 microsaniye hassasiyetinde süre ölçümü yapabiliyor (bu kütüphaneyi yazan da bizim gibi kafadan arızalı bir modelci)

İkinci ana nokta, mikroişlemcinin ESC ye önceden programlanmış sinyalleri göndererek motorun istediğimiz şekilde davranmasını sağlayabilmesi lazım.

Son olarak da çalıştırma sekansı bitince (zamanlama kontrollü) ve/veya kumandadaki anahtarın "motor çalışıyor" sinyalini aldığı sürece (giriş sinyali eşik değer tanımlanarak) alıcıdan gelen sinyali aynen ESC ve ses devresine aktarması gerekli. Bu kısımda bir nevi "fail safe" oluşturulup sinyalin aslında devreden bağımsız olarak "by-pass" yapılarak aktarılması mümkün olursa sanırım en güvenli seçenek olur.

İlgini çekebildim mi acaba :) Ben her şekilde bunun üzerinde uğraşmaya devam ediyorum (tuvalet mesaileri), ama ilgini çekerse sen de bir el at istersen, Türkiyeye geldiğimde karşılıklı oturup fikir tokuşturabiliriz...
 
RC sinyali pulse süresi göstergesi

Evren'ciğim pulse ölçme algoritması basit. Telefondan uzun uzun yazmak yerine bilgisayardan yazarım birazdan.
Anlattıkların kolayca yapılabilecek şeyler. Ama ben bu gibi işlerde hazır library kullanmam. Birkaç farklı işlev gerektiğinde libraryler arasında timer ya da interrupt çakışmaları olayı içinden çıkılamaz hale getirebilir. Kaldı ki bu kadar basit bir şeyin kodu doğrudan yazılabilir. Hallederiz... :)

SM-N910C cihazımdan Tapatalk kullanılarak gönderildi
 
RC sinyali pulse süresi göstergesi

Deniz Tanrıverdi' Alıntı:
:saygilar: :halay:

Abi bana acele etme, bir ay beklersin demiştin. Senin bir ayın 24 saat bile sürmüyor anlaşılan... :thumbup:

Senin işin zor abi, proje falan dayanmaz bu tempoya :lollol:

Daha " leb " derken leblebi tozu makinasını devreye alıp, el değmeden üretime geçirip, uluslararası satışına başlıyor Sümer abi. :lol: :lol:

Benim hiperaktif oğlana benziyor, adamı oyalamak için 3 kişi mesai yapıyoruz. :eek:f: Herkes pert olduktan sonra gelip " Hadi gezmeye gidelim... " diyor. ;D
 
RC sinyali pulse süresi göstergesi

Özgür Evren Varol' Alıntı:
Sümer Abim eline sağlık. Tam olarak son bir iki haftadır üzerinde düşündüğüm (ve teorik olarka çalıştığım) şeye el atmışsın.

Pulse süresini hangi yöntemi kullanarak okuduğunu merak ettim ama paylaşırsan sevinirim.

Bütün uygulamalarımda ya Atmega328 ya da Attiny85 işlemci kullanıyorum. İkisini de Arduino IDE kullanarak programlıyorum. Tabii arada programlama kartları falan oluyor.
Atmega328 ile olanı anlatayım. Attiny az daha karmaşık. Çünkü ilkinde bir tane 16 bit timer var, ikincideki timer'lar 8 bit. Okuyacağımız değer mikrosaniye cinsinden olunca 8 bitlik sayaç yetersiz kalıyor ve başka numaralara başvurmak gerekiyor.

Atmega328'in Timer1'ini yani 16 bit olanı kullanıyoruz. Atmega328'i istersek 8MHz internal osilatörle istersek de 16 MHz krstal ile çalıştabiliriz. Ben bu gibi durumlarda kristali tercih ediyorum. Ama örneğin retract kontrolcüsü gibi zaman kritik olmayan uygulamalarda plaket boyutundan tasarruf için internal osilatör kullanılabilr.

16MHz sistem clock için prescaler olarak "8"'i seçiyorum. Böylece Tmer1 2MHz ile çalışıyor. Yani 0.5 mikrosaniye hassasiyet elde ediyoruz. Aslında pratiğe 1 mikrosaniye hassasiyet olarak yansıyor ki işimizi yeterince görüyor. (Klasik kumanda sistemleri bu çözünürlükte çalışıyor)

Pulse süresi ölçmek için iki yol var. Birincisi "blocking". Sadece pulse ölçeceksen kullanmakta sakınca yok ama daha karmaşık işler de yapıyorsan ikinci yöntem daha uygun çünkü ilkinde ölçüm sırasında işlemci bloke oluyor.

HIGH pulse ölçeceğimizi varsayıyorum. Ben artık tüm girişlere Futaba'nın yeni alıcılarının 2.7 V sinyali ile de çalışsın diye bir transistör eklediğim için benim uygulamalarımda LOW pulse ölçüyorum ama örneği HIGH pulse olarak vereyim.

1.yol: Belirlenmiş olan giriş pininin LOW olması bekleniyor. Sonra HIGH olması bekleniyor. HIGH olduğunda Timer1 sıfırlanıyor (Arduino IDE'de TCNT1 = 0; komutu ile). Sonra girişin tekrar LOW olması bekleniyor ve olur olmaz TCNT1'in değeri bir değişkene aktarılıyor. Bu değeri ikiye bölünce pulse süresi mikrosaniye olarak elimizde oluyor.

2.yol: Giriş pini için bir Pin Change Interrupt tanımlıyoruz. Giriş pini her konum değiştirdiğinde otomatik olarak Interrupt Service Routine çağrılıyor. Burada girişi kontrol ediyoruz. HIGH ise yeni puse başladı demektir. TCNT1'i sıfırlayıp dönüyoruz. LOW ise pulse bitti demektir. O zaman TCNT1 değerini bir değişkene aktarıp, yeni bir ölçümün tamamlandığını gösteren bir flag'ı set edip dönüyoruz. Dolayısıyla ana program gövdesi için bu olay şeffaf hale geliyor. Ana program gerekli işleri yaparken arada flag'ı kontrol ediyor. Yeni bir değer geldi ise onu okuyup gerekli işlemleri yapıyor.
 
RC sinyali pulse süresi göstergesi

Sümer Yamaner' Alıntı:
Bütün uygulamalarımda ya Atmega328 ya da Attiny85 işlemci kullanıyorum. İkisini de Arduino IDE kullanarak programlıyorum. Tabii arada programlama kartları falan oluyor.
Atmega328 ile olanı anlatayım. Attiny az daha karmaşık. Çünkü ilkinde bir tane 16 bit timer var, ikincideki timer'lar 8 bit. Okuyacağımız değer mikrosaniye cinsinden olunca 8 bitlik sayaç yetersiz kalıyor ve başka numaralara başvurmak gerekiyor.

Atmega328'in Timer1'ini yani 16 bit olanı kullanıyoruz. Atmega328'i istersek 8MHz internal osilatörle istersek de 16 MHz krstal ile çalıştabiliriz. Ben bu gibi durumlarda kristali tercih ediyorum. Ama örneğin retract kontrolcüsü gibi zaman kritik olmayan uygulamalarda plaket boyutundan tasarruf için internal osilatör kullanılabilr.

16MHz sistem clock için prescaler olarak "8"'i seçiyorum. Böylece Tmer1 2MHz ile çalışıyor. Yani 0.5 mikrosaniye hassasiyet elde ediyoruz. Aslında pratiğe 1 mikrosaniye hassasiyet olarak yansıyor ki işimizi yeterince görüyor. (Klasik kumanda sistemleri bu çözünürlükte çalışıyor)

Pulse süresi ölçmek için iki yol var. Birincisi "blocking". Sadece pulse ölçeceksen kullanmakta sakınca yok ama daha karmaşık işler de yapıyorsan ikinci yöntem daha uygun çünkü ilkinde ölçüm sırasında işlemci bloke oluyor.

HIGH pulse ölçeceğimizi varsayıyorum. Ben artık tüm girişlere Futaba'nın yeni alıcılarının 2.7 V sinyali ile de çalışsın diye bir transistör eklediğim için benim uygulamalarımda LOW pulse ölçüyorum ama örneği HIGH pulse olarak vereyim.

1.yol: Belirlenmiş olan giriş pininin LOW olması bekleniyor. Sonra HIGH olması bekleniyor. HIGH olduğunda Timer1 sıfırlanıyor (Arduino IDE'de TCNT1 = 0; komutu ile). Sonra girişin tekrar LOW olması bekleniyor ve olur olmaz TCNT1'in değeri bir değişkene aktarılıyor. Bu değeri ikiye bölünce pulse süresi mikrosaniye olarak elimizde oluyor.

2.yol: Giriş pini için bir Pin Change Interrupt tanımlıyoruz. Giriş pini her konum değiştirdiğinde otomatik olarak Interrupt Service Routine çağrılıyor. Burada girişi kontrol ediyoruz. HIGH ise yeni puse başladı demektir. TCNT1'i sıfırlayıp dönüyoruz. LOW ise pulse bitti demektir. O zaman TCNT1 değerini bir değişkene aktarıp, yeni bir ölçümün tamamlandığını gösteren bir flag'ı set edip dönüyoruz. Dolayısıyla ana program gövdesi için bu olay şeffaf hale geliyor. Ana program gerekli işleri yaparken arada flag'ı kontrol ediyor. Yeni bir değer geldi ise onu okuyup gerekli işlemleri yapıyor.
Abim, detaylı açıklaman için teşekkürler. Ben de akşam ufaklık uyuduktan sonra bilgisayar başına geçip daha bir detaylı okuyacağım yazdıklarını...


Sent from my iPhone using Tapatalk
 
RC sinyali pulse süresi göstergesi

Mehmet Kucuksari' Alıntı:
Deniz hocam sormamda sakinca yoksa bunu nerede ve nasil kullanmayi planliyorsunuz ?

Tabii ki sakınca yok. Model toplarken (yer darlığı başlıca sebebim) servoların limitlerini ve merkezlerini servo tester ile tek tek ve parça parça planlıyorum ve göz kararı ile ayarlıyorum. Ama kumanda programlarken ve miksleri planlarken işkence başlıyor. Hatta bu aşamada endpoint ve hareket istikametinde yanlışlıkların olması servoların veya menteşlerin başına can sıkıcı şeylerin gelmesine neden olabiliyor. Halbuki bu değerleri kumanda programlamaya başlarken önceden biliyor olsam kumandaya bu değerleri doğrudan girip hem programlama sırasındaki karışıklıkların hem de sakatlıkların önüne geçneyi hedefliyorum.

Bu arada Özgür Evren Varol beyi tebrik etmek istiyorum. :saygilar:
"karanlık taraftaki" Hawker Hurricane hakkındaki çalışmasını yakından ve büyük ilgi ve merakla takip ediyorum. Konuyu bölmek istemediğim için araya "salça" olmuyorum. %p

Sümer hocam, sana ne kadar teşekkür etsem azdır...
Saygılarımı sunuyorum.
 
RC sinyali pulse süresi göstergesi

O Özgür Evren Varol Bey aramızda olsaydı sen daha neler görüp öğrenecektin... Benim şimdi bildiğim bir iki kalem şey varsa en az yarısı ondan gelmedir! :)
 
RC sinyali pulse süresi göstergesi

Görünüşe göre dün gece ufaklık beni uyutmuş :D

Deniz Bey, "karanlık taraf" benzetmenize çok güldüm :) Sümer abinin dürtmesiyle "aydılığı" farkettim, aslında 2014 te buraya üye olmuş olmama rağmen o tarihler çeşitli sebeplerle vaktimin çok sınırlı olduğu zamanlardı ve forumlara ayıracak vaktim yada enerjim kalmıyordu. Malesef bende Sümer abinin içindeki nükleer reaktörden bulunmuyor, enerjim ve menzilim sınırlı :) Ama "karanlıklar" içinde olsa bile yazdıklarımı birilerinin görüp ulaşıp okuyabildiğini duymak güzel. Bilgi olsun diye paylaşayım, yakın zamanda Hurricane inşaatımı ufak ufak bu tarafa da taşıma planım var, daha çok kişiye ulaşabilecek ve daha faydalı olabilecek gibi görünüyor. Hurricane sonrasındaki projemi de doğrudan burada paylaşabilirim. Görebildiğim kadarıyla çok güzel çalışmalar olmasına rağmen benim sevdiğim tarzda balsa ağırlıklı inşaat konusundaki paylaşımlar biraz azınlıkta, biraz olsun faydam olabilir belki... Güzel düşünceleriniz için de ayrıca teşekkür ederim...

Sümer abi, sağolasın ama söylediğin şey imkansız, hemen ispatlayayım; sen ideal öğrencisin, yani sana bişey öğretmek gerekirse öğretmen bir birim bilgi verip yolu gösterir, sen o bir birim bilgiyi alıp okur araştırır düşünür dener geliştirir 10 birim haline getirir sonra tamam öğrendim dersin :) Yani senin bildiğin şeylerin %1 inden fazlası benden gelmiş olamaz :)

Mikroişlemci ile ilgili söylediklerin benim de doğru yolda olduğumu teyid etti, teşekkür ederim :) İşlemciyi bloke eden yöntem kod açısından çok daha kolay ama aynen dediğin gibi başka bir işlem gerekliyse, ki bana gerekli olacak, pratik değil. İkinci yöntem çok daha sağlıklı. Sanırım elinde hazır plaket var, benim ihtiyacım olan şeylerin (sinyal okuma zamanlama çözümleme harici olanlar) ilave elektronik bileşene ihtiyaç duymayacak diye tahmin ediyorum, eğer öyleyse İstanbula geldiğimde bir yada iki devre kartını satın almak ile ilgilenebilirim. Kod kısmını sonradan da halletmek mümkün nasılsa...
 
RC sinyali pulse süresi göstergesi

Deniz Tanrıverdi' Alıntı:
..."karanlık taraftaki" Hawker Hurricane hakkındaki çalışmasını yakından ve büyük ilgi ve merakla takip ediyorum.

Nasıl karanlık tarafa geçti Hawker bilemiyorum ama olsun; kendini heli hisseden her uçakta, helileri seven her uçakçı da karanlık tarafa geçmiş demektir. :lollol:

Özgür Bey projeyi epey merak ettik, umarım fırsatınız olurda paylaşabilirsiniz. Eminim benim gibi birçok üyemiz keyifle takip edecek ve faydalanacaklardır. :RCKolik:
 
RC sinyali pulse süresi göstergesi

Devre kartı satın almak istiyorsun demek. Memnuniyetle. Satarım!!! :) Sana olan ödenemez borçlardan düşeriz bedelini.

Ben ses sistemi kontrolü üzerinde düşünüyorum. Ona uygyn bir devre planlamak gerekecek. Ama hallederiz.

SM-N910C cihazımdan Tapatalk kullanılarak gönderildi
 
RC sinyali pulse süresi göstergesi

Özgür Evren Varol' Alıntı:
Deniz Bey, "karanlık taraf" benzetmenize çok güldüm :) Sümer abinin dürtmesiyle "aydılığı" farkettim, aslında 2014 te buraya üye olmuş olmama rağmen o tarihler çeşitli sebeplerle vaktimin çok sınırlı olduğu zamanlardı ve forumlara ayıracak vaktim yada enerjim kalmıyordu. Malesef bende Sümer abinin içindeki nükleer reaktörden bulunmuyor, enerjim ve menzilim sınırlı :) Ama "karanlıklar" içinde olsa bile yazdıklarımı birilerinin görüp ulaşıp okuyabildiğini duymak güzel. Bilgi olsun diye paylaşayım, yakın zamanda Hurricane inşaatımı ufak ufak bu tarafa da taşıma planım var, daha çok kişiye ulaşabilecek ve daha faydalı olabilecek gibi görünüyor. Hurricane sonrasındaki projemi de doğrudan burada paylaşabilirim. Görebildiğim kadarıyla çok güzel çalışmalar olmasına rağmen benim sevdiğim tarzda balsa ağırlıklı inşaat konusundaki paylaşımlar biraz azınlıkta, biraz olsun faydam olabilir belki... Güzel düşünceleriniz için de ayrıca teşekkür ederim...
Konuyu dışına çıkmış olacağım ama Özgür bey, sizinde dediğiniz gibi eski bir üyemizsiniz ama sizinle tanışmak nasip olmadı. Anladığım kadarı ile Sümer abimiz ile zamanında epey bir mesainiz olmuş :D Müsait bir zamanda sizi biraz daha yakından tanımak ve eğer varsa ki illa ki vardır, Sümer abimizle yaşadığınız ve unutamadığınız 1-2 anıyı bizlerle paylasmanızı rica ederiz.

Diğer taraftan dediğiniz gibi Balsa'dan model inşa eden nerede ise kalmadı. Bizden bir Ömer abimiz vardır. Sağolsun yılda 1 model yaparak bizlerle paylaşır ve o konudaki açığımızı kapatmaya çalışır. Hurricane inşaatı devam ediyor galiba. Eğer sakıncası yoksa yeni bir konu başlığı altına mevcut durum ve gelişmeleri forumca takip etmek bizleri mutlu edecektir :saygilar:
 
RC sinyali pulse süresi göstergesi

Bu adam hakkında günlerce yazıp anlatabilirim... :)

SM-N910C cihazımdan Tapatalk kullanılarak gönderildi
 
Sümer Yamaner' Alıntı:
Bu adam hakkında günlerce yazıp anlatabilirim... :)

SM-N910C cihazımdan Tapatalk kullanılarak gönderildi
Durum iyice gizemli bir hal aldı :D Şaka bir yana merak etmedim dersem yalan olur :)