Mission Planner hep aynı uçuş modunu gösteriyor
Switch çevriliyor, uçuş modu değişmiyor. Mod kanalının hangi PWM penceresine düştüğünü, iki uçtaki okunmayan bölgeyi ve 200 ms oturma süresini anlatıyoruz.
Switch'i çeviriyorsun. Kumandadan onay sesi geliyor, radyo kalibrasyon ekranındaki çubuk yer değiştiriyor. Ekrandaki mod yazısı ise olduğu yerde duruyor.
Ne bir uyarı satırı beliriyor ne de bir hata sesi var, çünkü otopilot çoğu durumda switch'i hiç okumamıştır.
Otopilot switch'i değil bir sayıyı görür
Kumandadaki üç kademeli kolun otopilot tarafında bir karşılığı yok. Alıcıdan gelen çerçevede kanal başına yalnızca bir mikrosaniye değeri var.
Hangi kanalın mod kanalı olduğunu bir ayar belirler, varsayılanı 5. kanal. Otopilot o kanalın ham değerini alır ve altı pencereden hangisine düştüğüne bakar.
Pencereler eşit genişlikte değil. Ortadaki dördü 130 mikrosaniyelik dar dilimler, uçtakiler ise çok daha geniş. Aşağıdaki şekilde dar dilimlere bak: iki pozisyonun aynı dilime düşmesi bu yüzden kolay.
Mod kanalının değeri hangi pozisyona düşüyor
İki uçta hiç okunmayan bir bölge var
Pencerelerin dışında, dokümanda anlatılmayan bir davranış var. Kanal 800 ve altına ya da 2200 ve üstüne çıktığında pozisyon hesaplanmaz. Şekildeki taralı uçlar bu bölge.
800 ve 2200 sınırın kendisidir, dışarıda sayılır. 801 pozisyon 1, 2199 pozisyon 6 olarak okunur; 800 ve 2200'de mod olduğu yerde donar.
Bu bir mod reddi değil. Okuma işlemi hata koşuluyla biter, karar zinciri orada durur ve mod son değerinde kalır. Ekranda hiçbir şey belirmez, kayıtta hiçbir satır oluşmaz.
Yanlış ayarlanmış kumanda mixer'lerinin ya da uç noktası genişletilmiş kanalların 2200'ü aşması sandığından sık.
Pozisyonun oturması 200 milisaniye sürer
Yeni pozisyon hemen kabul edilmez. Değerin 200 milisaniye boyunca aynı pencerede kalması gerekir, ancak ondan sonra mod isteği üretilir.
Temiz bir switch'te bu süre fark edilmez. Oksitlenmiş bir kontakta ya da gürültülü bir hatta değer iki pencere arasında zıplar ve süre hiç dolmaz. Aşağıdaki şekilde iki durumdaki sayacı karşılaştır.
Yeni pozisyon 200 ms aynı pencerede kalmalı
En sık yapılan hata, mod kanalını dinlemeden parametre değiştirmeye başlamak. Ham değeri görmeden yapılan her düzeltme, hangi değişikliğin işe yaradığını da gizler.
Kendi kanalını oku
Tahmin yerine ham değere bakmak en kısa yol. Aşağıdaki Python kodu mod kanalının numarasını FLTMODE_CH parametresinden okur, kanalı yer istasyonu üzerinden dinler ve her pencere değişiminde tek satır basar.
from pymavlink import mavutil
BAGLANTI = "udp:127.0.0.1:14550"
SINIRLAR = ((1231, 1), (1361, 2), (1491, 3), (1621, 4), (1750, 5))
def pencere(pwm):
if pwm <= 800 or pwm >= 2200:
return None
for esik, poz in SINIRLAR:
if pwm < esik:
return poz
return 6
arac = mavutil.mavlink_connection(BAGLANTI)
arac.wait_heartbeat()
arac.mav.param_request_read_send(arac.target_system, arac.target_component,
b"FLTMODE_CH", -1)
kanal = int(arac.recv_match(type="PARAM_VALUE", blocking=True, timeout=5).param_value)
arac.mav.request_data_stream_send(arac.target_system, arac.target_component,
mavutil.mavlink.MAV_DATA_STREAM_RC_CHANNELS, 5, 1)
son = -1
while True:
msg = arac.recv_match(type="RC_CHANNELS", blocking=True)
pwm = getattr(msg, "chan%d_raw" % kanal)
poz = pencere(pwm)
if poz != son:
son = poz
print("kanal %d pwm %4d -> %s"
% (kanal, pwm, "pozisyon %d" % poz if poz else "OKUNMUYOR"))Kanalı uçtan uca gezdirirsen şuna benzer satırlar alırsın:
kanal 5 pwm 700 -> OKUNMUYOR
kanal 5 pwm 1150 -> pozisyon 1
kanal 5 pwm 1300 -> pozisyon 2
kanal 5 pwm 1450 -> pozisyon 3
kanal 5 pwm 1550 -> pozisyon 4
kanal 5 pwm 1700 -> pozisyon 5
kanal 5 pwm 1900 -> pozisyon 6
kanal 5 pwm 2250 -> OKUNMUYORSwitch'i her kademede birkaç saniye tut. Altı kademede altı farklı pozisyon numarası görmüyorsan sorun parametrede değil, kumandanın ürettiği aralıkta.
Örnek: Kumandanın üç kademeli kolunu AUTO için ayırdın. Kolu üst kademeye alınca ekranda mod hâlâ LOITER yazıyor, uyarı da yok. Kodu çalıştırıp kolu üç kademede gezdirince üst iki kademenin aynı pozisyon numarasını bastığını görürsün: iki kademe şekildeki aynı dar dilime düşüyor. Parametreye dokunmadan önce kumandada o kademenin uç noktasını değiştirip satırın değişmesini bekle.
Hata Mesajları ve Anlamları
Bir mesaj görüyorsan durum aslında daha iyi. Karar zinciri sonuna kadar gelmiş, mod okunmuş ve reddedilmiş demektir. Mesajın ikinci yarısı red sebebini verir.
Mode change to LOITER failed: requires position
Modun konum tahminine ihtiyacı var, otopilotun elinde sağlıklı bir konum yok. Uydu sayısı tek başına yetmez; yatay konum tahmininin kabul edilmiş olması gerekir.
Mode change to ALT_HOLD failed: need alt estimate
İrtifa tahmini geçerli değil. Bu kontrol yalnızca gaz kolunun doğrudan sende olduğu bir moddan otomatik gazlı bir moda geçerken çalışır.
Mode change to STABILIZE failed: throttle too high
Araç yerdeyken gaz kolun yukarıdayken doğrudan gazlı bir moda geçmeye çalıştın. Gaz kolunu tabana çekmeden aynı geçiş bir daha kabul edilmez.
Mode change to AUTO failed: GCS entry disabled (FLTMODE_GCSBLOCK)
Bu mod yer istasyonu komutlarına kapatılmış. FLTMODE_GCSBLOCK bit maskesi yalnızca yer istasyonundan gelen istekleri süzer; aynı mod kumandadaki switch'ten sorunsuz açılır.
Bir adım öteye
Uçuş modları, kumanda kalibrasyonu ve prearm zinciri Sensörlerden Uçuşa Temel İHA eğitiminde baştan sona işleniyor. Bu yazının devamı olan ders de aynı eğitimin sorun giderme bölümüne eklendi.
Bu yazı işinize yaradı mı?
Bu konuyu baştan sona öğrenin
Sezon: altı eğitimin hepsi 9 ay, ayda ₺790. Lise ve üniversite öğrencisine ayda ₺390, üye kodunuzla ilk ay ₺351. İstediğiniz ay bırakırsınız. Sezon'a başlayın · Öğrenciyim