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.

Zakres pomiarowy

Analizując parametry katalogowe, otrzymujemy taki zakres parametrów:

Czujnik Rozdzielczość max częstotliwość pomiarów Zakres pomiarowy czujnika Zakres mierzonych prędkości IAS
bitów Hz Jednostka natywna Paskale m/s km/h
ND130-SM02 15 444 +- 30 cali H2O 7472,67 113 406
MS4525DO-DS 5AI001 14 166 +- 1 psi 6894,75 108,5 390,6

Rozdzielczość ND130 jest deklarowana jako 16 bitów, ale najstarszy bit jest zawsze zerem, przynajmniej na używanym przeze mnie zakresie 30 cali wody. Częstotliwość pomiarów dla MS4525 obliczyłem jako odwrotność czasu gotowości danych. To nie uwzględnia czasu transmisji danych, więc finalny wynik może być mniejszy.

Oba czujniki pracują na magistralach I2C oraz SPI. I2C jest bardzo wolnym łączem, odczyt zajmuje mnóstwo czasu, więc możliwość użycia SPI wydaje się atrakcyjna, jednak oba czujniki pracują na SPI bardzo wolno. Widać, że to jest interfejs realizowany programowo, trochę na siłę. Maksymalny zgar SPI dla ND130 to 166 kHz, dla MS4525 trochę lepiej: 800 kHz, jednak w porównaniu do czujników ze sprzętowym SPI umiejącym pracować na 20MHz to jest bardzo słabo. Podczas pomiarów ND130 był podłączony po SPI taktowanym 120 kHz, MS4525 po I2C taktowanym 50 Hz. Rejestracja danych była wykonana z częstotliwością ok. 5 Hz, bez żadnego uśredniania.

Reakcja na zmianę ciśnienia

Pierwszym testem jest porównanie jednoczesnej pracy obu czujników w obwodzie pneumatycznym, gdzie jeden króciec jest otwarty a drugi podłączony do instalacji pneumatycznej zrobionej z kilku rurek silikonowych. W trakcie pomiaru starałem się dojechać z ciśnieniem do okolic końca zakresu pomiarowego i powoli spuścić powietrze, następnie podać odwrotne ciśnienie i powoli wyrównać do zera. Porównanie współbieżności czujników wypadło bardzo dobrze. Oba idą łeb w łeb, bez zauważalnej różnicy.

Obliczona różnica między wskazaniami wygląda tak jak na obrazku niżej. Widoczne 3 duże szpilki wynikają prawdopodobnie ze stanów dynamicznych szybkiej zmiany ciśnienia w instalacji. ND130 był podłączony przez dosyć cienki wężyk i przy skokowej zmianie ciśnienia mogła się pojawić taka różnica dynamiczna. To kłuje w oczy ale jest pomijalne, bo przyczyna jest zrozumiała i nieistotna a dla obwodów automatyki i tak pomiar jest filtrowany. Dla nas istotna jest linia trendu. Tutaj jest interesująco, bo zarówno dla ciśnienia dodatniego, jak i ujemnego różnica jest zawsze dodatnia i wynosi około 30 Pa. Przy skali 7 kPa to jest 0,43% różnicy.

Gdyby ktoś chciał przeanalizować to bardziej szczegółowo, to udostępniam zestaw danych pomiarowych z rejestratora na karcie SD.

Na tym etapie warto przeanalizować szum czujników. Na poniższym obrazku jest wykres danych pomiarowych od punktu 500 do końca, kiedy instalacja była otwarta z obu stron i oba króćce miały to samo ciśnienie.

Widać tutaj, że ND140 ma zauważalne oscylacje w granicach od 0,9 do -1,1 Pa a MA4525 nie szumi mniej niż +-5 Pa a zdarza się amplituda szumu na poziomie 30-40 Pa. Tutaj ND130 jest wyraźnie lepszy. Widać też, że w interesującym nas zakresie rozdzielczość obu czujników różni się nie o 1 bit, jak sugeruje dokumentacja, ale przynajmniej o 4 bity.

Próby zdjęcia charakterystyki czujników

Skoro były zauważalne różnice między czujnikami, warto byłoby spróbować wyjaśnić, który z nich jest źródłem błędu. Aby to sprawdzić, trzeba ciśnienie z czujników odnieść do ciśnienia wzorcowego. Nie mam dostępu do takich rzeczy, ale zakres pomiarowy czujników odpowiada ciśnieniu kilkudziesięciu centymetrów słupa wody, a to już wydaje się możliwe do przeprowadzenia w warunkach domowych. Zrobiłem instalację umożliwiającą pomiar ciśnienia przez pomiar wysokości słupa wody zabarwionej atramentem (inaczej prawie nie widać jej w wężyku).

