Betaflight jest autopilotem zoptymalizowanym przede wszystkim pod szybką stabilizację wielowirnikowców sterowanych przez operatora. Nie jest odpowiednikiem ArduPilot lub PX4 z usuniętą nawigacją. Inaczej rozkłada priorytety: krótka ścieżka żyroskop–regulator–ESC, precyzyjny timing, filtracja drgań, małe opóźnienie RC, Blackbox oraz szeroka obsługa kontrolerów FPV są ważniejsze niż rozbudowany manager misji.
Potok czasu rzeczywistego#
Uproszczony przepływ wygląda następująco:
IMU -> synchronizacja próbki -> filtry gyro -> setpoint RC
|
rate PID + feedforward
|
mixer / ograniczenia -> DShot -> ESC
|
bidirectional DShot -> RPM filters
Każdy blok dodaje opóźnienie. Zwiększenie częstotliwości pętli nie gwarantuje mniejszego latency, jeżeli scheduler ma jitter, filtr potrzebuje więcej próbek, procesor przekracza budżet albo DShot nie zdąży wysłać ramki. Właściwy pomiar obejmuje czas od próbki sensora i odebrania RC do aktualizacji aktuatorów.
Target i zasoby płytki#
Firmware musi znać mapowanie pinów, timery, DMA, magistrale, sensory, pamięć flash i urządzenia pokładowe. Nazwa procesora nie wystarcza. Dwa FC ze STM32F405 mogą różnić się przypisaniem kanałów DShot, liczbą UART, położeniem IMU i układem OSD.
Przed flashowaniem należy zachować:
- dokładną nazwę płytki i targetu;
- wersję firmware i Configuratora;
diff alloraz, przy migracji, pełnydump;- mapowanie portów i odbiornika;
- orientację FC i kolejność silników;
- ustawienia protokołu ESC oraz liczbę biegunów silnika.
Wgranie firmware dla podobnego targetu może uruchomić USB, ale pozostawić błędne wyjścia lub sensory. Po flashowaniu nie podłącza się śmigieł, dopóki identyfikacja targetu, model 3D, odbiornik i silniki nie zostały sprawdzone.
Gyro loop, PID loop i scheduler#
Próbkowanie żyroskopu i wykonanie PID mogą mieć różne częstotliwości. Downsampling wymaga ochrony przed aliasingiem; sygnał powyżej częstotliwości Nyquista może pojawić się jako fałszywa składowa niskoczęstotliwościowa. Dlatego filtracja nie jest wyłącznie narzędziem wygładzania wykresu, lecz częścią poprawnego toru próbkowanego.
Scheduler musi dotrzymać stałych okresów przy jednoczesnej obsłudze OSD, Blackbox, telemetrii, serial RX i LED. Średnie obciążenie CPU nie ujawnia pojedynczych przekroczeń. Konfigurację pętli wybiera się według konkretnego MCU, IMU, użytych funkcji i protokołu DShot, a następnie weryfikuje logiem oraz temperaturą napędu.
Filtry jako kompromis fazy i szumu#
Żyroskop mierzy ruch płatowca wraz z drganiami silników, śmigieł, ramy i szumem sensora. P-term przenosi część szumu, a D-term może go silnie wzmacniać. Filtry ograniczają energię niepożądaną, ale wprowadzają opóźnienie fazowe. Zbyt słaba filtracja grzeje silniki i może wzbudzić układ; zbyt mocna pogarsza reakcję i propwash.
Warstwy mają różne zadania:
| Mechanizm | Co usuwa | Ograniczenie |
|---|---|---|
| gyro low-pass | szerokopasmowy szum sensora/ramy | opóźnia cały tor |
| D-term low-pass | szum wzmacniany przez pochodną | za niski cutoff osłabia tłumienie |
| dynamic notch | zmienne piki rezonansowe | musi prawidłowo śledzić widmo |
| RPM filter | harmoniczne każdego silnika | wymaga poprawnej telemetrii eRPM |
| static notch | znany stały rezonans | zły dobór dodaje delay bez zysku |
Zmiany filtrów wykonuje się pojedynczo, po mechanicznej kontroli ramy. Luźnego silnika, pękniętego śmigła lub przewodu uderzającego o żyroskop nie naprawia się suwakiem.
DShot i bidirectional DShot#
DShot przesyła cyfrową ramkę zamiast kodować wartość szerokością impulsu analogowego. Timery i DMA pozwalają generować przebieg z małym obciążeniem CPU. W trybie bidirectional linia po nadaniu przełącza kierunek, a ESC zwraca telemetryczną odpowiedź z eRPM. To nie jest to samo co wolna telemetria ESC po osobnym UART.
Przepustowość protokołu musi pomieścić transmisję w okresie pętli. Oficjalna dokumentacja wskazuje, że bidirectional DShot wydłuża cykl o ramkę zwrotną i czasy przełączenia. DShot300 jest naturalnym wyborem dla pętli 4 kHz, a pętla 8 kHz wymaga zwykle DShot600; dobór trzeba potwierdzić dla aktualnej wersji i sprzętu.
ESC raportuje elektryczne RPM. Konwersja na mechaniczne RPM zależy od liczby biegunów/magnesów. Błędna wartość przesuwa filtry RPM na złe częstotliwości. W zakładce Motors, przy zasilonym ESC i zdjętych śmigłach, należy sprawdzić raportowane obroty oraz procent błędów każdej linii.
RPM filter i dynamic notch#
RPM filter ustawia wąskie notche na częstotliwości podstawowej i harmonicznych silników. Dla czterech silników, trzech osi i trzech harmonicznych daje wiele filtrów aktualizowanych z telemetrii. Jego przewaga polega na znajomości źródła, nie na agresywnym wycinaniu szerokiego pasma.
Dynamic notch nadal ma rolę: może śledzić rezonans ramy, śmigła lub inne piki niezwiązane dokładnie z RPM. Po włączeniu RPM filtera nie kopiuje się starych recept z wcześniejszych wersji Betaflight. Najpierw pozostawia się wartości domyślne właściwe wydaniu, wykonuje lot bazowy i analizuje widmo.
Rate PID, feedforward i setpoint#
Betaflight reguluje głównie prędkość kątową. Kształt rates przekształca drążek w setpoint; zmiana rates zmienia żądanie, a nie dynamikę samego regulatora. P reaguje proporcjonalnie do błędu, I usuwa trwały błąd i przeciwdziała zakłóceniu, D tłumi szybkie zmiany, a feedforward reaguje na zmianę setpointu operatora.
Objawy nie są jednoznaczne:
- oscylacja po gwałtownym ruchu może oznaczać za dużo P, za mało D, opóźnienie lub saturację;
- gorące silniki mogą wynikać z D-term, filtrów, mechaniki lub błędnego RPM;
- wolny powrót po zakłóceniu może wskazywać I, lecz także brak autorytetu napędu;
- szarpnięcie przy ruchu drążka może pochodzić z feedforward albo z krzywej rates.
Dlatego strojenie bez Blackbox i mechanicznego baseline’u jest zgadywaniem. Szczegółowy model opisuje PID w kontrolerze lotu.
Mixer, motor output i saturacja#
Mixer rozdziela throttle oraz żądane momenty roll/pitch/yaw na silniki. Gdy jedno wyjście osiąga maksimum lub minimum, nie wszystkie żądania mogą być spełnione. Parametry idle, dynamic idle, ograniczenia throttle i kompensacja napięcia wpływają na zapas sterowania.
Zbyt niski idle zwiększa ryzyko utraty synchronizacji i braku momentu przy szybkim odjęciu gazu. Zbyt wysoki zwiększa minimalny ciąg i utrudnia opadanie. Dynamic idle używa RPM, aby utrzymać minimalną prędkość wirnika, lecz zależy od wiarygodnego bidirectional DShot.
Odbiornik i droga sygnału RC#
Serial RX (np. CRSF) dostarcza kanały oraz statystyki łącza. Częstotliwość pakietów radiowych nie jest równa częstotliwości aktualizacji PID. Po drodze występują scheduler aparatury, łącze RF, UART odbiornika i generowanie setpointu. Należy sprawdzić mapowanie kanałów, zakresy, center, arming aux oraz niezależny failsafe.
RSSI nie zastępuje Link Quality. LQ opisuje udział poprawnie odebranych pakietów w określonym oknie; RSSI moc. Wysoka moc z zakłóceniami może współistnieć z niskim LQ. Alarmy dobiera się do protokołu i packet rate, nie do uniwersalnej liczby skopiowanej z innego systemu.
Blackbox jako instrument#
Blackbox powinien rejestrować gyro, setpoint, P/I/D/FF, wyjścia, RPM i znaczniki diagnostyczne z częstotliwością adekwatną do zjawiska. Karta SD lub flash mają ograniczoną przepustowość. Logging może zmienić timing, dlatego test bazowy zapisuje również konfigurację logowania.
Proces analizy:
- sprawdzić integralność czasu i brak dużych przerw;
- obejrzeć setpoint oraz gyro w domenie czasu;
- wskazać saturację i clipping;
- porównać widmo surowego i filtrowanego gyro;
- zestawić piki z RPM oraz throttle;
- sprawdzić D-term i temperaturę silników;
- zmienić jeden parametr i powtórzyć ten sam manewr.
Jednorazowy wykres PSD bez informacji o throttle i RPM może pomylić rezonans stały z harmoniczną napędu.
Bezpieczna ścieżka pierwszego uruchomienia#
- Zidentyfikować PCB, target i schemat połączeń.
- Zapisać fabryczną wersję oraz konfigurację.
- Wgrać wydanie stabilne przeznaczone dla targetu.
- Sprawdzić orientację modelu 3D przy ręcznym obracaniu FC.
- Skonfigurować odbiornik i sprawdzić wszystkie kanały.
- Ustawić protokół ESC zgodny ze sprzętem.
- Bez śmigieł zweryfikować kolejność i kierunek silników.
- Sprawdzić arming disable flags i failsafe po wyłączeniu nadajnika.
- Zweryfikować pomiar napięcia i prądu.
- Wykonać krótki zawis na ustawieniach bazowych, wylądować i sprawdzić temperatury.
- Zapisać Blackbox i dopiero potem planować tuning.
Migracja między wydaniami#
Pełny dump ze starej wersji nie powinien być ślepo odtwarzany na nowej. Nazwy, zakresy i wartości domyślne ewoluują. Bezpieczna migracja zaczyna się od ustawień domyślnych nowego wydania i przenosi tylko zrozumiane elementy sprzętu oraz preferencji. Release notes i aktualna dokumentacja mają pierwszeństwo przed filmem dotyczącym starszej gałęzi.
Po migracji powtarza się kontrolę targetu, sensorów, portów, silników, RPM telemetry, failsafe i Blackbox. To, że konfigurator nie pokazuje błędu, nie dowodzi zgodności semantycznej starego parametru.
Typowe błędy#
Strojenie uszkodzonej mechaniki#
PID i filtracja nie naprawią poluzowanego stosu, zużytego łożyska ani niewyważonego śmigła.
Wyłączanie filtrów bez pomiaru#
Mniejszy delay jest korzystny tylko wtedy, gdy energia szumu pozostaje bezpieczna. D-term może przegrzać silniki bardzo szybko.
Mylenie telemetrii ESC z bidirectional DShot#
Wolna telemetria UART nie dostarcza eRPM z częstotliwością wymaganą przez RPM filter.
Zły motor pole count#
Filtry śledzą wtedy częstotliwość inną niż rzeczywista. Należy liczyć magnesy wirnika albo korzystać z wiarygodnej dokumentacji silnika.
Test silników ze śmigłami na stole#
To niepotrzebne ryzyko. Kolejność, kierunek i telemetrię sprawdza się bez śmigieł, na zabezpieczonej platformie.
Model konfiguracji i CLI#
Konfiguracja Betaflight jest zestawem wartości przypisanych do konkretnej wersji firmware i targetu. diff all pokazuje różnice względem domyślnych wartości, a dump all pełny stan. Kopia diff jest czytelniejsza, ale po zmianie wersji nie należy wklejać jej bez audytu: parametr mógł zmienić nazwę, zakres albo znaczenie.
Bezpieczna migracja zapisuje:
wersja firmware + target + build options
diff all
resource
status
tasks
wersje ESC i odbiornika
Po flashowaniu konfiguruje się ponownie tylko potrzebne funkcje, porównując wynik. Zapis GUI nie jest wystarczającym artefaktem, ponieważ konfigurator może ukrywać część pól. CLI daje tekst możliwy do wersjonowania i code review.
Profiles przechowują zestawy PID, a rate profiles sposób mapowania drążka na setpoint. Ich numery i zakres zależą od wersji. Przełączenie profilu w locie może diametralnie zmienić dynamikę; kanał wyboru musi mieć stabilne progi i jawny stan w OSD/logu.
Target, unified target i zasoby#
Target opisuje nie tylko rodzinę MCU, ale mapę pinów, sensory, inwersje, timery i możliwości płytki. Dwie płyty z STM32F405 nie są zamienne. Błędny target może się uruchomić, a mimo to sterować niewłaściwym pinem lub nie widzieć właściwego gyro.
Polecenie resource pokazuje przypisania funkcji do pinów. Remap jest użyteczny przy naprawie lub nietypowej integracji, lecz ograniczają go kanały timerów, DMA i elektryczne połączenia PCB. Przepisanie etykiety MOTOR na dowolny wolny pin nie gwarantuje obsługi wybranego protokołu.
Custom build ogranicza funkcje umieszczone w pamięci Flash. Oszczędność miejsca nie może usuwać możliwości potrzebnej do odzyskania lub diagnostyki. Po każdej zmianie opcji zapisuje się identyfikator builda i sprawdza, czy konfigurator odpowiada wersji firmware.
Scheduler i pomiar obciążenia#
Betaflight uruchamia zadania o różnych okresach i priorytetach. Gyro/PID jest krytyczne czasowo, OSD, telemetria i logowanie mogą mieć mniejszy priorytet. Funkcja włączona w GUI nadal konkuruje o CPU, magistralę albo DMA.
tasks i status pomagają ocenić obciążenie oraz błędy. Średnie CPU load nie pokazuje najgorszego czasu wykonania. Problemem mogą być krótkie piki powodujące spóźnioną próbkę. Wysokie częstotliwości gyro/PID dobiera się z zapasem dla filtrów, RPM, odbiornika i Blackbox.
Overclocking lub wyłączenie zabezpieczeń czasowych nie jest naprawą. Najpierw ustala się, które zadanie zużywa budżet, czy sensor dostarcza dane w oczekiwanym tempie i czy konfiguracja jest wspierana na danym MCU.
Tor danych IMU#
Gyro zwykle dostarcza próbki przez SPI. Data-ready lub zaplanowany odczyt inicjuje transfer, następnie wykonywana jest korekcja orientacji, kalibracja i filtracja. PID powinien korzystać ze świeżej próbki o znanym czasie.
Akcelerometr jest ważny dla trybów angle/horizon i wykrywania orientacji, ale nie zastępuje gyro w szybkiej pętli. Podczas przyspieszenia mierzy także ruch platformy, dlatego „poziom” z akcelerometru jest filtrowanym odniesieniem o małym paśmie.
Dual gyro może pozwalać na wybór albo fuzję zależnie od targetu i wydania. Dwa układy na tej samej płytce dzielą drgania, zasilanie i temperaturę; nie są pełną redundancją bezpieczeństwa. Porównanie ich widm jest jednak dobrym narzędziem diagnostycznym.
Filtry w kolejności toru#
Filtr gyro wpływa na sygnał używany przez P, I i D, a filtr D-term działa dodatkowo na najbardziej wrażliwy składnik. Dynamic notch śledzi piki widma, a RPM filter ustawia notche według częstotliwości silników i harmonicznych. Każdy stopień wnosi tłumienie i fazę.
Proces strojenia filtrów zaczyna się od mechaniki oraz logu przy konserwatywnych ustawieniach. Widmo analizuje się dla kilku poziomów gazu. Pik proporcjonalny do RPM ma inne źródło niż stały rezonans ramy. Wyłączenie filtrów tylko po to, by zmniejszyć latency, bez sprawdzenia D-term i temperatur jest ryzykowne.
RPM filter wymaga wiarygodnej telemetrii dwukierunkowej. Błędna liczba biegunów przesuwa wyliczoną częstotliwość. Utracone próbki eRPM powinny być widoczne, a filtr nie może podążać za losowymi wartościami.
Odbiornik, setpoint i feedforward#
Ramki RC trafiają przez UART lub inne wejście, są walidowane, skalowane i mapowane według rates. Packet rate systemu radiowego, częstotliwość pętli i interpolacja setpointu tworzą wspólny tor. Wyższe odświeżanie nie pomoże, jeżeli UART gubi ramki albo odbiornik działa w innym trybie niż zakładany.
Expo zmienia czułość w centrum, max rate ogranicza docelową prędkość, a center sensitivity kształtuje lokalną pochodną. Ustawienia powinny być oceniane na wykresie funkcji, nie tylko na nazwach presetów.
Feedforward reaguje na zmianę polecenia operatora, więc jest wrażliwy na jitter RC. Smoothing redukuje skoki kosztem opóźnienia. Należy oglądać setpoint, gyro, FF i czas ramek jednocześnie.
Blackbox i eksperyment#
Blackbox rejestruje sygnały wewnętrzne z częstotliwością wystarczającą do analizy sterowania. Flash na FC jest wygodny, karta SD daje większą pojemność, ale obie mogą mieć ograniczenia zapisu. Włączenie zbyt wielu pól nie powinno zakłócać pętli.
Minimalny eksperyment zapisuje hipotezę, jedną zmianę i kryterium. Log powinien zawierać gyro, setpoint, P/I/D/FF, wyjścia silników, napięcie, RPM, znaczniki saturacji i błędy. Porównywanie dwóch lotów z innymi śmigłami, baterią i filtrami nie pozwala przypisać efektu.
Wykres czasowy pokazuje tracking i przeregulowanie, FFT źródła drgań, a rozkład czasów pętli jitter. Temperatura silników jest kontrolą bezpieczeństwa, nie jedyną miarą strojenia.
Presety i odpowiedzialność#
Preset jest wersjonowanym zestawem założeń. Przed zastosowaniem należy przeczytać zakres: rozmiar, napięcie, typ napędu, wersję firmware i wymagane opcje. Preset może ustawiać filtry, PID, rates, OSD i funkcje pomocnicze; zawsze przegląda się diff przed zapisem.
Opis „dla 5 cali” nie uwzględnia bezwładności, sztywności, śmigła i payloadu. Preset jest punktem startowym do bezpiecznego testu, a nie certyfikatem. Po migracji jego wersja może być niezgodna z nowym modelem parametrów.
Failsafe i stany bezpieczeństwa#
Failsafe odbiornika oraz Betaflight muszą współpracować. Kontroler ocenia świeżość ramek, a nie tylko ostatnie wartości kanałów. Stage 1 i dalsza akcja zależą od konfiguracji wydania; ich znaczenie należy sprawdzić w aktualnej dokumentacji.
Próbę wykonuje się bez śmigieł: wyłączenie aparatury, odłączenie sygnału i utrata zasilania odbiornika to osobne przypadki. Sprawdza się czas detekcji, flagi, wyjścia silników i odzyskanie. GPS Rescue wymaga wiarygodnego GNSS, kierunku, wysokości i energii; nie jest uniwersalnym odpowiednikiem autopilotowego RTH.
Arming disable flags są wskazówką diagnostyczną. Ich obchodzenie bez usunięcia przyczyny może uruchomić platformę z nieskalibrowanym gyro, aktywnym gazem albo błędem odbiornika.
Kwalifikacja po zmianie#
Po aktualizacji firmware lub istotnej konfiguracji wykonuje się tę samą krótką sekwencję:
- sprawdzenie targetu, wersji i diff;
- test osi, silników i kolejności bez śmigieł;
- odbiornik, zakresy, modes i failsafe;
- odczyt gyro, akcelerometru, napięcia i prądu;
- DShot oraz telemetria każdego ESC;
- krótki test napędu i kontrola błędów;
- pierwszy ograniczony lot z Blackbox;
- analiza drgań, tracking, saturacji i temperatur;
- dopiero potem przywracanie pełnej obwiedni.
Zmiana nie jest zakończona, gdy konfigurator zapisze ustawienia. Jest zakończona, gdy wymagania są potwierdzone logiem na docelowym sprzęcie.
Powiązane tematy#
- PID w kontrolerze lotu
- DShot
- Blackbox i logowanie
- Problemy ESC desync
- Systemy RC UAV
- Diagnostyka logów i wibracji
Przypisy#
- Betaflight Documentation — bieżąca dokumentacja firmware i aplikacji.
- Betaflight DShot API — format, timing i ograniczenia bidirectional DShot.
- Betaflight DShot RPM Filtering — eRPM, harmoniczne, weryfikacja i wpływ na filtry.
- Betaflight PID Tuning Tab — aktualne parametry PID i filtrów.
- Betaflight Blackbox — mechanizm logowania i znaczenie danych.
- Betaflight GitHub — kod, targety i wydania.
Źródła z centralnego rejestru
- Betaflight: About and getting started [dokumentacja]
- Betaflight: PID tuning [dokumentacja]
- Betaflight: Blackbox logging internals [dokumentacja]
- Betaflight: DShot API [dokumentacja]