Elektronika modelarska

Komputer pokładowy

Zagadnienia związane z komputerem pokładowym AutoPitLot

Niedawno miałem problem z brakiem dostępności akcelerometrów w swoim jedynym module inercyjnym. Modułowa konstrukcja komputera pokładowego między innymi ma na celu uniezależnienie się od braku dostępności czujników danego typu. Ponieważ miałem kilka różnych czujników do przetestowania podjąłem decyzję o zaprojektowaniu kolejnego modułu inercyjnego opartego na akcelerometrze LIS302DLH i żyroskopie ITG-3200. Ponieważ te dwa czujniki zajmują tylko ułamek miejsca na standardowej płytce modułu więc dołożyłem jeszcze czujnik ciśnienia BMP085 i magnetometr MMC3140MR. Robiąc zakupy udało mi się kupić jeszcze akcelerometr BMA180 więc dorzuciłem jeszcze czujniki ciśnienia HP03S i MS5803 i tak powstał eksperymentalny moduł cyfrowy All-In-One. Eksperymentalność polega na dużej nadmiarowości czujników. W wersji produkcyjnej zostaną tylko wybrane czujniki.

Czytaj więcej: Moduł cyfrowy All-In-One

Rejestrator danych inaczej nazywany loggerem służy do jednoczesnej rejestracji wielu parametrów lotu na karcie microSD. Rejestruje zarówno dane pomiarowe, jak i obliczeniowe. Dane zapisywane są do pliku tekstowego i rozdzielone znakiem tabulacji. Można je wczytać do oprogramowania komputera, albo do arkusza kalkulacyjnego czy innego oprogramowania. W pierwszym wierszu zawarte są skrótowe opisy rejestrowanych parametrów, w drugim wierszu jednostki parametrów. Ze względu na zgodność z anglojęzycznym oprogramowaniem liczby całkowite zapisywane są ze znakiem kropki a nie przecinka. Gdyby była potrzeba użycia liczb z przecinkiem, łatwo to zmienić w dowolnym edytorze tekstu funkcją znajdź i zmień.

Poniżej sa przykładowe logi z komputera pokładowego AutoPitLot:

Lot Hexakopterem

Lot Quadrokopterem

 

Konfiguracja rejestratora odbywa się za pośrednictwem pliku konfiguracyjnego config.txt znajdującego się na karcie. W przypadku braku tego pliku tworzony jest nowy plik z domyślnymi nastawami. Obecnie w pliku ustawia się wybór pomiędzy 96 parametrami do logowania, nazwą pliku logu (np. nazwa modelu) i częstotliwość rejestracji. Częstotliwość zapisu ustawia się jedną taką samą dla wszystkich parametrów.

Nazwa logu np. "Hexa4s_120721_23.log" zawiera 3 człony: pierwszy ("Hexa4s") zdefiniowany w pliku konfiguracyjnym, drugi człon to data (RRMMDD) a trzeci to numer kolejny sesji rejestratora (00-99). Każdy kolejny start logowania to nowa sesja. Dzięki temu nie ma obawy że nadpiszemy jakieś istniejące dane. Pojemność obecnie używanych kart jest tak duża że w praktyce logowanie jest ograniczone tylko możliwościami późniejszej analizy tych danych.

 

Lista logowanych parametrów

 

Local time - czas pokładowego zegara [GG:MM:SS.ss]. Okresowo jest synchronizowany z czasem GPS

Alti - wysokość barometryczna mierzona od punktu startu [m]. 

Press - ciśnienie barometryczne [hPa]

Speed - prędkość względem powietrza [m/s]

Vario - prędkość pionowa z wariometru [m/s]

AcelX(-Y, -Z) -składowe przyspieszenia mierzonego w 3 osiach [g]

GyroP(-Q, -R) - składowe prędkości kątowych w 3 osiach [°/s]

MagnX(-Y, -Z) - składowe natężenia pola magnetycznego w 3 osiach [-]

Volt1 - napięcie mierzone przez pierwszy czujnik mocy [V]

Curr1 - prąd mierzony przez pierwszy czujnik mocy [A]

TCRef - (ThermoCouple Reference) temperatura odniesienia zimnego końca termopar [°C]

