EMC mikrokontrolerów - metody sprzętowe i programowe
| TechnikaMikrokontrolery, będące częścią wielu różnych urządzeń, są narażone na wysokie i niskie temperatury, dużą wilgotność, udary mechaniczne oraz zaburzenia elektromagnetyczne. Dotyczy to nie tylko tych używanych w wojsku i w przemyśle, ale również w elektronice użytkowej i samochodowej - na przykład w systemach monitorujących ciśnienie w oponach samochodowych występują udary nawet rzędu kilku tysięcy g. Aby zmniejszyć wpływ ekstremalnych czynników na działanie mikrokontrolerów, stosuje się metody sprzętowe i programowe. W artykule przedstawiamy wybrane spośród tych, które poprawiają EMC (electromagnetic compatibility) mikrokontrolerów.
Kompatybilność elektromagnetyczna to zdolność urządzenia elektrycznego lub elektronicznego do prawidłowej pracy w obecności zaburzeń elektromagnetycznych w jego otoczeniu, równocześnie bez emisji takowych, które mogłyby zakłócić pracę innych urządzeń znajdujących się w pobliżu. Dany sprzęt charakteryzuje zatem zarówno odporność, jak i emisyjność. Normy w zakresie dopuszczalnych poziomów wartości tych wielkości określają odpowiednie standardy, na przykład PN-EN 50081-1 i PN-EN 50082-1.
Dobry projekt PCB to podstawa
W wymienionych normach wyszczególniono wymagania dotyczące odpowiednio emisyjności oraz odporności urządzeń elektrycznych i elektronicznych używanych w środowisku mieszkalnym, handlowym oraz lekko uprzemysłowionym. Obowiązujące standardy EMC odnoszą się do całych urządzeń. Ponieważ jednak dotychczas nie opracowano oddzielnych norm dla pojedynczych komponentów elektronicznych, wytyczne w nich zawarte są wiążące również dla projektantów obwodów z mikrokontrolerami.
Po zidentyfikowaniu głównych źródeł zaburzeń elektromagnetycznych w otoczeniu tych układów (m.in. wyładowań elektrostatycznych, linii zasilających, obwodów, w których przełączane są duże prądy i napięcia, fal radiowych), w samych układach (są to na przykład oscylatory, linie z sygnałem zegara, szybkie przełączenia sygnałów na wyjściach) i jego komponentów najbardziej na nie podatnych (m.in. zegar, bloki pamięci) podjąć można działania, które ograniczą ich emisję i skutki. Wiele zależy na przykład od projektu płytki drukowanej obwodu, którego częścią jest mikrokontroler. Aby był prawidłowy, przestrzegać należy kilku zasad.
Dobre praktyki
Zaleca się m.in. podzielenie komponentów na grupy, na przykład: analogowe, cyfrowe, zasilanie, emitujące silne zaburzenia oraz we/wy, a później rozmieszczenie ich z uwzględnieniem tej klasyfikacji, jak to pokazano na rysunku 1a. Najlepiej, gdy ścieżki przynależne do każdej z grup nie będą się przecinały, poza tymi, które je ze sobą łączą.
Dodatkowej uwagi wymagają obwody wysokoczęstotliwościowe. Te, z których sygnały będą wykorzystywane poza PCB, należy umieścić możliwie najbliżej obwodów we/wy (rys. 1b). Aby z kolei ograniczyć sprzęganie się sygnałów w.cz. generowanych na potrzeby danej PCB z obwodami we/wy, zaleca się ich fizyczne odseparowanie w odległości minimum 0,5 cm (rys. 1c).
Zgodnie z kolejną zasadą najlepiej skorzystać z wielowarstwowej płytki drukowanej z oddzielnymi warstwami masy i zasilania. Unikać trzeba również rozdzielania płaszczyzny masy - układ jak na rysunku 2a nie jest zatem zalecany. Jeżeli bowiem zostanie ona podzielona na części, a nad dzielącą je przerwą będą prowadzone ścieżki, prąd, ze względu na brak drogi powrotnej, popłynie w dużej pętli. Gdy jednak podziału nie da się uniknąć, obie części płaszczyzny masy należy połączyć w jednym miejscu. Prowadząc ścieżki nad tym ostatnim, uzyska się znacznie mniejszą pętlę prądową (rys. 2b).
Metody sprzętowe
Ponadto ścieżki sygnałowe na sąsiednich warstwach powinny być prowadzone względem siebie, o ile to możliwe, zawsze pod kątem prostym. Aby uniknąć sprzężenia sygnałów ścieżki, którymi płyną duże prądy z krótkim czasem narastania (poniżej kilkudziesięciu ns) muszą dzielić odpowiedni dystans od innych, prowadzonych do nich równolegle.
Linie masy i zasilania trzeba zawsze prowadzić równolegle (i obok siebie) lub, w wypadku, gdy znajdują się na sąsiednich warstwach PCB, jedna nad drugą. Ogranicza to obszar pętli prądowej (rys. 3). Ścieżek silnie promieniujących nie należy umieszczać w pobliżu tych doprowadzających zasilanie. Trzeba też pamiętać, aby linie sygnałowe, masy i zasilania były możliwie najkrótsze i najszersze.
Niezbędnym elementem zabezpieczającym sam mikrokontroler jest kondensator odsprzęgający, który stabilizuje napięcia zasilające ten układ. Jego pojemność powinna mieć odpowiednio dużą wartość, aby przyjąć, bez znaczącego wzrostu napięcia, pasożytnicze prądy płynące z mikrokontrolera przez wejściowe diody zabezpieczające. Najlepiej jest użyć co najmniej dwóch różnych kondensatorów, na przykład tantalowego i ceramicznego.
Inne sposoby
Unikać trzeba natomiast kondensatorów elektrolitycznych aluminiowych, ponieważ nie sprawdzają się w zakresie większych częstotliwości (powyżej około 10 MHz działają jak indukcyjność). Kondensatory odsprzęgające powinno się umieszczać możliwie najbliżej zacisku zasilania mikrokontrolera. Można również zastosować filtr LC jak na rysunku 4. Potencjalnie zagrożone są również pozostałe zaciski mikrokontrolera, zwłaszcza wejścia CMOS.
Aby zwiększyć ich odporność na zaburzenia elektromagnetyczne, warto dołączyć szeregowo do nich rezystor razem z kondensatorem o małej wartości połączonym z masą. Nieużywane we/wy nie powinny pozostać "niezagospodarowane", tzn. należy na nich ustawić stan wysoki lub niski (to dodatkowo zmniejszy pobór prądu). Dezaktywować trzeba również te bloki funkcyjne, które w danej aplikacji nie są wykorzystywane.
Jeżeli nie wymaga tego aplikacja, na przykład gdy nie ma potrzeby przetwarzania w czasie rzeczywistym, zawsze należy ustalać możliwie najmniejszą częstotliwość taktowania zegara. W przeciwnym wypadku warto przed wyborem konkretnego modelu mikrokontrolera sprawdzić, czy zastosowano w nim jakieś rozwiązania ograniczające emisję zaburzeń elektromagnetycznych z tego źródła.
Metody programowe
Zaburzenia z zewnątrz mogą w różny sposób zakłócać przebieg programu wykonywanego przez mikrokontroler. Czasem przestaje on w ogóle reagować, innym razem wykonuje instrukcję błędnie lub wywołuje nieodpowiednią metodę. Występują również problemy z adresowaniem, nieuzasadniony reset lub wywołanie przerwania. Wdrażając poniższe rozwiązania programowe, można zapobiec takim sytuacjom, a przynajmniej zmniejszyć ich dokuczliwość dla użytkowników.
Podstawowym zabezpieczeniem jest watchdog, który generuje sygnał resetu w momencie, gdy wykryje stan zawieszenia mikrokontrolera. Aby w pełni wykorzystać jego potencjał, należy aktywować watchdog tak szybko, jak to tylko możliwe, tzn. zaraz po resecie albo wykorzystać watchdog sprzętowy, jeżeli jest dostępny.
Ponadto, jeżeli część pamięci mikrokontrolera pozostaje niewykorzystana, warto, jako dodatkowe zabezpieczenie, zapisać w niej kod, który wymusi reset przez watchdog lub przejdzie do określonej instrukcji, jeśli reset nie jest pożądany. Dzięki temu, nawet jeżeli licznik rozkazów zadziała błędnie, mikrokontroler się nie zawiesi. Oprócz tego wszystkie niewykorzystywane przerwania powinny w procedurze ich obsługi mieć ustawiony powrót do głównej funkcji programu. Na dużych blokach danych warto z kolei zawsze sprawdzać sumę kontrolną lub CRC. Najlepiej też dzielić je na mniejsze części, stosując to samo zabezpieczenie.
O czym jeszcze warto pamiętać?
Aby zmniejszyć wpływ zaburzeń z zewnątrz na jakość konwersji analogowo-cyfrowej można ją powtórzyć kilkukrotnie, za każdym razem jej wyniki zapisując w pamięci RAM. Następnie te ostatnie należy uśrednić lub wybrać spośród nich wartości powtarzające się najczęściej.
Warto pamiętać, że zdarzenia takie jak niespodziewany reset, awaria licznika rozkazów albo nieuzasadnione przerwanie, które są najczęstszymi skutkami zaburzeń z zewnątrz, nie wpływają na zawartość pamięci RAM. Można ją zatem wykorzystać do zapisu najistotniejszych danych, które będą przechowywane, o ile w sytuacji awaryjnej nie zostanie wyłączone zasilanie. Jeżeli dostępna jest pamięć EEPROM, tym lepiej, bo informacje te zostaną utrwalone nawet w razie odłączenia zasilania (trzeba jednak pamiętać, że w wypadku tej pamięci czas zapisu jest dłuższy).
Dobrą praktyką jest również sprawdzanie na początku wykonywania programu źródła resetu. Taka informacja jest zwykle zapisywana przez ustawienie odpowiedniej flagi we właściwym rejestrze. Dzięki takiemu rozróżnieniu, w razie potwierdzenia, że reset spowodowany jest zaburzeniem z zewnątrz, można uniknąć czasochłonnego i złożonego kompletnego wznawiania programu.
Monika Jaworowska
W artykule wykorzystano informacje udostępnione w Internecie przez firmy Atmel, NXP i STMicroelectronics.