PitLab elektronika modelarska
PitLab - Elektronika modelarska
  • Strona Główna
  • Autopilot Dedalus
  • SkyAssistant
  • APL2
  • APL3
  • System FPV
  • PitLab.Sklep
  • O firmie
  1. Jesteś tutaj:  
  2. Stron główna
  3. Newsy

Newsy

Nowinki dotyczące różnych zagadnień dotyczących działalności i użycia projektów Pitlaba

Kalibracja magnetometrów

Szczegóły
Autor: Piotr Laskowski
Utworzono: 02 maj 2025

Autopilot może być wyposażony w kilka magnetometrów. Dwa magnetometry są umieszczone na module inercyjnym IMU I2P, jeden może być umieszczony na zewnętrznym module GNSS oraz potencjalnie jeden w IMU kamery. Tego w kamerze jeszcze fizycznie nie ma, więc spróbujmy skalibrować 3 dostępne czujniki. Obecnie dostępne są trzy procedury obsługi magnetometrów różniące się sposobem wykonania i rodzajem zasilających je danych. Zostaną one omówione poniżej, ale jako wstęp powiedzmy kilka słów o samym pomiarze.

Czytaj więcej: Kalibracja magnetometrów

Prace nad AHRS

Szczegóły
Autor: Piotr Laskowski
Utworzono: 24 kwiecień 2025

Od kilku dni pracuję nad AHRS, czyli podsystemem, który dostarcza informację o kątach orientacji w przestrzeni 3D: przechylenia (ang. roll), pochylenia (pitch) i odchylenia (yaw). Gdy samolot zna swoje kąty orientacji, może za pomocą regulatorów PID tak się sterować, aby utrzymać kąty wymagane w na danym etapie lotu. Tak więc jest to jeden z najważniejszych podsystemów dla wszystkiego, co aktywnie lata, od wielowirnikowca po rakietę.

Pierwsze rozwiązanie powstało przy okazji robienia jednostki inercyjnej. Trzeba było jakoś weryfikować czujniki, sprawdzić na ile stabilne są ich wskazania, itp. To jest rozwiązanie na filtrze komplementarnym, gdzie z jednej strony całkowane są prędkości kątowe z żyroskopów, budując kąty dla każdej osi a z drugiej, poszczególne składowe wektora przyspieszenia są wstawiane do równań trygonometrycznych i w ten sposób obliczana jest druga wersja kątów. Kąty uzyskane z żyroskopów są znacznie mniej wrażliwe na drgania mechaniczne, nie wpływają na nie zakłócenia wywołane zmianą prędkości w czasie manewrów, ale nie są stabilne długookresowo, czyli płyną w funkcji temperatury. W dużej mierze daje się to skompensować rozbudowaną kalibracją, ale nigdy nie jest idealnie. Kąty uzyskane z akcelerometru, oraz magnetometru opierają się na konkretnych wielkościach fizycznych i dzięki temu są stabilne długookresowo. Choćby pomiar był zaszumiony, to poza chwilami zmiany prędkości, średnia grawitacji będzie zawsze wskazywała na ziemię a średnia magnetyczna na północny biegun magnetyczny. Niestety takie pomiary są podatne na zakłócenia np. przyspieszeniami wywołanymi zmianą prędkości, lub lokalnymi zaburzeniami pola magnetycznego. Najgorszą cechą jest to, że zwykłe drgania mechaniczne wywołane pracą silnika, niewyważonym śmigłem, czy turbulencjami, przekładają się bezpośrednio na liczony kąt i taki pomiar jest mocno zaszumiony. Szum można odfiltrować, ale to opóźnia fazę, przez co trudno jest sterować obiektem z opóźnieniem w pętli sterowania. Filtr komplementarny bierze dużą część kąta (powiedzmy 98%) kąta z żyroskopów i dopełnia to kątem z akcelerometrów tyle, aby skompensować ewentualny dryft i żeby składowa z szumem nie była zbyt duża. Bardziej zaawansowane rozwiązania, np. filtr Kalmana, sam dobiera sobie proporcję danych, minimalizując błędy.