MagCurs - kurs magnetyczny [°]

SerCur - (Servo Current) prąd pobierany z komputera przez serwa  [A]

Vin - napięcie wewnętrzne wchodzące na główny stabilizator 3,3V [V]

RPM1(-2) - (Rotation Per Minute) prędkość obrotowa z dwu czujników [obr/min]

RcHeal - poziom szumu w sygnale RC (im mniej tym lepiej, max 4000) [-]

CardBuf - wielkość zajętego bufora karty SD logera [B]

ErCode - suma logiczna kodów błędu jakie ostatnio wystąpiły (0 = brak błędu). 

GLong - długość geograficzna z GPS [°]

GLati - szerokość geograficzna z GPS [°]

GAlti - wysokość n.p.m z GPS [m]

GSped - prędkość względem ziemi  [m/s]

GCurs - kurs CMG wynikający z pokonanej drogi [°]

GSats - liczba widzianych satelitów [-]

GFix - stan Fix'a [-]

TmpImu - temperatura przetwornika na module IMU [°C]

TmpPne - temperatura przetwornika na module pneumatycznym [°C]

SerIn1(-2..8) - szerokość impulsu przychodzącego z odbiornika RC [us]

SerO01(-02..12) - szerokość impulsu wychodzącego na serwa [us]

Phi - kąt przechylenia [°]

Theta - kąt pochylenia [°]

Psi - kąt odchylenia [°]

APhiAThetaAPsi - kąty orientacji liczone wyłącznie z akcelerometru metodami trygonometrycznymi [°]

GPhiGThetaGPsi - kąty orientacji liczone przez całkowanie sygnału żyroskopów [°]

Energ1 - energia pobrana mierzona przez czujnik mocy 1 [mAh]

MagMcX(-Y, -Z) - składowe natężenia pola magnetycznego w 3 osiach z alternatywnego magnetometru [-]

MagCurM - kurs magnetyczny obliczony a alternatywnego magnetometru [°]

KKAlti - wysokość barometryczna przefiltrowana filtrem Kalmana [m]

KKVari - prędkość pionowa z wariometru przefiltrowana filtrem Kalmana [m/s]

KKAccZ - przyspieszenie w osi Z przefiltrowane filtrem Kalmana [m/s^2]

AcSpeedX(-Y, -Z) - prędkość uzyskana w wyniku całkowania przyspieszenia [m/s]

AcWayX(-Y, -Z) - droga uzyskana w wyniku całkowania prędkości [m]

PidTun1(-2) - wartości przypisane do kanału 6 i 7 aparatury używana do strojenia regulatorów PID

RoR_SP - (Roll Rate SetPoint) - wartość zadana regulatora prędkości kątowej przechylenia [°/s]

RoR_P - wartość członu proporcjonalnego regulatora  prędkości kątowej przechylenia [%]

RoR_I -  wartość członu całkującego regulatora prędkości kątowej przechylenia [%]

RoR_D - wartość członu różniczkującego regulatora prędkości kątowej przechylenia [%]

RoR_PID - sumaryczna wartość całego członu PID regulatora prędkości kątowej przechylenia [%]

 

Poniżej wymienię tylko początku nazw zmiennych dla kolejnych regulatorów. Końcówki nazw są analogiczne jak dla pierwszego regulatora.

PiR_ - (Pitch Rate) - regulator prędkości kątowej pochylenia[°/s]

YaR_ - (Yaw Rate) - regulator prędkości kątowej przechylenia [°/s]

AlR_ - (Alti Rate) - regulator prędkości pionowej (wariometru) [m/s]

Rol_ - (Roll) - regulator kata przechylenia [°]

Pit_ - (Pitch) - regulator kata pochylenia [°]

Yaw_ - (Yaw) - regulator kata odchylenia [°]

Alt_ - (Altitude) - regulator wysokości [m]

 

moduł pneumatyczny Moduł pneumatyczny w wersji 2.0 zawiera zestaw czujników do pomiaru parametrów fizycznych powietrza takich jak ciśnienie, wysokość, prędkość i prędkość zmiany wysokości (wariometr). Oprócz tego aby optymalnie wykorzystać 8-kanałowy, 16-bitowy przetwornik analogowo cyfrowy moduł mierzy temperatury dwiema termoparami i posiada dwa wejścia analogowe w zakresie 0-4V do wykorzystania przez użytkownika.

