Patron çıldırdı... Türbin motorlara ECU (ya da FADEC) yapıyoruz...

hocam selamlar,
hızı okumak için nasıl bir sensor/encoder kullandınız? arduino uno'nun clock hızı 200bin rpm(200k pulse demek) değerini ölçecek kadar hızlı değil. nihai üründe teensy gibi hızlı bir karta geçmeniz gerekebilir.
Bir gün türbinlilere geçebilirim umarım:)
 
hocam selamlar,
hızı okumak için nasıl bir sensor/encoder kullandınız? arduino uno'nun clock hızı 200bin rpm(200k pulse demek) değerini ölçecek kadar hızlı değil. nihai üründe teensy gibi hızlı bir karta geçmeniz gerekebilir.
Bir gün türbinlilere geçebilirim umarım:)
Peki sen olsan nasıl okurdun? Önce onu bir anlat sonra ben yazayım. Bu arada olay düşündüğün gibi değil. 200 bin devir 400 bin pulse demek ve gayet güzel okunuyor Atmega328 ile.
 
Evren'in yazdıklarından minik bir alıntı ile başlayalım. "Öğrencilerden gelen soruların önemli bir kısmı "bilmem kaç sene içinde (oldukça kısa süreler) müdür olabilir miyim?" şeklinde"
"Olmuşken en iyisi olsun" belki özünde güzel bir mantık ama onu haketmek için sen ne yapacaksın?
Ne demek istiyorum?
Bir örnekten ilerleyelim...
Diyelim ki iki arkadaş aynı uçaktan birer tane topladık. Bire bir aynı uçak. Arkadaşım 24 kanal alıcı kullandı ve sistemin 20 kanalını kullanıyor. Ben 9 kanal alıcı kullandım ve 8 kanalını kullanıyorum. Uçağın tüm işlevleri aynı!!!
Arkadaşım her servoyu ayrı bir kanala taktı. Ben binbir takla atıp bazı numaralar yaparak kullandığım kanal sayısını azalttım.
Başka bir örnek...
Başka bir konuda söz edilen power analyser.
Bu RESMİ görmek için izniniz yok. Giriş yap veya üye ol

Şimdi gençten bir arkadaşa bunu ödev olarak versem neler olur diye düşünüyorum. Tahminim şöyle: Önce bir Arduino seçilir. Örneğin nano ya da micro. Sonra jumper kablolar ile devre kurulur. Haydi bakalım internet başına. Kütüphane araştırmaya!!! Başkasının bakış açısı ile yazılmış kod parçaları birleştirilip bir şeyler yapılmaya çalışılır. Kod parçaları uyumsuz olunca ilerlenemez. Gidilip bir forumda konu açılır. İstenilen şey şudur: "Hemen bana bi kod verin de ben gideyim"! :p Şansı yaver giderse bir şeyler yapar, gitmezse sıkılır ve ödevi bırakır. Nasıl olsa bir sonraki dönem halledecektir.
Gençlerin çok daha küçük bir oranı, doğrudan bir mikrodenetleyici, örneğin bir Atmega ile (hazır Arduino kartı kullanmadan) bir devreye girişir ve iyi kötü bir iş çıkarır.
Bunların çok çok düşük bir orandaki bölümü ise önce oturup konuyu kafasında ölçer biçer, ihtiyaçları belirler ve sekiz bacaklı bir Attiny85'in bu iş için fazla fazla yeteceğini farkeder. Uğraşır, çalışır, çabalar ve istediği sonuca ulaşır.
Yine bir başka örnek...
Bir türbine ECU yapılacaktır. Birisi hemen atlar: "Olmaz, öyle olmaz, daha güçlü bir şey kullanmalısın, Arduino Uno ile olmaz bu iş" der. "Neden olmaz, atladığım bir nokta mı var, biraz açar mısın" dersin, sadece "olmaz" der. (Sezer kardeşim alınmasın, ondan söz etmiyorum).
Bir arkadaşım vardı. Yanında daima en son Iphone modelinden iki adet taşırdı. Ancak her telefonda sadece bir sayfa ekran vardı. Telefonları konuşma ve SMS dışında herhangi bir iş için kullanmazdı. Hatta telefon rehberinde bir kişiye ait farklı numaralar ayrı ayrı girdiler olarak kayıtlıydı (bu önemli bir ayrıntı bence). Ne dedik yukarıda? "Olmuşken iyisi olsun"!!!
Aslında tüm bunlar multifaktöriyel şeyler. Tek bir sebep yok. Telefon açıp "hocam bizim yeğene biraz Arduino öğretsene" diyebilen zihniyet bu.
Benim hayat felsefem biraz minimalizme yatkın. O nedenle bol keseden savuranları pek anlayamıyorum. Düşünüp kafa patlatmaktan da korkmuyorum. Öğretim üyeliği hayatım boyunca öğrencilerime hep şunu söyledim: "Arkadaşlar, beyninizi kullanın, çünkü o ilginç bir organdır, çalıştıkça eskimez aksine daha da güçlenir".
Karşılaşılan görevi / sorunu önce analiz etmek, sonra aşama aşama çözümler üretmek ve en sonunda bir sentez ile bütüncül çözümü üretmek bence en keyifli entellektüel aktivitelerden biridir. Doğru, zordur ama sonu harikadır. İnsanı tatmin eder. Yoksa onun bunun devresini, kodunu alıp birleştirip "ben bunu yaptım" diye ortaya çıkmanın herhangi bir anlamı olmaz.
Neyse dilime vurdu sanırım... :)
 