Podziałka centymetrowa wycięta z papierowej podkładki na biurko ma odrobinę przekłamaną skalę. Na 58 cm brakuje jej 4 mm, ale nie znalazłem nic lepszego o tej długości. Linijka 30 cm jest za krótka, zwijana miarka stalowa zbyt kłopotliwa w mocowaniu. Trudno papierową miarkę oprzeć o poziom wody, więc miarka opierała się o krawędź szklanki, a odległość lustra wody od krawędzi szklanki została wprowadzona jako stała do arkusza z obliczeniami. Pominąłem wpływ obniżania się słupa wody w miarę pobierania jej do wężyka. Nie liczyłem tego, ale wydaje mi się, że ten ubytek przekracza błąd pomiaru wysokości cieczy w szklance.

Pomiar polegał na zaciągnięciu słupa wody do końca skali i upuszczanie podciśnienia co ok. 2 cm. Ponieważ płynna regulacja ciśnienia nie jest banalna, zapisywałem dokładną wartość odczytaną ze skali i dopiero z tego było obliczane ciśnienie słupa wody jako ciśnienie odniesienia do porównania z odczytami z czujników.

Taki odczyt wymaga sporo gimnastyki, bo układ pomiarowy i obsługa arkusza kalkulacyjnego jest na biurku a odczyt pod biurkiem. Przy każdym  upuszczaniu ciśnienia trzeba się schylić, inaczej jest duży błąd paralaksy.

 

 

Dla sprawnego przeprowadzenia pomiaru istotną sprawą jest zawór pozwalający na upuszczanie powietrza. Długo z tym walczyłem i najlepsze okazało się małe imadełko. Tylko tym udawało się delikatnie rozszczelnić instalację w kontrolowany sposób, tak aby schodziło tylko kilka milimetrów słupa wody na sekundę, a nie połowa zawartości rurki.

Przy okazji wypracowałem jeszcze kilka technikaliów, które są przydatne przy takim pomiarze. Nie można szybko zmieniać ciśnienia, ponieważ w cieczy pojawiają się bąble powietrza albo luźne krople poza głównym słupem pomiarowym. To wszystko wpływa na dokładność pomiaru. Mam małą pompkę membranową i pierwotnie chciałem ją wykorzystać, ale ona miała zbyt dużą wydajność i generowała powyżej wymienione problemy. Finalnie pozostałem przy wciąganiu powietrza ustami.

Dosyć trudne jest osuszenie rurki, w której są pojedyncze kropelki wody. Przedmuchiwanie pompką nie daje dobry rezultatów. Tutaj sprawdziła się stara sztuczka chemików do suszenia pipet i probówek: trzeba je przemyć alkoholem. Na wlotowym końcu wężyka wystarczy wpuścić kilka kropli izopropanolu i chwilę przedmuchać. Alkohol ma znacznie mniejszą lepkość niż woda, przez co nie przylega do ścianek i łatwo z nich spływa. Doskonale rozpuszcza w sobie wodę, a jego resztki szybko odparowują.

 

Finalnie uzyskałem taki wykres jak na obrazku niżej. Uwzględnia on kompensację nierównej długości miarki. Zafalowania charakterystyki wynikają z nierównej odległości między próbkami. Prosty wykres z arkusza zakłada, że odległości na osi X są równe, dlatego nierówność próbkowania wygina charakterystykę. Na pierwszy rzut oka wszystko jest OK. Wskazania czujników z grubsza zgadzają się z fizyką. Wskazania pod końcem skali są odrobinę wyższe, ale nie jest to duży błąd.

Jeżeli spróbuję obliczyć wartość błędu, to otrzymuję taki wykres jak niżej. Błąd poza dołem skali jest całkiem liniowy. Przypuszczam, że dla niewielkich wartości słupa wody to może być wpływ sił kapilarnych w rurce równoważących siłę ciężkości niewielkiej masy wody. Niestety nie mam pod ręką odpowiednio długiej rurki o większej średnicy, aby zminimalizować wpływ sił kapilarnych.

Ten sam błąd po przeliczeniu go na finalną jednostkę prędkości w metrach na sekundę. Dla wyższych prędkości błąd rośnie wolniej ze względu na pierwiastek we wzorze na prędkość. Teraz widać, że jednak 2 m/s to dosyć duży błąd i jeżeli będzie zależało na dobrym odczycie, to trzeba kalibrować czujnik. Trzeba tylko dopracować ten nieszczęsny wzorzec ciśnienia. Może nadmuchany, niesprężysty woreczek obciążony znaną masą będzie lepszym wzorcem? Tylko jak obliczyć jego powierzchnię?

Kolejna próba

Następnego dnia przypomniało mi się, że jednak mam dużą pipetę, która w środku ma 4 mm średnicy, więc pomiar tym narzędziem pozwoliłby wykluczyć wpływ sił kapilarnych. Zakres pomiarowy przy użyciu pipety to 40 cm słupa wody. Dodatkowo większa objętość cieczy, jaka ją wypełnia, powoduje, że poziom nie zmienia się tak szybko, dzięki czemu można precyzyjniej sterować poziomem cieczy.

