background image

Zabezpieczenie układu mikroprocesorowego przed 

zakłóceniami

 

 

Zebrane z pl.misc.elektronika wypowiedzi stałych i doświadczonych grupowiczów. Teksty są 
poskracane, nieco zmodyfikowane i pogrupowane. Oryginalnych tekstów należy szukać w 
archiwum grup dyskusyjnych, np. 

groups.google.com

 

Absolutne podstawy:

 

1.  Kondensator 100nF (ceramiczny monolityczny) blokujący zasilanie przy każdym 

scalaku, jak najbliżej wyprowadzeń zasilania 

2.  Kondensator _tantalowy_ (nie elektrolit) kilkadziesiąt uF między VCC a GND (jeden 

w układzie) - nawet gdy układ zasilany jest z baterii 

3.  Prawidłowo zaprojektowana płytka - mała impedancja masy, czyli jak największa 

powierzchnia, grube i krótkie ścieżki masy (impulsy prądowe powodują spadki napięć 
w masie). Staraj się wszystkie zasilania wyprowadzać z jednego punktu, unikaj 
długich szyn zasilających. Ale nie zawsze zbieranie się wszystkich w miejscu 
podłączenia do kondensatora "zasilającego" da największe tłumienie zakłóceń. 

4.  Możliwie krótkie połączenia grubymi ścieżkami, nie prowadzenie w pobliżu 

równolegle ścieżek sygnałowych obok ścieżek mocy z dużymi impulsami. Otaczanie 
ścieżek sygnałowych szczególnie wrażliwych (np. sygnał analogowy do przetwornika 
AC) masą z obu stron na płaszczyźnie PCB 

5.  Przy przetwarzaniu sygnałów o małych poziomach napięć ekranowanie wrażliwych 

miejsc projektu (lub cały projekt). Od strony elementów puszka z blachy połączona z 
masą, po stronie przeciwnej może być jednolita powierzchnia masy - płytka 
dwuwarstwowa przy montażu SMT. 

6.  Prawidłowo zaprojektowana płytka nawet w cyfrówce: wyjścia daleko od wejść 

(impulsy szkodzą np. wywołanie niezamierzonego przerwania) 

7.  Nie zostawiaj niepodłączonych wejść, zwłaszcza dla układów scalonych w technologi 

CMOS. Podłącz je do GND, do VCC lub do wyjść innych bramek. Dla 
mikrokontrolerów: jeśli ich nie używasz zdefiniuj jako wyjścia albo uziem (w '51 do 
VCC) 

8.  Dopasowanie peryferii. Nie stosować serii CMOS 4000 dla 5V za wolna czasami lubi 

się zatrzaskiwać. W ostateczności seria HCT i HC najpewniejsza TTL LS (większy ale 
za to stały pobór prądu). Uwaga dla dużych częstotliwości (>5MHz) HCT i HC może 
pobierać więcej prądu niż TTL LS. 

9.  Pewny układ RESETu procesora. Wskazany kontroler napięcia zasilającego 

wystawiający RESET procesorowi połączony z watchdogiem (jakiś Dallas, Maxim 
czy Analog Devices), w ostateczności układ RCD dostosowany do danego procesora. 
Nie zostawiać pinu RESETu niepodłączonego - nawet w AVR'ach. 

Inne wskazania:

 

1.  Oscylator ściśle wg katalogu. pewne kondensatory w jego obwodzie. Inaczej nie ma 

pewności że czasami nie bzyknie na harmonicznej przekraczającej możliwości 
procesora. Osobiście przekonałem się do rezonatorów piezoelektrycznych 
zintegrowanych z kondensatorami. Mniejsze, tańsze a kondensatory blisko rezonatora. 

background image

Oczywiście nie dla precyzyjnego pomiaru czasu. Najlepszy jest oddzielny generator 
sygnału zegarowego. Jednak ze względu na rozmiary nie zawsze jest miejsce dla 
niego. 

2.  Niektóre procesory mają zabezpieczenie przed zanikiem napięcia np. przechodzą do 