To rozwiązanie jest intuicyjne, da się na tym latać, ale ma kilka znanych wad. Jedną z nich jest to, że funkcje trygonometryczne są ułamkiem, gdzie po obu stronach dzielenia są długości kątów trójkąta, jaki tworzą składowe wektora przyspieszenia, lub wektora magnetycznego. W pewnych sytuacjach jeżeli długość składowej wektora znajdującej się w mianowniku jest zerowa, to następuje niedozwolona operacja dzielenia przez zero. Wynik takiej operacji wykonywanej w mikrokontrolerze jest nieokreślony (NaN - Not a Number). Ten wynik z AHRS idzie do dalszych podsystemów sterowania i rozchodzi się lawinowo po całym systemie, zwykle zatrzymując jego pracę a w praktyce nasz bezzałogowiec spada.

Takie punkty nieokreślone można obchodzić, stosując warunki badające czy mianownik jest zerem. Tak działa funkcja atan2(x, y), dając bezpieczny wynik, w odróżnieniu od klasycznej funkcji atan(y/x), która wysypie się dla x=0. W obu przypadkach chodzi oczywiście o arkus tangens. Funkcje trygonometryczne zajmują też dosyć dużo mocy obliczeniowej. Przy współczesnych mikrokontrolerach nie jest to krytyczne, ale są inne metody bezpieczniejsze matematycznie i prostsze obliczeniowo. To są kwaterniony. Jeszcze do niedawna, to była dla mnie czarna magia, o której nawet nie wspominano w szkole, ale gdy zacząłem szukać, to znalazłem kilka fajnych wytłumaczeń jak to działa. Jeżeli jeszcze nie wiesz co co chodzi z kwaternionami, to na początek polecam film dr. Tomasza Millera o historii i podstawach kwaternionów, a już po tym film Mateusza Kowalskiego o algorytmach obrotu w przestrzeni 3D przy użyciu kwaternionów. Jest tego więcej, ale po obejrzeniu tych dwu, już będzie wiadomo czego szukać dalej.

Czytaj więcej: Prace nad AHRS

Kalibracja żyroskopów

Szczegóły
Autor: Piotr Laskowski
Utworzono: 07 marzec 2025

Najważniejszą rzeczą w autopilocie jest jego jednostka inercyjna, będąca układem odniesienia położenia autopilota względem Ziemi. Czujnikami zasilającymi jednostkę danymi pomiarowymi są przede wszystkim żyroskopy oraz akcelerometry i magnetometry. Aby łatwiej można było sobie wyobrazić proporcję wykorzystania czujników, przyjmijmy, że żyroskopy dostarczają 97% potrzebnych danych, akcelerometry 2% a magnetometr 1% danych używanych do obliczenia kątów potrzebnych do orientacji w w przestrzeni. To pokazuje, że najważniejszym czujnikiem jest żyroskop. Używane w małym lotnictwie żyroskopy MEMS działają na zasadzie pomiaru siły Coriolisa i przeliczają ją na prędkość kątową. Jest to trudny pomiar, niemający naturalnego punktu odniesienia do zjawiska fizycznego, tak jak to jest w przypadku akcelerometrów, które mierzą bardzo silne przyspieszenie ziemskie, albo magnetometrów mierzących dużo słabsze, ale wyczuwalne np. igłą kompasu pole magnetyczne. Dlatego trzeba w sposób arbitralny wyznaczyć, że dla statycznego czujnika dana wartość jest prędkością zerową.

Dodatkowo stopień skomplikowania metody pomiaru wpływa na jego podatność na wpływ temperatury. O ile akcelerometr i magnetometr są praktycznie niepodatne albo inaczej mówiąc wpływ temperatury jest mniejszy, niż dokładność pomiaru jaką potrzebujemy osiągnąć, to żyroskop jest wyraźnie podatny.

Po trzecie, inny jest sposób wykorzystania danych przez wymienione 3 grupy czujników. O ile dane akcelerometru i magnetometru wchodzą do obliczeń wprost, jako arkus tangens poszczególnych składowych XYZ, to dane żyroskopu są całkowane. Załóżmy, że każdy z tych czujników ma 1% błędu w skali rozpiętości swojego pomiaru. Dla akcelerometru i żyroskopu w najgorszym przypadku błąd wyznaczania kąta będzie wynosił 2%. Natomiast w przypadku żyroskopu, ten 1% błędu prędkości kątowej wyrażonej w [°/s] będzie sumowany w każdym cyklu pomiarowym, co spowoduje, że błąd kąta będzie narastał z prędkością 1% na sekundę i już po krótkiej chwili spowoduje kumulację do katastrofalnie dużej wartości.