Tym razem, ze względu na pobieraną większą ilość wody, na wszelki wypadek każdy pomiar był odnoszony do poziomu lustra cieczy, a nie do krawędzi naczynia. Tam, gdzie nie wystarczała wygodna linijka, mierzyłem metalową taśmą mierniczą, której podziałka idealnie pokrywa się z linijką, więc przyjmuję, że obydwie wzorce długości są jednakowo dokładne.

Do tego pomiaru zmodyfikowałem program, aby na wyświetlacz wrzucane były wartości odfiltrowane filtrem IIR (7+1)/8 dla ND130 i (15+1)/16 dla MS4525. Zmniejszenie szumu statycznego pomiaru powinno pozytywnie wpłynąć na jego dokładność. Po prostu jest mniejszy dylemat, którą ze zmieniających się cyfr wpisać do arkusza jako wynik pomiaru.

 

Tym razem uzyskałem taką charakterystykę:

Pomimo że na pierwszy rzut oka pomiar wydaje się lepszy niż poprzedni, to rozkład błędu wyszedł znacznie mniej intuicyjny. Znak błędu tym razem wyszedł ujemny. W okolicy zera nadal jest nieliniowość, ale sięgająca do trzeciego zakresu (60 mm), a nie piątego (100 mm) jak wcześniej. Czyli to nie tylko jest wpływ sił kapilarnych. Średnia wartość błędu to 80Pa, co odpowiada wysokości słupa wody wynoszącemu 8,1 mm. Jest wykluczone, żebym miał tak duży błąd pomiaru wysokości. Szacuję że łączne błędy paralaksy i oceny menisku, zwłaszcza w dolnym naczyniu nie przekraczają 2 mm.

Parametry katalogowe czujnika mówią, że dokładność to +-0,05% zakresu dla ND130 i +-0,25% zakresu dla MS4525. Przyjmując katalogowy zakres obu czujników, to dla średniej wartości 80 Pa otrzymuję błąd 1,07% dla ND130 i 1,16% dla MS4525. To znaczy, że coś jest nie tak z moją metodą. Żeby to ocenić potrzebny jest przyrząd o klasę lepszy, niż to, co udało mi się zestawić.

Jeżeli przeliczyć wartość błędu na jednostkę prędkości lotu, to otrzymamy wykres jak poniżej:

Dryft temperaturowy

Wskazania wielu czujników są zależne od temperatury. Warto wiedzieć jak bardzo temperatura wpływa na błąd wskazań. Pomiar został przeprowadzony przy okazji badań żyroskopów, więc zawiera tylko wbudowany czujnik ND130. Test polegał na wychłodzeniu autopilota w lodówce do ok 8°C, po czym został wyjęty i włączono rejestrację przez godzinę. Aby zmiana nie była zbyt szybka, autopilot był w otwartym niewielkim pudełku kartonowym, gdzie tworzył się naturalny zbiornik zimnego powietrza.

Czujnik wystartował ze wskazaniem ok. 8 Pa, po czym automatyczna procedura kalibracji przyjęła zastane ciśnienie jako zerowe. Temperaturę wygodniej było przedstawić jako przyrost od temperatury początkowej. Po tym teście widać, że wskazania płyną w funkcji temperatury ze współczynnikiem ok. 1/5 różnicy temperatury.

Jeżeli zmianę ciśnienia podzielimy przez zmianę temperatury, to wychodzi taki wykres. To poszerzenie początku wynika z małej różnicy między danymi. Na wykresie istotna jest wartość linii trendy wynosząca ok. 0,2 Pa\°C. Trudno wyciągać wnioski z przebadania jednego egzemplarza, ale ten przebadany, aż prosi się o korekcję wpływu temperatury obiecując dobre wyniki.

Skoro ktoś ładnie prosi, to niegrzecznie jest odmawiać, więc uległem i przy okazji badania innego czujnika dorzuciłem wyliczoną powyżej korektę temperaturową, aby sprawdzić jej skuteczność. Przy takiej samej zmianie temperatury dostałem odpowiedź jak na poniższym wykresie. Czujnik, zamiast płynąć do 5 Pa, dopłynął do ok. 0,8 Pa. Widać jeszcze pole do dalszej korekcji, ale to nie jest priorytet, więc na razie zostaje tak, jak jest.

Podsumowanie

To, co chciałem uzyskać, to informacja czy ten czujnik będzie się nadawał do pomiaru prędkości płatowca. Ponieważ w projekcie modułu mam błąd i muszę poprawić płytkę, więc chciałem, aby na docelowym module znalazł się zweryfikowany czujnik. Ponieważ katalogowo jest lepszy od obecnego lidera rynku, ma mniejszy szum, większą rozdzielczość i co ważne na rynku hobbystycznym — jest tańszy, to pomimo że jest większy i trudniejszy w montażu, to podejmuję decyzję że czujnik ten zostaje na module. Mam nadzieję, że za jakiś czas będzie można go zobaczyć w locie.