İyi ki de diline vurmuş, bu düşünce tarzını oğluma anlatabilmek için kaynak bulamadım (Öğreten adam ve oğlu modundayım bu aralar). Bulduklarım da bu kadar kısa ve zevkle okunup anlaşılamıyor. Bunun sebebi de aslında yukarıda anlatmaya çalıştığın şeyler. 'ben bu konuda uzmanım, bari yayınlarım da olsun, hatta kitap yazmış olayım' diye yazılmış kitaplar gibi geliyor bana. Ne çelişki ama değil mi?...
Zahmet edip bu düşünceleri paylaştığınız için tekrar teşekkür ederim.
 
hocam selamlar,
hızı okumak için nasıl bir sensor/encoder kullandınız? arduino uno'nun clock hızı 200bin rpm(200k pulse demek) değerini ölçecek kadar hızlı değil. nihai üründe teensy gibi hızlı bir karta geçmeniz gerekebilir.
Bir gün türbinlilere geçebilirim umarım:)
Gelelim bu soruya...
Türbinlerde devir okumak için kullanılan iki ana yöntem var. Bunlardan birisi Hall sensör ile şafta gömülü bir mıknatısın okunması, diğeri ise şaft ucundaki deliği kullanarak infrared LED ve infrared diyot ile optik okuma. Infrared uygulaması eskilerde kalmış. Özellikle motor güneş görecek olursa tamamen devre dışı kalıyor. Hall sensörlü manyetik okuma ise son derece güvenilir bir çözüm sağlıyor.

Soruda Arduino Uno denilmiş. Ben Arduino kullanmıyorum. Doğrudan bir mikrokontrolör ile çalışıyorum. Haa tamam, kullandığım mikrodenetleyici bir Atmega328 ve 16 MHz'de çalışıyor yani Uno'dan farklı değil ama yine de bir Uno kullanılmadığının altını çizmeliyim.

Ölçülecek olan devir ile işlemci hızı arasında nasıl bir bağlantı kurulduğunu açıkçası net olarak anlayamadım. O nedenle belki faydası olur diyerek biraz genel bilgi paylaşmak isterim.

Devir ölçümünde iki temel yaklaşım söz konusudur. Eğer kendi bakış açımızı kullanmayıp sadece Google Amca'ya sorarsak tek bir yöntem olduğunu görür (ve ne yazık ki yanılırız)! Zira Google Amca der ki, devir ölçeceksen iki tur arasındaki süreyi ölç ve oradan devri hesapla. Gerçekten de bir Google taramasından çıkan tüm sonuçlar neredeyse bu yönde. Hatta bu aramada o kadar aptalca yaklaşımlar var ki insanın dudakları uçukluyor. Neyse biz konuya dönelim...

