Czujniki Pokładowe
Ten artykuł wprowadza czujniki zintegrowane z główną płytą CanSat NeXT. Użycie czujników jest omówione w dokumentacji oprogramowania, natomiast ten artykuł dostarcza więcej informacji o samych czujnikach.
Na głównej płycie CanSat NeXT znajdują się trzy czujniki pokładowe. Są to IMU LSM6DS3, czujnik ciśnienia LPS22HB oraz LDR. Dodatkowo, płyta ma otwór przelotowy do dodania zewnętrznego termistora. Ponieważ LPS22HB już posiada zdolności pomiaru ciśnienia i temperatury, teoretycznie wystarcza do spełnienia podstawowych kryteriów misji w zawodach CanSat. Jednakże, ponieważ mierzy temperaturę złącza wewnętrznego, czyli w zasadzie temperaturę PCB w tym miejscu, nie jest to dobre pomiar atmosferycznej temperatury w większości konfiguracji. Dodatkowo, absolutny pomiar czujnika ciśnienia może być wspierany przez dodatkowe dane z akcelerometru IMU. LDR został dodany przede wszystkim, aby pomóc studentom zrozumieć koncepcje dotyczące czujników analogowych, ponieważ reakcja na bodźce jest niemal natychmiastowa, podczas gdy termistor potrzebuje czasu na nagrzanie i ochłodzenie. To powiedziawszy, może również wspierać kreatywne misje, które studenci wymyślą, podobnie jak akcelerometr i żyroskop IMU. Ponadto, oprócz czujników pokładowych, CanSat NeXT zachęca do używania dodatkowych czujników poprzez interfejs rozszerzeń.
Jednostka Pomiaru Inercyjnego
IMU, LSM6DS3 firmy STMicroelectronics to urządzenie typu SiP (system-in-package) MEMS, integrujące akcelerometr, żyroskop i elektronikę odczytową w małym opakowaniu. Czujnik obsługuje interfejsy szeregowe SPI i I2C, a także zawiera wewnętrzny czujnik temperatury.
LSM6DS3 ma przełączalne zakresy pomiaru przyspieszenia ±2/±4/±8/±16 G oraz zakresy pomiaru prędkości kątowej ±125/±250/±500/±1000/±2000 deg/s. Użycie wyższego zakresu zmniejsza również rozdzielczość urządzenia.
W CanSat NeXT, LSM6DS3 jest używany w trybie I2C. Adres I2C to 1101010b (0x6A), ale w następnej wersji zostanie dodana obsługa modyfikacji sprzętu w celu zmiany adresu na 1101011b (0x6B), jeśli zaawansowany użytkownik potrzebuje użyć oryginalnego adresu do czegoś innego.
Zakresy pomiarowe będą domyślnie ustawione na maksimum w bibliotece, aby uchwycić większość danych z gwałtownego startu rakiety. Zakresy danych są również modyfikowalne przez użytkownika.
Barometr
Czujnik ciśnienia LPS22HB firmy STMicroelectronics to kolejny urządzenie typu SiP MEMS, zaprojektowane do pomiaru ciśnienia w zakresie 260-1260 hPa. Zakres, w którym raportuje dane, jest znacznie większy, ale dokładność pomiarów poza tym zakresem jest wątpliwa. Czujniki ciśnienia MEMS działają poprzez pomiar zmian piezorezystywnych w membranie czujnika. Ponieważ temperatura wpływa również na opór elementu piezo, musi być kompensowana. Aby to umożliwić, chip ma również stosunkowo dokładny czujnik temperatury złącza tuż obok elementu piezorezystywnego. Ten pomiar temperatury można również odczytać z czujnika, ale należy pamiętać, że jest to pomiar wewnętrznej temperatury chipu, a nie otaczającego powietrza.
Podobnie jak IMU, LPS22HB może być komunikowany za pomocą interfejsu SPI lub I2C. W CanSat NeXT jest podłączony do tego samego interfejsu I2C co IMU. Adres I2C LPS22HB to 1011100b (0x5C), ale dodamy obsługę zmiany go na 0x5D, jeśli będzie to pożądane.
Przetwornik Analogowo-Cyfrowy
Odnosi się to do pomiaru napięcia za pomocą polecenia analogRead().
12-bitowy przetwornik analogowo-cyfrowy (ADC) w ESP32 jest znany z nieliniowości. Nie ma to znaczenia w większości zastosowań, takich jak wykrywanie zmian temperatury lub zmian oporu LDR, jednak dokonywanie absolutnych pomiarów napięcia baterii lub oporu NTC może być nieco trudne. Jednym ze sposobów obejścia tego jest staranna kalibracja, która zapewni wystarczająco dokładne dane na przykład dla temperatury. Jednak biblioteka CanSat również dostarcza skalibrowaną funkcję korekcji. Funkcja implementuje korekcję trzeciego rzędu dla ADC, korelując odczyt ADC z rzeczywistym napięciem obecnym na pinie ADC. Funkcja korekcji to