Projekt Szybowca

Bezprzewodowy moduł pomiarowy 
Celem przedsięwzięcia było zaprojektowanie i wykonanie bezprzewodowego modułu pomiarowego wysokości i prędkości wznoszenia. Docelowym przeznaczeniem projektu był obiekt latający w postaci modelu motoszybowca. Konstrukcja przewiduje również inne zastosowanie modułu po zmianie oprogramowania.

Moduł pomiarowy składa się z dwóch części: stacji naziemnej i stacji ruchomej (część czujnikowa). Część naziemna stanowi rodzaj rejestratora, którego funkcjonalność została ograniczona do odczytu wzrokowego przez operatora (zaimplementowano również możliwość odczytu przez łącze szeregowe w standardzie RS232). Część ruchoma umieszczona jest w obiekcie latającym. Na podstawie odczytu z czujników ciśnienia obliczona zostaje wysokość i prędkość przez mikrokontroler a za pomocą łącza radiowego dane przekazywane są na ziemię.

Zasada działania
Pomiar wysokości oraz prędkości wznoszenia odbywa się na podstawie istnienia zależności pomiędzy wysokością obiektu w powietrzu a zmianą ciśnienia. Im obiekt znajduje się wyżej tym ciśnienie mierzone będzie niższe. Zależność ta jest logarytmiczna. W celu uproszczenia obliczeń (mikroprocesorowa implementacja musi być jak najprostsza z uwagi na ograniczoność zasobów obliczeniowych mikrokontrolera) przyjęto liniową zależność wysokości od ciśnienia co dla małych wysokości daje poprawne rezultaty. Nie uwzględniono również wpływu temperatury, która zmienia się wraz z wysokością. Przyjęto, że wraz ze zmianą wysokości o 8.5 m ciśnienie spada o 1 hPa. Aby zmierzyć prędkość należy różnicę wysokości odnieść w jednostce czasu. 

Konfiguracja sprzętowa 
Sercem konstrukcji, zarówno części naziemnej jak i ruchomej jest mikrokontroler ATmega 32. Jest to 8‑bitowy mikrokontroler z rdzeniem AVR. Posiada 23kB pamięci programu typu Flash oraz 2kB pamięci operacyjnej SRAM. W swej strukturze zawiera również 3 liczniki-tajmery (dwa 8-bitowe, jeden 16-bitowy), interfejs SPI, interfejs TWI (odpowiednik I2C), komparator i najistotniejszy dla projektu 10‑bitowy przetwornik A/C. Część naziemna wyposażona jest w wyświetlacz alfanumeryczny 2x16 znaków ze standardowym sterownikiem HD44780, klawiaturę złożoną z 4 klawiszy typu microswitch. Na płytce części naziemnej znajduje się również gniazdo DB9 łącza szeregowego w standardzie RS232. Nie można pominąć oczywiście modułu radiowego.
Część ruchoma składa się z części analogowej w skład której wchodzą dwa czujniki ciśnienia MPX4115, wzmacniacza zbudowanego ze wzmacniaczy operacyjnych typu Rail-to-Rail AD8532firmy Analog Devices. Część cyfrowa to płytka mikrokontrolera wraz z modułem radiowym. Wzmacniacz pomiarowy nakłada się razem z modułem radiowym na płytkę mikrokontrolera. Całość stanowi formę „kanapki”.

Częścią wspólną nadajnika i odbiornika jest moduł radiowy CC1000. Moduł ten posiada programowaną przez użytkownika prędkość transmisji od 0.6kbaud/s do 76.8 kbaud/s i moc nadajnika wynoszącą maksymalnie 10 mW. Moduł radiowy pracuje w paśmie 433 MHz i oznacza się wysoką czułością. Posiada on również wyjście RSSI umożliwiające pomiar sygnału odebranego. Moduł radiowy CC1000 posiada dwa osobne interfejsy – jeden służy do konfiguracji natomiast drugi służy do transmisji danych. Trudność w programowej obsłudze i duża liczba zajmowanych linii przez mikrokontroler, który go obsługuje to główne wady tego modułu.

Warstwa oprogramowania 
Oprogramowanie odbiornika i nadajnika zostało napisane w języku C używając środowiska Win-AVR. Środowisko to zawiera w sobie darmowy kompilator AVR‑GCC. 

Oprogramowanie nadajnika obejmuje:

  • Obsługę przetwornika A/C
  • Obsługę tajmera (próbkowanie mierzonego sygnału)
  • Obsługę modułu radiowego CC1000
  • Procedury odpowiedzialne za przeliczenie wartości zapisanych w rejestrze przetwornika A/C na wartości ciśnień, wysokości i prędkości

Oprogramowanie odbiornika obejmuje:

  • Obsługę wyświetlacza alfanumerycznego HD44780
  • Obsługę klawiatury
  • Obsługę modułu radiowego
  • Procedury przygotowujące przesłane bajty do wyświetlenia
  • Opcjonalnie obsługę transmisji łączem szeregowym odebranych danych

Na szczególną uwagę zasługuje obsługa modułu radiowego CC1000. W pierwszej kolejności należy wygenerować dane konfiguracyjne, które należy następnie przesłać do rejestrów tego układu. Wśród tych danych są m. in. Prędkość transmisji, moc nadajnika, częstotliwość, rodzaj kodowania. Do zaprogramowania jest 30 rejestrów. Do generowania konfiguracji służy program Smart Studio dostępny na stronie Texas Instruments. Moduł CC1000 konfiguruje się za pomocą linii mikrokontrolera dołączonych do odpowiednich linii CC1000. Po poprawnej konfiguracji CC1000 jest gotowy do pracy. Wadą CC1000 jest nadawanie/odbiór informacji bit po bicie wykorzystując zasoby obsługującego mikrokontrolera. Mikrokontroler musi następnie wszystkie odebrane dane poskładać w całość a później przeanalizować pod względem poprawności. Moduły te wymagają nadawania i odbioru tzw. preambuły w postaci ciągu bitów 01010101 (0x55 lub 0xAA). Potrzebne jest to aby dopasować poziomy napięć nadajnika i demodulatora odbiornika. Dopiero wtedy można przystąpić do nadawania i odbioru danych użytecznych. Obsługa modułu CC1000 również została zrealizowana w postaci automatu Moore’a. Poszczególne stany to nadawania i odbiór preambuły i danych użytecznych. Uwzględniono przy tym również możliwość niepowodzenia transmisji. Jako, że transmisja odbywa się tylko w jedną stronę zrezygnowano z nadawania potwierdzenia odebrania poprawnych danych i ewentualnie żądania przesłania powtórzenia. Został wprowadzony jedynie mechanizm sumy kontrolnej niedopuszczający wyświetlanie niepoprawnie odebranej ramki z danymi pomiarowymi.

~Mateusz Lubas