Z tymi problemami można sobie radzić na kilka sposobów. Niezbędnym minimum jest aby przy każdym starcie wyznaczyć zero prędkości kątowych dla zastałych warunków. To jest wystarczające do latania blisko i nisko, gdzie nie ma istotnych różnic temperatury. Chcąc lecieć wyżej trzeba mieć na uwadze że na każde 100m wysokości temperatura spada średnio o 0,6°C. Aby poradzić sobie z wpływem temperatury na pomiar, stosuje się termostatowanie, czyli nagrzanie czujników do stałej temperatury i kalibrację zera w tak ustalonych warunkach. Ze znanych autopilotów tak robi Pixhawk Cube. Wadą tego rozwiązania jest czas potrzebny na nagrzanie się czujnika, zwłaszcza w zimie. Innym podejściem jest zbadanie kształtu charakterystyki dryftu temperaturowego po to, aby w warunkach zmieniającej się w locie temperatury móc wyznaczyć współczynnik korekcji tego dryftu. Tak robi się w sprzedawanych tutaj AP opracowanych przez Zbiga. Daje to dobre efekty ale kalibracja jest bardziej pracochłonna i trudniej jest ją opracować.

W APL3 próbuję połączyć te dwie metody. Płytka modułu IMU ma wbudowana grzałkę zrobioną z kilku oporników. Czujniki IMU mają swoje termometry, więc można będzie uruchomić regulator termostatu, utrzymujący stałą temperaturę czujników. Pierwsze próby nagrzewania modułu jeszcze poza autopilotem wyglądają zadowalająco. Na termografie po lewej stronie widać grzałkę umieszczoną na spodniej stronie płytki modułu. Być może trzeba będzie trochę przedłużyć ścieżkę grzejącą, bo dół modułu gdzie siedzi ND130 jest niedogrzany. Na górnej stronie płytki widać jedno miejsce gdzie utworzył się mostek termiczny i jest wyraźnie cieplej. Na zdjęciach poniżej pokazano spód i wierzch płytki modułu, po ponad 3,5 minuty grzania pełną mocą.

Czytaj więcej: Kalibracja żyroskopów

Porównanie czujników ciśnienia różnicowego ND130 i MS4525

Szczegóły
Autor: Piotr Laskowski
Utworzono: 22 luty 2025

Czujnik różnicowy w autopilocie służy do obliczania prędkości względem powietrza nazywanej w lotnictwie IAS (ang. Indicated Air Speed). Podłącza się go do rurki Prandtla zwanej potocznie rurką Pitota, która z wejścia na swoim froncie dostarcza ciśnienia całkowitego a z otworów na obwodzie, dostarcza ciśnienie statyczne. Różnica tych ciśnień to ciśnienie dynamiczne, którego pierwiastek w odpowiada prędkości. Akurat w wielowirnikowcach nie ma potrzeby mierzyć prędkości, bo nie ma ryzyka utraty siły nośnej na płacie i przeciągnięcia, ale skoro powstaje sprzęt uniwersalny, to chciałbym mieć taki czujnik co najmniej jako opcję.

Na module inercyjnym było trochę miejsca, więc wstawiłem tam oprócz czujników ciśnienia bezwzględnego, jeszcze świeżo wygooglowany czujnik różnicowy ND130. Będę go porównywał z podłączonym do zewnętrznej magistrali I2C czujnikiem MS4525. Pomimo że MS4525 jest koszmarnie drogi, jest on standardem w małym lotnictwie.

Czytaj więcej: Porównanie czujników ciśnienia różnicowego ND130 i MS4525

Pomiary prędkości pamięci w kontrolerze STM32H7

Szczegóły
Autor: Piotr Laskowski
Utworzono: 23 styczeń 2025

