Elektronika modelarska

Mam już kolejne klocki do projektu komputera pokładowego: działającą kalibrację off-line, czyli taką odbywającą się autonomicznie bez udziału PC. Na razie tylko polecenia start i stop są przesyłane z komputera, ale w miarę rozbudowy interfejsu użytkownika zostanie to zastąpione instrukcjami przesyłanymi przez drążki aparatury. Mam też jednoczesny pomiar dwu magnetometrów na obu magistralach I2C oraz pomiar szumu obu magnetometrów.

Pomiar szumów opisywałem tutaj sporo wcześniej - jest to pierwiastek z sumy kwadratów różnic kolejnych pomiarów. Im większa zmienność sygnału tym większa wartość tego wyrażenia. Jednostką szumu jest jednostka pomiarowa, czyli w przypadku magnetometru 1/512 kroków pełnej skali wskazań pomnożona przez wzmocnienie na danym kanale (bliski 1).

Tak wygląda  zestaw testowy:

Zestaw magnetometrów podczas kalibracji

Dwa magnetometry (zamontowane na spodniej warstwie modułu) są na sztywno umieszczone na pustym tekturowym pudełku, tak aby oddalić je od potencjalnych ferromagnetyków na i pod biurkiem. Na jednym module jest zainstalowany działający odbiornik GPS. Moduły połączone są dwoma kabelkami do złącz modułów zewnętrznych komputera AutoPitLot. Jeden magnetometr siedzi na magistrali I2C1, drugi na I2C2 a odbiornik GPS na UART0.

Kalibracja jest robiona dwuetapowo. Pierwszy etap kalibruje parametr nazywany korekcją zera magnetometru. Polega to na tym że zdejmuję kilka serii pomiarów po wykonaniu polecenia przemagnesowania struktury magnetometru w jedną stronę (SET) i drugą (RESET). Przemagnesowanie powoduje że wynik pomiaru zmienia swój znak zachowując tą samą wartość. Idealnie pomiar powinien dawać wartość N i -N jednak odchyłki produkcyjne struktury magnetorezystywnej czujnika powodują powstawanie odchyłek od zera. Na tym etapie mierzone są wartości N i -N we wszystkich osiach dla nieruchomego czujnika. Ten etap wykonuję automatycznie z poziomu komputera w warunkach laboratoryjnych, tzn. bez wpływu obiektu docelowego, na którym zamontowany jest czujnik.

Wartość korekcji zera wynosi:

Correction =  (N + -N) /2.

 

Drugi etap kalibracji polega na normalizacji wskazań magnetometru we wszystkich osiach, tak aby pomiary na wszystkich osiach dawały sygnał o takiej samej amplitudzie i symetryczny względem zera. Wymaga to dobrania dwóch współczynników Gain (wzmocnienie) i Offset (przesunięcie zera) dla pomiaru w każdej osi. Kalibracja wymaga znalezieniu ekstremów wartości mierzonego pola magnetycznego dla wszystkich osi.

Parametry korekcyjne liczone są następująco:

Gain = 512 / (Max - Min)

Offset = Gain * (Max + Min) /2

 

gdzie Max i Min są to wartości maksymalna i minimalna pola magnetycznego w każdej z osi znalezione podczas kalibracji.

 

Praktycznie kalibracja polega na obracaniu magnetometru zamontowanego na docelowym obiekcie we wszystkich osiach. Komputer pokładowy  sygnalizuje znalezienie maksimum lub minimum funkcji krótkim sygnałem dźwiękowym , wysokim tonem dla Max i niskim dla Min.

 

Tak wyglądają przykładowe wyniki kalibracji dwu magnetometrów. Dane z indeksem 1 są z magnetometru będącego jednym czujnikiem w module, z indeksem 2 z magnetometru zakłóconego obecnością odbiornika GPS:

Dane kalibracyjne obu magnetometrów

Po parametrze Gain widać wpływ stalowej blachy w odbiorniku GPS. O ile współczynniki normalnie mają wartość zbliżoną do 1, to osie X i Y wymagają mnożenia przez ok. 1,5 aby uzyskać pełną rozpiętość sygnału w tych osiach.

Tak wyglądają przykładowy sygnał z obu magnetometrów po kalibracji (górny wykres), kolejne osie XYZ to kolory RGB  o trochę innym odcieniu dla poszczególnych magnetometrów. Niżej są 3 wykresy porównujące szum pomiaru na kolejnych osiach. Widać że obecność odbiornika GPS nie wpływa na parametry dynamiczne pomiaru - szum jest w okolicach 0,5 bita (natomiast mocno wpływa na parametry statyczne). Wartości szumu są niemalże identyczne dla obu czujników. W chwilach gdy sygnał się zmienia szum rośnie, bo algorytm nie wie co jest szumem a co zmiennym sygnałem - to jest OK.

Wykres zakresu wskazań magnetometrów i szumów pomiaru dla poszczególnych osi

Lataj bezpiecznie swoim UAV