Półprzewodnikowy detektor piorunów AS3935 i Kinetis L (na płytce FRDM-KL25Z)
W artykule omówiono aspekty dotyczące implementacji programowej czujnika AS3935 w systemie. Do stworzenia systemu testowego i demonstracyjnego posłużono się modułem z czujnikiem AS3935, płytką FRDM-KL25Z z mikrokontrolerem Kinetis L oraz zestawem AS3935 Demo Kit.
Układ AS3935 firmy Austria Microsystems to jedyne obecne na rynku jednoukładowe rozwiązanie umożliwiające wykrywanie piorunów. W pierwszym artykule dotyczącym tego czujnika opisany został opracowany przez producenta zestaw AS3935 Demo Kit. W drugim artykule omówione zostały aspekty dotyczące sprzętowej implementacji czujnika w systemie. W ramach trzeciego, zamykającego cały cykl artykułu pokazujemy jak obsłużyć ten czujnik za pomocą mikrokontrolera.
Platforma sprzętowa
Platforma sprzętowa tworząca system testowy i demonstracyjny składa się z trzech elementów. Pierwszym z nich jest moduł z czujnikiem AS3935. Wybrano do tego celu moduł MOD-1016 firmy Embedded Adventures. Drugim elementem platformy jest płytka z mikrokontrolerem. Jest to płytka FRDM-KL25Z z mikrokontrolerem Kinetis L. Ostatnim elementem platformy jest generator impulsów elektromagnetycznych, które pod względem charakterystyki są takie same jak impulsy elektromagnetyczne towarzyszące emisji pioruna. Rolę generatora tych impulsów pełni płytka Lightning Emulator należąca do zestawu AS3935 Demo Kit.
Aby mikrokontroler z płytki FRDM-KL25Z mógł się komunikować z czujnikiem z modułu MOD-1016, oba elementy systemu muszą zostać połączone interfejsem komunikacyjnym. Może to być interfejs I2C lub SPI, gdyż oba są zintegrowane zarówno w mikrokontrolerze Kinetis L, jak i czujniku AS3935. Wybrany został interfejs I2C. Schemat połączenia płytki FRDM-KL25Z i modułu MOD-1016 zaprezentowano na rysunku 1. Zdjęcie całej platformy sprzętowej pokazano na rysunku 2.
Rys. 1. Schemat połączenia płytki FRDM-KL25Z i modułu MOD-1016
Rys. 2. Zdjęcie wykorzystanej platformy sprzętowej
Tab. 1. Spis przyporządkowanych sobie wyprowadzeń FRDM-KL25Z i MOD-1016 wraz z opisem ich funkcji
Nazwa wyprowadzenia modułu MOD-1016 | Nazwa wyprowadzenia mikrokontrolera Kinetis L | Funkcja linii sygnałowej |
GND | GND | Masa (napięcie 0 V) |
SDA | PTC9 | Linia sygnału zegarowego interfejsu I2C |
SCL | PTC8 | Linia sygnału danych interfejsu I2C |
IRQ | PTB3 | Linia przerwania od czujnika AS3935 |
VCC | P3V3 | Zasilanie (napięcie 3,3 V) |
Budowa wewnętrzna układu AS3935
Schemat budowy wewnętrznej układu AS3935 pokazano na rysunku 3.
Rys. 3. Schemat budowy wewnętrznej układu AS3935 [1]
Omawianie tego schematu warto zacząć od bloku o nazwie AFE ( Analog Front End ), gdyż to od niego zaczyna się cały proces detekcji piorunów. Blok AFE poprzez wyprowadzenia INP oraz INN podłączony jest do zewnętrznego obwodu antenowego RLC. Antena ta odbiera z otaczającej przestrzeni fale elektromagnetyczne i zamienia je na sygnał elektryczny, który następnie przekazuje do AFE. Blok AFE odpowiada za wzmocnienie i zdemodulowanie tego sygnału.
Przetworzony przez AFE sygnał trafia do grupy bloków analizy. W nich zaimplementowany jest algorytm interpretujący sygnał. Pierwszy blok analizy to Signal Validation. Blok ten dokonuje oceny kształtu sygnału i na podstawie tej czynności określa źródło jego pochodzenia. Jeśli sygnał pasuje do wzorca, zostaje on zaklasyfikowany jako sygnał towarzyszący emisji pioruna. W przeciwnym wypadku sygnał zaklasyfikowany zostaje jako zakłócenie wygenerowane przez nieznane źródło. W obu przypadkach blok Signal Validation zgłosi przerwanie na wyprowadzeniu IRQ. Dodatkowo jeśli wynikiem klasyfikacji jest emisja pioruna, sygnał przekazywany jest do kolejnych dwóch bloków: Energy Calculation i Statistical Distance Estimation. Pierwszy z nich odpowiada za obliczenie wartości energii pioruna. Drugi natomiast na bazie danych statystycznych określa odległość czujnika AS3935 do czoła burzy.
Na działanie bloków analizy wpływ ma kilka dodatkowych bloków. Są nimi: Watchdog, Noise Floor Level Generation oraz Noise Floor Evaluation. Blok Watchdog monitoruje poziom sygnału na wyjściu modułu AFE i w przypadku przekroczenia określonej wartości tego sygnału aktywuje blok Signal Validation. Blok Noise Floor Level Generation na bazie sygnału wyjściowego z bloku AFE określa poziom szumu sygnału. Poziom ten jest porównywany z ustawioną dopuszczalną wartością progową szumu. Zadanie to realizuje blok Noise Floor Evaluation. Jeśli poziom zmierzonego szumu przekroczy wartość progową, Noise Floor Evaluation za pomocą bloku Signal Validation zgłosi przerwanie na wyprowadzeniu IRQ .
Trzy bloki schematu AS3935 odpowiadają za realizację komunikacji układu AS3935 ze światem zewnętrznym. Blok SPI to kontroler interfejsu komunikacyjnego SPI. Blok I2C to z kolei kontroler interfejsu komunikacyjnego I2C. Blok I2C_ADD pozwala zmienić adres układu AS3935 w magistrali komunikacyjnej I2C. Domyślny 7-bitowy adres czujnika firmy Austria Microsystems ma postać 0-0-0-0-0-a1-a0. Ustalając na wyprowadzeniu a1 i a0 poziom logiczny napięcia na wartość 0 lub 1 uzyskać można odpowiednio wartość 0 lub 1 bitów a1 i a0. Zatem możliwe do uzyskania wartości adresu i2C układu AS3935 to 0, 1, 2 lub 3.
Kolejny blok na schemacie układu AS3935 to Voltage Regulator. Jak łatwo się domyślić jest to regulator napięcia. W przypadku nieaktywnego regulatora napięcia (wyprowadzenie EN_VREG podłączone do masy) czujnik firmy Austria Microsystems może być zasilany napięciem o wartości od 2,4 do 3,6 V. Jeśli taki poziom napięcia nie jest w systemie dostępny, można aktywować zintegrowany w AS3935 regulator (poprzez podłączenie wyprowadzenia EN_VREG do ok. 5 V), który je wytworzy wewnątrz układu. W warunkach, gdy regulator napięcia jest włączony, układ AS3935 można zasilać napięciem o wartości od 2,4 do 5,5 V.
Na schemacie czujnika AS3935 obecne są również bloki sygnału zegarowego. Układ firmy Austria Microsystems wykorzystuje dwa zintegrowane oscylatory RC: SRCO (System RCO) oraz TRCO (Timer RCO). Pierwszy z nich generuje sygnał o częstotliwości 1,1 MHz, drugi natomiast o częstotliwości 32,768 kHz.
Ostatni nieomówiony dotychczas blok to Register. Reprezentuje on rejestry układu AS3935. Czujnik firmy Austria Microsystems dysponuje 50 8-bitowymi rejestrami, przy czym do konfiguracji i obsługi układu wykorzystywanych jest pierwszych 9 z nich, a więc są to rejestry umieszczone w pamięci układu od adresu 0x00 do 0x08. Mapę wszystkich rejestrów czujnika przedstawiono na rysunku 4. Opis pól rejestrów zamieszczono w tabeli 2.
Rys. 4. Mapa rejestrów układu AS3935 [1]