İki temel yaklaşım dedik.

Biri Google Amca'nın dediği yöntemdir. Yani her nasıl bir sensör kullanıyorsak, ondan gelen iki devir sinyalinin arasındaki süreye bakarız. Örneğin 200 milisaniye aralıkla iki darbe geldiyse, saniyede 5, dakikada 300 devir demektir. Bu yöntem özellikle düşük devirli sistemler için uygundur. En önemli dezavantajı da sıfır devir konusudur. Yani ölçülen sistem hareket etmiyorsa arasını okuyacak iki darbe oluşamayacağı için yazılımda buna karşı bir önlem gerektirir. Yani bir timeout süresi belirlenir, bu da sistemin beklenen en düşük devir sayısının altında kalacak şekilde hesaplanır. Örneğin bir benzinli motorun devrini ölçeceksek, motorun en düşük rölantisinin 1200 devir olacağını bilerek ilerleyebiliriz. 600 devri sınır alabiliriz. O zaman periyod olarak 100 milisaniye diyebiliriz. Yani darbe beklerken 100 milisaniye içinde darbe gelmezse devir sıfır diyerek geri dönebiliriz. Bu yöntem, darbe aralığını ölçtüğümüz zamanlama sisteminin çözünürlüğüne bağlıdır ve yüksek devirlerde işe yaramaz.

Yüksek devirleri ölçmenin en iyi yolu belirli bir gate süresi içinde gelen devir darbelerini saymaktır. Bunu nabız saymaya benzetebiliriz. Dakikadaki kalp atım sayısını bir dakika boyunca nabzı sayarak bulabiliriz ama pratik olmaz. O zaman ne yaparız? 15 saniye sayar, elde ettiğimiz rakamı dörtle çarparız.
İşte devir ölçerken de bunu yapıyoruz. Biraz detay vereyim:

Mikrodenetleyicinin zamanlayıcılarından birini öyle programlıyoruz ki belirli sürede bir interrupt oluştursun.
Diğer yandan mikrodenetleyicinin devir sensörüne bağlı bacağını da pin change interrupt üretecek şekilde programlıyoruz.
Bu bacaktaki her değişim bizi bu interrupt servis rutinine götürüyor ve orada sadece bir sayacı bir artırıp geri dönüyoruz.
Zamanlayıcının oluşturduğu interruptta ise artık sayma süresi dolduğuna göre sayaç değerini kalıcı bir değişkene aktarıp sayacı sıfırlıyoruz ve geri dönüyoruz.
Dikkat edilirse tüm devir izleme olayı interruptlar ile yürüyor ve ana kod için tamamen şeffaf durumda. Ana kod ihtiyacı olduğu her an sayımı tamamlanmış bir değeri okuyup oradan devri hesaplayabiliyor. Sistem o kadar "şeffaf" ki milyon devirlere çıkılmadıkça işlemcinin performansının ihmal edilebilir bir bölümünü kullanıyor ve ana kod bundan etkilenmiyor.

Umarım anlatabilmişimdir...

Gelelim Teensy vs önerisine...

Öncelikle bir türbin ECU'sü tasarlarken bu devrenin ne yapacağını bilmek gerekiyor. Türbin son derece basit bir sistem temelde. Çalışmakta olan bir türbinin izlenecek toplam iki parametresi var. Devir ve egzost gazı sıcaklığı (EGT). Kontrol edilen tek bir şey var, o da yakıt pompa motorunun gücü. Yani çalışmakta olan bir türbini en küçük mikrodenetleyici ile bile kontrol edebiliriz. İlk çalıştırması oldukça kompleks ve burada kızdırma bujisi, propan akış kontrolü vs vs gibi başka kontrol parametreleri çıkıyor ortaya. Bunların altından da Atmega328 rahat rahat kalkıyor.
İşlemci gücü gerektiren tek şey "user interface". Zaten bizim kodun en büyük kısmı ekran kontrolü, buton kontrolü ve setup aşamalarına ait. Eğer HD çözünürlüklü dokunmatik bir ekranla bir ECU yapmak istersek gerçekten de Atmega 328 yetersiz kalacaktır. Ama motoru çalıştırıp çalışmayı izlemek için fazlasıyla yeterli olduğunu söylemeliyim.
 
