Pixhawk ARM oluyor, motorlar dönmüyor
Kumandadan ARM verdin. Mission Planner'da HUD ARMED yazıyor, Messages sekmesinde Arming motors satırı duruyor. Pervaneler ise kıpırdamıyor ve biraz sonra drone kendiliğinden DISARM oluyor.
Aynı görüntüyü üç ayrı neden verir: otopilot motorlara boşta dönme komutu yollamıyordur, komut gidiyordur ama ESC onu dönme olarak okumuyordur ya da bekleme sayacı dolmuştur. Hangisi olduğunu motor çıkış değerine bakarak bir dakikada ayırırsın.
ARM verince motorlar neden hemen dönmüyor
ArduCopter, ARM'dan sonraki ilk 2 saniye motorlara bilerek en düşük değeri yollar. Bu süre parametre listesinde yok, firmware'e gömülü bir güvenlik beklemesi. Bekleme bitince motorlar yarım saniyeden kısa bir rampayla boşta dönme hızına çıkar.
Boşta dönme hızını MOT_SPIN_ARM belirler. ArduCopter 4.7.2'de varsayılanı 0,10; MOT_PWM_MIN 1000 ve MOT_PWM_MAX 2000 iken bu, ESC'ye giden 1100 µs'lik sinyal demek. MOT_SPIN_ARM 0 ise çıkış 1000'de kalır ve motor ARM boyunca hiç dönmez.
Grafikte iki ayar yan yana duruyor: mavi çizginin 2. saniyeden hemen sonra 1100'e çıktığı noktaya, kırmızı kesikli çizginin ise baştan sona 1000'de kaldığına bak.
On saniye sonra gelen DISARM
Drone yerdeyken gaz çubuğu dipte kalırsa otopilot bir sayaç başlatır. Sayaç DISARM_DELAY saniyesine ulaşınca motorlar DISARM olur; varsayılan değer 10. Grafikteki 10. saniyedeki düşüş bu sayaç, bir arıza değil.
Sayacı gaz çubuğunu kaldırmak ya da kalkış sıfırlar. DISARM_DELAY'i 0 yaparsan otomatik DISARM tamamen kapanır, yerde ARM edilmiş drone unutulursa onu kapatacak bir şey kalmaz. Bu yüzden değeri sıfırlama.
Sahadan bir örnek
Yarışma alanında pilot, hakemin kalkış iznini beklerken drone'u erkenden ARM ediyor. Pervaneler 2 saniye sonra yavaşça dönmeye başlıyor, gaz dipte kalıyor ve onuncu saniyede drone DISARM oluyor.
Pilot bunu arıza sanıp parametre değiştirmeye başlarsa sırasını boşa harcar. İzin gelince yeniden ARM etmek yeterli; motorlar yine 2 saniye bekleyip dönmeye başlar.
En sık yapılan hata: Motor Test sekmesinde motorlar döndüğü için ARM sonrası sorunu ESC'de aramak. Motor Test kendi gaz yüzdesini doğrudan çıkışa yazar, ARM sonrası boşta dönmeyi ise MOT_SPIN_ARM belirler. Motor Test'te dönen motor, MOT_SPIN_ARM 0 iken ARM'da yine durur.
Çıkış değerini Python'dan izle
Mission Planner'ın Status sekmesindeki ch1out değeri yeterli olur. Aynı bilgiyi bilgisayara bağlı bir Python koduyla da okuyabilirsin: kod otopilotun Arming motors mesajını yakalar ve dört motorun çıkışını yarım saniyede bir yazar.
BAGLANTI satırına Pixhawk'ın bağlı olduğu portu yaz. Kodu çalıştırdıktan sonra kumandadan ARM ver.
Varsayılan ayarlarla ARM edersen terminalde şunu görürsün:
0.0 sn MESAJ: Arming motors
0.5 sn M1=1000 M2=1000 M3=1000 M4=1000
1.5 sn M1=1000 M2=1000 M3=1000 M4=1000
2.0 sn M1=1000 M2=1000 M3=1000 M4=1000
2.5 sn M1=1100 M2=1100 M3=1100 M4=1100
3.0 sn M1=1100 M2=1100 M3=1100 M4=1100
...
9.5 sn M1=1100 M2=1100 M3=1100 M4=1100
9.9 sn MESAJ: Disarming motorsMOT_SPIN_ARM'ı 0 yaptıysan (varsayılan 0,10) satırlar baştan sona M1=1000 kalır ve 10. saniyeye doğru yine Disarming motors gelir.
Ne yapmalısın
Çıkış 1000'de kalıyorsa: Full Parameter List'te MOT_SPIN_ARM = 0,10 gir ve Write Params'a bas. Gör: ARM'dan 2 saniye sonra ch1out 1100 olur, pervaneler yavaşça döner. Değilse: kendi motorların için değeri Setting Motor Range yöntemiyle bul; Motor Test'te motorun dönmeye başladığı yüzdeye 2 ekleyip 100'e böl.
Çıkış 1100 ama motor sessizse: PWM ESC kullanıyorsan ESC kalibrasyonunu yap. Gör: ARM sonrası motorlar boşta döner. Değilse: ESC protokolüne geç.
DShot ESC'yi Pixhawk'ın MAIN OUT çıkışına taktıysan ve parametre listende BRD_IO_DSHOT yoksa: ESC'leri AUX OUT'a taşı ve motor atamalarını o çıkışlara yap. Ayrıntı DShot ESC sayfasında. Gör: Motor Test'te her motor sırayla döner. Değilse: ESC'nin batarya kablosunu ve voltajını ölç.
Motorlar dönüyor ama 10 saniyede DISARM oluyorsa: hazır olunca ARM et ya da gazı dipten kaldır. Gör: gaz kalktığı an sayaç sıfırlanır. Değilse: Messages'ta DISARM'dan hemen önceki satırı oku; bir failsafe mesajı varsa sebep başka.
Hata Mesajları ve Anlamları
Arming motors
ARM komutu kabul edildi. Bu satır motorların döndüğünü söylemez; yalnızca otopilotun ARM durumuna geçtiğini söyler.
Disarming motors
Otopilot DISARM etti. Gaz dipte, drone yerdeyken ARM'dan yaklaşık 10 saniye sonra geliyorsa sebep DISARM_DELAY sayacı.
PreArm: Motors: MOT_SPIN_ARM > MOT_SPIN_MIN
MOT_SPIN_ARM'ı yükseltip MOT_SPIN_MIN'e dokunmadıysan çıkar ve ARM izni gelmez. MOT_SPIN_MIN'i MOT_SPIN_ARM'ın en az 0,03 üstüne çek.
PreArm: Motors: no SERVOx_FUNCTION set to Motor1
1 numaralı motora hiçbir çıkış atanmamış. Motorun takılı olduğu çıkışın SERVOn_FUNCTION parametresine Motor1 değerini ver.
PreArm: Hardware safety switch
Kartın safety switch'i hâlâ güvenli konumda. Düğmeye ışığı sabit yanana kadar basılı tut.
Eğitimde devamı
Motor çıkışları, ESC kalibrasyonu ve ARM öncesi kontroller Sensörlerden Uçuşa Temel İHA eğitiminde sırayla işleniyor. Sorun Giderme bölümündeki yeni ders ARM'dan DISARM'a giden yolu kaynak kodda adım adım izliyor, uçuş kaydındaki imzasını ve kart farklarını da gösteriyor.
İNDİRİM KUPONU
Kupon kodu: SOFTIVATION15
Eğitimi alırken ödeme ekranındaki "Kupon kodu" kutusuna bu kodu yaz, %15 iner.




Yorumlar