specjalnego przerwania albo resetu przy spadku do 4,5V. Przy tradycyjnym 
stabilizatorze 7805 ew. 78L05 minimalne napięcie po stronie prostownika to 8V. 
Należy zwrócić uwagę czy nie występują tętnienia powodujące chwilowe spadki 
poniżej 8V. Sprawdź czy wszystkie diody w mostku pracują czy przypadkiem nie 
masz prostowania jednopołówkowego. Czasami stabilizatory generują drgania. 
Dobrze jest na wyjściu stabilizatora dać 100nF. 

3.  Zadbanie o szybkie rozładowanie do zera kondensatorów zasilających po odcięciu 

zasilania (np. sieciowego). Zasilanie ma trzymać jak może najdłużej, a jak już musi 
puścić - to szybko. Dlatego daję duży przed przed stabilizatorem, a za nim jak 
najmniejszy. Sporadycznie dokładam więcej (jak wiem, że coś szarpie). Równolegle z 
zasilaniem za stabilizatorem tak z 470 do 1k dla VCC=5V spokojnie wystarcza 
(chodzi przecież o rozładowanie resztek zasilania). 

4.  Jeżeli do Twojego urządzenia masz podłączone długie przewody (oprócz zasilania) 

podłącz im w szereg po 20 Ohm. Stłumi to ew. rezonanse na LC przewodu mogące 
występować przy przełączaniu impulsów. 

5.  W skrajnym wypadku przy stosowaniu przewodów długich odtłumienie ich niewiele 

pomoże np. dobry odkurzacz to ok. 1kW. Ale w momencie startu bierze moc nawet 
siedmiokrotnie większą. Taki impuls generuje falę a Twoje przewody są anteną czyli 
leci przez powietrze. Filtry w zasilaniu tutaj niewiele pomogą. Zastosuj ekranowanie 
lub lepiej separację optyczną na transoptorach. Najskuteczniejszym i najtańszym 
rozwiązaniem jest zasilanie z bateryjki (impuls przechodzi przez pojemności 
uzwojenia transformatora). 

6.  Wszystkie sygnały wychodzące czy przychodzące do sterownika - optoizolować. 

Optoizolacja nawet przekaźnika wykonawczego (właściwie tylko jego sterowanie, 
zasilanie przekaźnika sprzed stabilizatora). Niekoniecznie w każdym przypadku, ale 
wskazane przy przełączaniu dużych mocy. 

7.  Zgaszenie iskier na stykach przekaźników, na sucho nic się nie dzieje, ale gdy 

sterujesz w szczególności indukcyjnościami, dzieją się straszne rzeczy 

8.  Podłączenie równolegle do styków przekaźnika kondensatora - ogranicza to stromość 

zboczy oraz transila - ogranicza to amplitudę impulsów zakłócających 

9.  Przy przełączaniu napięć przemiennych stosowanie układu gasikowego 100nF/630V 

w szereg z opornikiem 100 Om (2W) równolegle do styków przekaźnika 

Dodatkowe propozycje układowe:

 

1.  Na zasilaniu 230V kondensator przeciwzakłóceniowy, taki jak w odkurzaczu 

(zbudowany podobnie jak kondensator przepustowy) 

2.  Od strony 230V dławiki (perły + 3 zwoje na każdą żyłę) i 0.15uF/250V AC (klasy X2) 
3.  Na każdej fazie układ gasikowy: kondensator ok. 100nF/630V w szereg z opornikiem 

56 Om (5W) do masy (raczej zera sieci). 

4.  Za stabilizatorem pi-filtr: dławiki na + i GND (4.7mH), 470u plus 100nF lub: 
5.  Bifilarnie dławik z VCC i GND (ale uwaga: przy szarpaniach prądu będą chwilowe 

spadki napiec, wiec trzeba dać pojemność od strony układu). 

6.  Bardzo korzystna jest jakaś listwa, powierzchnia, choćby gruby kabel czy pręt masy. 

Coś na kształt szyny wyrównawczej. Nie zawsze masa z PCB wystarczy - np. przy 

background image

przełączaniu dużych mocy 230V, gdzie z tego samego zasilania jest brane zasilanie 
sterownika. Wszystko w jeden _masywny_ punkt (przewody grube, krótkie). 