Son düzenleme:
Doğru, zordur ama sonu harikadır. İnsanı tatmin eder.

Hislerime tercüman olan bu cümle için teşekkürler. Hani bazen modeldeki ufacık bir detayı yapmak için saatlere, günlerce bazen aylarca kafa patlatıp gerekirse bir dolu yöntem deniyorum ya, işte bu en sondaki “harika tatmin” için hepsi :)
 
Hislerime tercüman olan bu cümle için teşekkürler. Hani bazen modeldeki ufacık bir detayı yapmak için saatlere, günlerce bazen aylarca kafa patlatıp gerekirse bir dolu yöntem deniyorum ya, işte bu en sondaki “harika tatmin” için hepsi :)
Zaten o nedenle "Mahallenin Delisi" unvanını sonuna kadar hakediyorsun! :)
 
Al işte . Gelde böyle bir insanı "stalklama" .
" Yahu bu adam tıp üzerine okumuş yaşlı başlı bir adam . Ne anlar micro işlemciden . Ne anlar zaman dan devir hesabından . Mühendislik okumamış hatta onun döneminde mertebe hesabı yaparlardı ? . Dokunmatik ekran yoktu , internet yoktu ve sürgülü hesap cetveli gibi acaip bişey kullanırlardı . Bide kalkmış yazılım , kodlama falan gibi büyük laflar kullanıyor . Hahahha " Haaaa bide belli ki büyücülük tarafı var? (Affınıza sığınarak) .

İşte bu yüzden keşke sizi ve sizin gibileri davet etseler de hocam gelin şu öğrencilere ders verin 25 -30 öğrenciden 3 ü 5 i yerine 10 u 15 ini adam edersek memleket düze çıkar dese . 3ü 5i ile ancak ayakta duruyor sizinde bildiğiniz üzere .

40 yaşında bir bilg. bilimleri mühendisi olarak burdaki bu yazılanları okuyan öğrenci arkadaşları tavsiyem , burda paylaşılan bu muhteşem bilgileri kopyalayın ve klasörleyin . Sizin eğitim alanınızla ilgili olsun olmasın . Çok değerli paylaşımlar bunlar .
 
Yaaa bunu yapmayacaktın Özgür kardeşim...
Bu RESMİ görmek için izniniz yok. Giriş yap veya üye ol

Aristo Trilog hesap cetveli... Ortaokul ve lisede hesap makinesi yasaktı (zaten kolay bulunur bir şey değildi elektronik heap makineleri). Tüm hesapları bununla yapardık. Babam inşaat mühendisi idi ve bunun daha küçük cep tipi olanıyla her türlü hesabı yapardı.
Babamın kendine almış olduğu şu hesap makinesinden bana da aldığı gün yaşadığım mutluluğu unutamam. :)
Bu RESMİ görmek için izniniz yok. Giriş yap veya üye ol
 
Her ikisi de babamda vardı (o da inşaat muhendisi) elektronik ne oldu bilmiyorum ama sürgülü Aristoyu bana hediye etti, saklıyorum.

Dahası ben de hala bir çeşit sürgülü hesap makinası olan şu aşağıdakini kullanıyorum arada sırada:

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


:)
 
Her ikisi de babamda vardı (o da inşaat muhendisi) elektronik ne oldu bilmiyorum ama sürgülü Aristoyu bana hediye etti, saklıyorum.

Dahası ben de hala bir çeşit sürgülü hesap makinası olan şu aşağıdakini kullanıyorum arada sırada:

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


:)
Offf çok banal yahu... :D :D :D
 
Gelelim bu soruya...
Türbinlerde devir okumak için kullanılan iki ana yöntem var. Bunlardan birisi Hall sensör ile şafta gömülü bir mıknatısın okunması, diğeri ise şaft ucundaki deliği kullanarak infrared LED ve infrared diyot ile optik okuma. Infrared uygulaması eskilerde kalmış. Özellikle motor güneş görecek olursa tamamen devre dışı kalıyor. Hall sensörlü manyetik okuma ise son derece güvenilir bir çözüm sağlıyor.

