Zabezpieczenie układu mikroprocesorowego przed zakłóceniami

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


Wyszukiwarka

Podobne podstrony:
Sposoby zabezpieczania transmisji danych przed zakłóceniami 1 wire
Jak zabezpieczyć własne strony przed pobieraniem ich programami do ściągania całych witryn, PHP Skry
Zabezpieczenia płyt DVD przed kopiowaniem
Techniki Zabezpieczania Systemu I Danych Przed Awarią
Jak zabezpieczyć swój komputer przed wirusami
Ćw1 Zabezp wzm oper przed nasyceniem doc
ZABEZPIECZENIE NARZĘDZI OGRODNICZYCH PRZED ZIMĄ
Przedstawienie wiadomości o zabezpieczeniach w instalacjach elektrycznych przed prądem przeciążeniow
zabezpieczenie portfela akcji przed spadkiem cen
Instrumenty zabezpieczajace przed ryzykiem w warunkach kryzysu ryzyko kursowe i opcje walutowe
21 Wykonywanie zabezpieczeń przed korozją biologiczną i działaniem ognia
Zabezpieczenie hardware przed dialerami
Pracownicze ubezpieczenia grupowe jako forma zabezpieczenia przed utratą wartości kapitału ludzkiego
Zabezpieczenie przed ssącym działaniem wiatru
03 zabezpieczanie przed zepsuci Nieznany (2)
Jak zabezpieczyć się przed przesiąkaniem gruntu
Lekcja6 Zabezpieczanie?nych przed utratą?nych

więcej podobnych podstron