7.  Zakłócenia mogą wchodzić przez zasilanie. Połączenie szeregowe dwóch 

stabilizatorów liniowych na 12V i na 5V a między nimi dać pojemność rzędu 
2200...4700uF z małym ESR. Taki system ma tłumienie zakłóceń wejścia rzędu 
140dB (teoretycznie rzecz jasna) i powinien wystarczyć o ile zakłócenia nie indukują 
się w doprowadzeniach (sygnałów) i w ogóle w przewodach połączeniowych. 

8.  Układy 7805 mają maksymalne napięcie pierwotne 40V, zakłócenia mogą przez nie 

przechodzić. Jest specjalna wersja "samochodowa" takich stabilizatorów, ale możesz 
zastosować na wejściu dodatkowy stabilizator równoległy z opornikiem i mocną 
zenerką, o napięciu powyżej zasilającego, ale poniżej 40V 

9.  W ostateczności użyj metalowej obudowy urządzenia 

O samym mikrokontrolerze:

 

1.  Odp. "prowadzenie" programu procesora - tak aby nie było w nim rożnych martwych 

pętli, łatwych do zawieszenia programu, a raczej programowanie typu "wejdź, 
wykonaj, wyskocz do następnego zadania". A także nie żałować pewnej 
nadmiarowości kodu związanej z inicjalizacjami zmiennych (gdy po zakłóceniu 
wartość zmiennej pójdzie w maliny - ten fragment kodu przywróci jej odp. wartość). 
Jeśli chodzi o same zmienne - jeśli jest dostępna odp. ilość RAM'u procesora, to nie 
żałować go i dawać zmienne dla każdej procedury oddzielnie. Stosowanie tych 
samych zmiennych czy rejestrów w rożnych procedurach wymaga bardzo uważnego 
programowania, tak aby jedna procedurka nie zamazała wartości zmiennej w innym 
czasie. Dodatkowo - jeśli układ jest przeznaczony do pracy ciągłej, to pewne 
kluczowe dane powinny być trzymane w nieulotnej pamięci, tak aby nawet po resecie 
czy zaniku napięcia dane te nie odleciały - np. w EEPROM'ie czy RAM'ie 
podtrzymywanym bateryjnie - np. często spotykanym w układach RTC. Ale 
generalnie - inicjalizacje zmiennych przed wywołaniem procedury (za każdym razem, 
a nie tylko raz - podczas ogólnej inicjalizacji procesora i otoczenia po resecie) dają 
program "samo naprawiający", gwarantujący poprawne wartości zmiennych za 
każdym wywołaniem procedury. 

2.  Upewnij się, że wina na pewno nie jest po stronie procesora, to że się nie "wykłada", 

nie oznacza, że wszystko jest ok. Jeśli ten procesor to 51 albo podobny z kiepską 
wydajnością prądową portów, podciągnij je do +5V drabinkami np. 4k7 

3.  Zastosowanie procesorów Harvard o rozdzielnej przestrzeni adresowej programu i 

danych a jeszcze lepiej o prawie wszystkich poleceniach jednowyrazowych (takie jak 
PICe, AVRe) zwiększa niezawodność ponieważ nie ma możliwości, że procesor 
potraktuje dane jak program. 

4.  Odkłóć dobrze procesor od przekaźników, dobrze jest zastosować bufory w postaci 

dodatkowych bramek, tranzystorów itp. 

5.  Upewnij się, że masa na płytce nie tworzy meandrów zbierających zakłócenia jak 

antena. Ścieżki masy powinny być szerokie, krótkie dobrze przemyślane; to samo +5V 

 

Wyświetlacz LCD (HD44780)

 

 

Wyświetlacza LCD 2x16 użyłem w sterowniku pewnego urządzenia przemysłowego. Nad 
projektem pracowałem kilka miesięcy, w czasie ostatecznych kilkudniowych testów u mnie 

background image