Soruda Arduino Uno denilmiş. Ben Arduino kullanmıyorum. Doğrudan bir mikrokontrolör ile çalışıyorum. Haa tamam, kullandığım mikrodenetleyici bir Atmega328 ve 16 MHz'de çalışıyor yani Uno'dan farklı değil ama yine de bir Uno kullanılmadığının altını çizmeliyim.

Ölçülecek olan devir ile işlemci hızı arasında nasıl bir bağlantı kurulduğunu açıkçası net olarak anlayamadım. O nedenle belki faydası olur diyerek biraz genel bilgi paylaşmak isterim.

Devir ölçümünde iki temel yaklaşım söz konusudur. Eğer kendi bakış açımızı kullanmayıp sadece Google Amca'ya sorarsak tek bir yöntem olduğunu görür (ve ne yazık ki yanılırız)! Zira Google Amca der ki, devir ölçeceksen iki tur arasındaki süreyi ölç ve oradan devri hesapla. Gerçekten de bir Google taramasından çıkan tüm sonuçlar neredeyse bu yönde. Hatta bu aramada o kadar aptalca yaklaşımlar var ki insanın dudakları uçukluyor. Neyse biz konuya dönelim...

İki temel yaklaşım dedik.

Biri Google Amca'nın dediği yöntemdir. Yani her nasıl bir sensör kullanıyorsak, ondan gelen iki devir sinyalinin arasındaki süreye bakarız. Örneğin 200 milisaniye aralıkla iki darbe geldiyse, saniyede 5, dakikada 300 devir demektir. Bu yöntem özellikle düşük devirli sistemler için uygundur. En önemli dezavantajı da sıfır devir konusudur. Yani ölçülen sistem hareket etmiyorsa arasını okuyacak iki darbe oluşamayacağı için yazılımda buna karşı bir önlem gerektirir. Yani bir timeout süresi belirlenir, bu da sistemin beklenen en düşük devir sayısının altında kalacak şekilde hesaplanır. Örneğin bir benzinli motorun devrini ölçeceksek, motorun en düşük rölantisinin 1200 devir olacağını bilerek ilerleyebiliriz. 600 devri sınır alabiliriz. O zaman periyod olarak 100 milisaniye diyebiliriz. Yani darbe beklerken 100 milisaniye içinde darbe gelmezse devir sıfır diyerek geri dönebiliriz. Bu yöntem, darbe aralığını ölçtüğümüz zamanlama sisteminin çözünürlüğüne bağlıdır ve yüksek devirlerde işe yaramaz.

Yüksek devirleri ölçmenin en iyi yolu belirli bir gate süresi içinde gelen devir darbelerini saymaktır. Bunu nabız saymaya benzetebiliriz. Dakikadaki kalp atım sayısını bir dakika boyunca nabzı sayarak bulabiliriz ama pratik olmaz. O zaman ne yaparız? 15 saniye sayar, elde ettiğimiz rakamı dörtle çarparız.
İşte devir ölçerken de bunu yapıyoruz. Biraz detay vereyim:

Mikrodenetleyicinin zamanlayıcılarından birini öyle programlıyoruz ki belirli sürede bir interrupt oluştursun.
Diğer yandan mikrodenetleyicinin devir sensörüne bağlı bacağını da pin change interrupt üretecek şekilde programlıyoruz.
Bu bacaktaki her değişim bizi bu interrupt servis rutinine götürüyor ve orada sadece bir sayacı bir artırıp geri dönüyoruz.
Zamanlayıcının oluşturduğu interruptta ise artık sayma süresi dolduğuna göre sayaç değerini kalıcı bir değişkene aktarıp sayacı sıfırlıyoruz ve geri dönüyoruz.
Dikkat edilirse tüm devir izleme olayı interruptlar ile yürüyor ve ana kod için tamamen şeffaf durumda. Ana kod ihtiyacı olduğu her an sayımı tamamlanmış bir değeri okuyup oradan devri hesaplayabiliyor. Sistem o kadar "şeffaf" ki milyon devirlere çıkılmadıkça işlemcinin performansının ihmal edilebilir bir bölümünü kullanıyor ve ana kod bundan etkilenmiyor.

