[PRZYKŁAD] P-NUCLEO-IKA02A1 – zestaw rozwojowy do współpracy z czujnikami gazów

Po wygenerowaniu szablonu projektu należy uzupełnić kod przykładu. Część kodu inspirowana jest paczką programową od firmy STMicroelectronics – X-CUBE-IKA02A1. Paczka dostępna jest za darmo po uprzedniej rejestracji.

W pierwszej kolejności należy dodać zmienne niezbędne w dalszej części programu. Najpierw inicjalizowane są zmienne, w których przechowywane są odczyty z przetwornika ADC. W kolejnych zmiennych przechowywane są obliczone dane dotyczące stężenia, temperatury i stężenia po kompensacji temperaturowej. W ostatniej linijce znajdują zmienne przechowujące wzmocnienie układu dopasowującego sygnał (można je zmienić zworką na nakładce) oraz czułość sensora.

W pętli głównej najpierw należy pobrać wartości z przetwornika ADC. Niestety w mikrokontrolerach z serii STM32L0 nie można użyć DMA w celu pobierania wielu kanałów przetwornika. W takim wypadku należy po każdym pomiarze zmieniać kanał zapisując numer kanału do rejestru CHSELR struktury hadc.Instance.

Dysponując próbkami można wyznaczyć stężenie gazu, temperatury otoczenia oraz dokonać kompensacji temperaturowej odczytu. Do wyliczenia stężenia i temperatury użyłem następujących wzorów pochodzących z paczki X-CUBE-IKA02A1.

Z tej paczki pochodzi także funkcja Get_comp_gas_concentration, której zadaniem jest kompensacja błędów odczytu sensora spowodowanych wpływem temperatury otoczenia. Jako argumenty należy podać uzyskane stężenie (bez kompensacji) oraz temperaturę otoczenia w formacie 8-bitowej zmiennej typu int.

Także do pliku main.h należy dodać tablicę zawierającą dane konieczne do kompensacji.

Poniżej znajduje się zrzut ekranu programu STMStudio prezentujący odczyt po kompensacji w zadymionym pomieszczeniu. W normalnych warunkach (wentylowane pomieszczenie, bez żadnych źródeł czadu) odczyt nie powinien przekroczyć ok. 3 ppm.

Rys. 4. Zrzut ekranu programu STM Studio demonstrujący działanie przykładu

Do pobrania

O autorze