w domu wszystko działało bardzo dobrze. Jednak przy podłączeniu mojego sterownika do 
urządzenia docelowego zaczęły się kłopoty. Wyświetlacz co jakiś czas pokazuje bzdury - 
na ekranie pojawia się ciąg przypadkowych znaków, których nie powinno być. 
Zauważyłem że dzieje się tak wówczas, gdy mój sterownik załącza pompę lub 
elektrozawór czyli źródła dość dużych zakłóceń elektrycznych - średnio na 1 z 5 włączeń 
przekaźnika wyświetlacz pokazuje bzdury. Nie jest to wada mojego programu na uC AVR, 
bo przy takim "psuciu" się wyświetlacza program działa poprawnie i procesor realizuje 
kolejne fragmenty programu. Co robić? W zasilaczu dałem 2200u i 100n, a za 
stabilizatorem LM7805 - 100u i 100n. Wyświetlacz podłączony jest z prockiem poprzez 
złącze goldpin i krótkimi ścieżkami o długości ok. 5cm. Przy zasilaniu uC dałem 100u i 
100n, a przy wyświetlaczu 100n. Jednak na nic się to zdało i wyświetlacz nadal pokazuje 
bzdury. Kiedy przyniosłem swój projekt ponownie do domu i podłączyłem wszystko działa 
super i nic się na ekranie nie psuje.

 

-odświeżać ekran kilka razy na sekundę 
-sterować obciążeniem indukcyjnym za pomocą optotriaków włączanych w zerze 
-zasilanie przepuścić przez filtr LC 

Programowe odświeżanie wyświetlacza. 
W 10 czy 20mS po załączeniu i wyłączeniu dowolnego przekaźnika odśwież zawartość 
wyświetlacza. Jeżeli nawet pojawią się krzaki to nikt nie zdąży ich zauważyć. Te kilkanaście 
milisekund opóźnienia w odświeżaniu potrzebne jest na zgaszenie luk na stykach przekaźnika 
(najlepiej układem RC - 100omow + 100n równolegle do styków). 

 

Inne

 

 

Czy ze wzrostem częstotliwości pracy rośnie prąd pobierany z zasilania?

 

Ogólnie rzecz biorąc - TAK. Układy CMOS w biorą szczątkowy prąd zasilania w stanie 
spoczynkowym. Natomiast przy przełączaniu bramki CMOS występuje krótki odcinek kiedy 
przewodzą oba tranzystory (pmos i nmos) co objawia się szpilką prądu pobieranego z 
zasilania. Do tego dochodzi prąd potrzebny na przeładowanie pojemności bramkowych i 
pojemności montażowych. Średni prąd zasilania cmos jest prawie liniowo zależny od 
częstotliwości przełączania (niekiedy nachylenie ch-ki zasilania podaje się jako parametr 
katalogowy [mA/MHz] ). - układy bipolarne (tudzież nmos. pmos itp.) biorą znaczny prąd 
spoczynkowy ale w mniejszym stopniu zależny od częstotliwości. Np. w układach ECL 
pobierany prąd nie zależy od stanu bramki (ale za to wymagają porządnej elektrowni) (Swoją 
drogą - czy jeszcze się gdzieś używa ECL-i ? W GaAs?) 

 

Czy na liniach zasilających układy cyfrowe powinno się montować kondensatory blokujące 
(w celu filtracji zakłóceń przenikających z układu zasilania)?

 

Przede wszystkim w celu zmniejszenia impedancji zasilania. Układy cyfrowe pobierają prąd 
zasilania z postaci krótkich szpilek o dużej amplitudzie - czyli bogatych w składowe w.cz. 
Jeżeli źródło zasilania ma zbyt dużą impedancję to zakłócenia impulsowe nakładają się na 
napięcie zasilania zaburzając pracę układu. Jako typowe można przyjąć, stosowanie np. 
100nF / kość (ceramika ferroelektryczna!). Poza tym oczywiście, zakłócenia zlikwidowane w 
miejscu powstawania nie rozłażą się po całym układzie i otoczeniu. 

background image

 

Literatura:

 

 

archiwum grupy dyskusyjnej: pl.misc.elektronika 

 

"Zakłócenia w aparaturze elektronicznej", Pr. zbiorowa; Radioelektronik sp. z o.o.; 
Warszawa 1995 ISBN 83-85891-01-3 

 

http://www.infineon.com/cmc_upload/0/000/011/171/ap242602_EMC_DesignGuideline.pd
f