Nie tak dawno robiłem testy badając możliwość obsługi kamery cyfrowej przez mikrokontrolery Cortex M7. Jeden badanych zestawów posługujący się pamięcią dynamiczna miał wyraźnie słabsze osiągi, nieporównywalnie mniejsze niż wynikało by to z niższej częstotliwości taktowania. Wyciągnąłem wtedy wniosek że pracuje wolniej dlatego, że jest wyposażony w pamięć dynamiczną wymagającą odświeżania i mającą bardziej skomplikowane adresowanie, osobno rzędy i kolumny. W swoim projekcie potrzebuję obrabiać obraz z kamery, więc zastosowałem najszybsza jaka znalazłem w tym rozmiarze pamięć statyczną IS61WV204816BLL-10TI, ale też dorzuciłem pamięć dynamiczną AS4C32M16SC-7TIN, tak na wszelki wypadek gdyby okazało się że będę potrzebował więcej pamięci niż założyłem na początku. Oba układy pracują na wspólnej 16-bitowej magistrali danych.

Obecnie dotarłem do etapu, gdzie mam już uruchomioną obsługę wszystkich pamięci i mogę je porównać.  Jako próbkę testową stosuję 1000-krotne przesłanie bufora 256 słów 16-bitowych między badaną pamięcią a najszybszą dostępną w kontrolerze, czyli Axi-RAM. W Przypadku użycia DMA po rozpoczęciu transferu czekam na jego zakończenie. Przed rozpoczęciem pomiaru pobieram czas z 16-bitowego  timera liczącego z rozdzielczością 1us, rozszerzonego 16-bitowym timerem programowym inkrementowanym w przerwaniu timera. Po zakończeniu transferu ponownie pobieram czas i liczę różnicę. Procedura pomiarowa dla przypadku pętli for() oraz DMA wygląda następująco:

Czytaj więcej: Pomiary prędkości pamięci w kontrolerze STM32H7

Pomiary pierwszych czujników w APL3

Szczegóły
Autor: Piotr Laskowski
Utworzono: 23 grudzień 2024

Projekt APL3 rozwija się, zasoby sprzętu są po kolei uruchamiane. Na obecnym etapie jest uruchomiona obsługa wyświetlacza  panelem dotykowym - zupełnie nieistotna z punktu widzenia autopilota, ale bardzo pomocna do pracy nad urządzeniem. Tutaj wykorzystałem obsługę wyświetlacza, oraz jego menu graficzne, które wypracowałem w niepublikowany projekcie testera modelarskiego. Ostatnio przeniosłem z APL2 obsługę GNSS dla odbiorników z chipsetem MTK i u-Blox. Rozbudowałem kilka rzeczy i obecnie urządzenie wykrywa brak odbiornika i inicjuje oba typy odbiorników bez względu na ich aktualny stan, czy ustawioną prędkość transmisji, tak więc można odbiornik podmienić w trakcie pracy i działa nadal. Nie działa mi jeszcze ustawianie częstotliwości generowania komunikatów na nowym odbiorniku SAM M10Q.

Przy tej okazji dołożyłem obsługę magnetometru wbudowanego w module odbiornika GNSS. Na zdjęciu jest historyczny już moduł odrzucony ze sprzedaży (źle prezentuje datę), ale mający wbudowany czujnik HMX5883L. Jest odczytywany po I2C przez DMA, bez jałowego czekania na wynik pomiaru. Jego wartości są prezentowane na ekranie jako Magn3. Dane z pozostałych czujników, które będą wbudowane w moduł IMU są na razie generowane sztucznie po to, aby testować mechanizm przekazywania danych z rdzenia wykonującego pomiary (Cortex M4) do rdzenia obsługującego komunikację i interfejs użytkownika (Cortex M7)

Czytaj więcej: Pomiary pierwszych czujników w APL3

Podkategorie

Komputer pokładowy Liczba artykułów:  19

Zagadnienia związane z komputerem pokładowym AutoPitLot

Wariometr SkyAssistant Liczba artykułów:  8

Nowinki związane z wariometrem AkyAssistant

System FPV Liczba artykułów:  19


Firma Liczba artykułów:  24

Dedalus Liczba artykułów:  1

Hermes Liczba artykułów:  2

Artykuły APL3 Liczba artykułów:  27

Zbiór artykułów dotyczących trzeciej wersji komputera pokładowego AutoPitLot nazywanego dalej APL3

Strona 4 z 17

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Logowanie

  • Nie pamiętasz hasła?
  • Nie pamiętasz nazwy?
  • Załóż swoje konto!

Subskrypcja

Znajdz na stronie

Copyright © 2026 PitLab elektronika modelarska. Wszelkie prawa zastrzeżone.
Joomla! jest wolnym oprogramowaniem wydanym na warunkach GNU Powszechnej Licencji Publicznej.