Komunikacja z modułem odbywa się za pomocą magistrali SPI. Polega na odpytywaniu przetwornika analogowo cyfrowego AD7689. Moduł wymaga zasilania 3,3V do interfejsowej części cyfrowej oraz 5,0V do zasilania części analogowej.

Pod względem programowym aktualna wersja firmware mierzy wszystkie parametry, uwzględnia kalibrację temperaturową i indywidualną kalibrację każdego czujnika. Kalibrację wykonuje się okresowo przy pomocy programu obsługującego komputer pokładowy.

Czytaj więcej: Moduł pneumatyczny

Optoelektroniczny czujnik prędkości obrotowej

Optoelektroniczny czujnik prędkości obrotowej ma dwa LEDy oświetlające podczerwienią i czujnik podczerwieni połączony ze wzmacniaczem pracującym w układzie komparatora, porównującego wartość bieżącego sygnału z wartością średnią. W ten sposób może wykrywać nawet niewielkie zmiany natężenia światła w szerokim zakresie oświetlenia.

Czujnik RPM może pracować z własnym światłem odbitym, np oświetlając czarno-białą naklejkę na silniku w kadłubie samolotu, lub pracować ze światłem zastałym patrząc się przez śmigło na otoczenie. W przypadku pracy ze światłem odbitym, odległość między czujnikiem a wirującym elementem powinna mieścić się zakresie od odległości kontaktowej to ok. 5cm. Fabrycznie fotoelementy ustawione są równoległe. LEDy świecą wiązką o kącie rozwarcia 50°, fotoelement zbiera światło z kąta 24°.

Czytaj więcej: Czujnik prędkości obrotowej

Moduł inercyjny oparty na ukłądach Invensense i FreescaleModuł inercyjny, z angielskiego IMU Inertial Measurement Unit,  jest sercem każdego nowoczesnego autopilota. Dostarcza informacji o położeniu platformy UAV względem  Ziemi. Dane pochodzą z 3-osiowego akcelerometru MMA7341 Freescale i żyroskopów Invensense: 2-osiowego IDG-500 i 1-osiowego ISZ-500.

W założeniach ma to być dosyć tanie ale wystarczająco precyzyjne źródło danych dla jednostki inercyjnej.  

Moduł jest wyposażony we własne źródło zasilania 3,0V i 16-bitowy przetwornik analogowo-cyfrowy komunikujący się z komputerem za pomocą magistrali SPI. Pierwsze 6 kanałów przetwornika mierzy sygnały z  żyroskopów i akcelerometru, pozostałe kanały 7 i 8 mierzą temperaturę obu żyroskopów. 



Parametr Zakres pomiarowy modułu
Przyspieszenie +-11g
Prędkość kątowa

+-500°/s


Masa modułu 5g.


W artykule Porównanie żyroskopów i akcelerometrów, porównuję parametry czujników użytych w projekcie do innych, zarówno cyfrowych jak i analogowych.

Moduł ADCIO zawiera 8 wejść 16-bitowego przetwornika analogow-cyfrowego (ADC) oraz 8 wejść/wyjść (IO) cyfrowych. Pierwsze 4 wyjścia cyfrowe sterują tranzystorami MOSFET mogącymi zwierać do masy prąd o natężeniu 4A w układzie otwarty dren (zwierają do masy). Kolejne 4 linie cyfrowe mogą pracować jako uniwersalne linie wejścia lub wyjścia w standardzie  CMOS 3,3V.

Wyjścia przeznaczone są do sterowania oświetleniem, odpalana rac itp.


Wejścia przetwornika analogowo-cyfrowego są wyprowadzone na 4 złącza zawierające 2 kanały przetwornika i zasilanie 5V ograniczone rezystorem szeregowym. Można podłączyć do tego czujniki prądowo - napięciowe, lub inne czujniki użytkownika dające sygnał w zakresie 0-4V.


ModułADCIO

Lataj bezpiecznie swoim UAV

Logowanie

Subskrypcja