Umarım anlatabilmişimdir...

Gelelim Teensy vs önerisine...

Öncelikle bir türbin ECU'sü tasarlarken bu devrenin ne yapacağını bilmek gerekiyor. Türbin son derece basit bir sistem temelde. Çalışmakta olan bir türbinin izlenecek toplam iki parametresi var. Devir ve egzost gazı sıcaklığı (EGT). Kontrol edilen tek bir şey var, o da yakıt pompa motorunun gücü. Yani çalışmakta olan bir türbini en küçük mikrodenetleyici ile bile kontrol edebiliriz. İlk çalıştırması oldukça kompleks ve burada kızdırma bujisi, propan akış kontrolü vs vs gibi başka kontrol parametreleri çıkıyor ortaya. Bunların altından da Atmega328 rahat rahat kalkıyor.
İşlemci gücü gerektiren tek şey "user interface". Zaten bizim kodun en büyük kısmı ekran kontrolü, buton kontrolü ve setup aşamalarına ait. Eğer HD çözünürlüklü dokunmatik bir ekranla bir ECU yapmak istersek gerçekten de Atmega 328 yetersiz kalacaktır. Ama motoru çalıştırıp çalışmayı izlemek için fazlasıyla yeterli olduğunu söylemeliyim.
Size karşı değilim, yapılamaz demiyorum, sizi destekliyorum, hatta geliştirmenize yardımcı olmak bile isterim. Bunu baştan belirteyim :)
Güzel açıklamalarınız içinde teşekkür ederim, Tecrübe paylaştıkça çoğalır gerçekten.
az çok türbinin nasıl çalıştığını biliyorum. Çalıştırma kısmında sorun olmaz diye tahmin ediyorum. hd çözünürlükte dokunmatik bir ekran kullanırsanız ya bir (mini)bilgisayar kullanmanız gerekecek ya da üzerinde kendi işlemcisi olan bir ekran ile spi, seriport gibi yollarla haberleşeceksiniz, yine mikroişlemci gücüne ihtiyacınız olmayacak.
RPM'i ana loopta okumak olmaz dediğiniz gibi interrupt ile okumak gerekiyor, kendi tecrübelerimde arduinonun kendi interruptları yüksek rpmlerde çok kaçırdı (benim yazılımsal hatalarımda olabilir tabi) onun için sorma gereği duydum.
16mhz = 16000döngü/milisaniye demek. Eğer arduinoya bu döngü tamamlanmadan 2. bir pulse yollarsanız okumayacaktır. buna işlemciye eklediğiniz diğer yavaşlatıcı etkenleri(matematiksel işlemler, conditionlar) de eklerseniz biraz daha düşecektir. Dolayısıyla arada kaçan bir pulse okuma sürenizi artıracaktır. Mantık olarak bahsettiiniz iki yöntemde aynı yere çıkıyor zaten. iki pulse arası süre hesabı.
Neyse hocam, genel olarak, bu konuda olası bir sorun yaşayabileceğinizi düşünerek görmüşken söylemek istedim.
Gerek arduino, gerek python-C# gibi yazılımsal konularda destek olmak isterim hocam. RC'ye başlamadan önceki hobilerim bu tarz işler keza robot kol(simulink ile) basit quad kontrolcüsü gibi çalışmalarım var(daha çok matematiksel)
Saygılar bizden hocam.
 
Sümer abi,
Devir ölçme tekniğinin adı capture pwm.
Neden çift çekirdekli bir kart tasarlamıyorsun? (Merakımdan sordum)
 
Sümer abi,
Devir ölçme tekniğinin adı capture pwm.
Neden çift çekirdekli bir kart tasarlamıyorsun? (Merakımdan sordum)
Bundan mı?
Bu RESMİ görmek için izniniz yok. Giriş yap veya üye ol

Yoksa bundan mı?
Bu RESMİ görmek için izniniz yok. Giriş yap veya üye ol