Autor: Dondu
Twój mikrokontroler dziwnie się zachowuje?
- resetuje bez przyczyny
- reaguje na zbliżanie np. ręki do mikrokontrolera?
- pobiera zbyt dużo prądu?
- itp.
Jest wiele możliwych przyczyn niepoprawnej pracy mikrokontrolerów. Nie opiszę tutaj wszystkich możliwych a jedynie parę najważniejszych (inne niż niepoprawny program):
- źle filtrowane zasilanie
- nieużywane piny (nóżki mikrokontrolera)
- praca w zmiennym polu elektromagnetycznym (obok silnika, itp)
- praca mikrokontrolera i silnika lub przekaźników na tym samym zasilaniu
- wspólna masa z urządzeniem generującym duże zakłócenia
- dotykanie układu lub nóżek palcami - ulubione zajęcie nowicjuszy :-)
- cewki silników, przekaźników, itp.
Rys. Brudne zasilanie |
Stabilne zasilanie to absolutna podstawa. Bez tego daj sobie spokój z mikrokontrolerami. Sam mikrokontroler potrafi pobierać prąd rzędu kilkudziesięciu mA, a do tego dochodzą jeszcze inne układy zewnętrzne, które do niego podłączasz.
MIKROKONTROLER TAKŻE JEST ŹRÓDŁEM
ZAKŁÓCEŃ DLA SAMEGO SIEBIE !
mayekk
Zasilanie nie ma elementów filtracyjnych wskazanych w datasheetach. Uznałem, że przy prądzie rzędu 60-80mA nie powinno się nic dziać, ale nie pomyślałem, że sam PWM może (i najpewniej będzie) generował zakłócenia...
Zasilanie nie ma elementów filtracyjnych wskazanych w datasheetach. Uznałem, że przy prądzie rzędu 60-80mA nie powinno się nic dziać, ale nie pomyślałem, że sam PWM może (i najpewniej będzie) generował zakłócenia...
... tak bywa, ale ważne, że wnioski wyciągnięte zostały poprawnie.
Jak temu zapobiegać znajdziesz tutaj:
Tu sprawa jest bardzo prosta. Każdy niepodłączony i/lub niezaprogramowany pin jest antenką zbierającą zakłócenia.
Typowym objawem jest niekontrolowana reakcja mikrokontrolera na zbliżanie ręki lub innych przedmiotów do mikrokontrolera.
Typowym objawem jest niekontrolowana reakcja mikrokontrolera na zbliżanie ręki lub innych przedmiotów do mikrokontrolera.
Jeżeli nie potrzebujesz jakiegoś pinu sprawdź w dokumentacji Twojego mikrokontrolera co powinieneś z nim zrobić. A jeżeli nie znajdziesz takiej informacji to możesz zrobić jedną z tych czynności:
- zaprogramować pin jako wyjście i ustawić na nim 1 lub 0
- zaprogramować pin jako wejście i włączyć wewnętrzny rezystor pull-up lub podłączyć zewnętrzny np. 1kΩ
NIGDY NIE ZOSTAWIAJ NIEPODŁĄCZONYCH PINÓW NIE ZAPROGRAMOWANYCH !
Czasami układy narażone są na pracę w takim środowisku, na przykład w pobliżu silnika elektrycznego, czy spalinowego (łuk elektryczny na świecach), anten nadawczych, itp. To bardzo trudne środowisko i trzeba się nieźle napracować by zadaniu sprostać.
Dobrym antidotum jest ekranowanie układu i/lub przewodów w ostateczności stosowanie światłowodów. Więcej na temat ekranowania możesz znaleźć tutaj:
Ekranowanie aparatury elektronicznej
Ekranowanie aparatury elektronicznej - kopia PDF
Czasami takie zakłócenia przenoszą się przez wspólną masę, ale na to jest sposób - optoizolacja czyli transoptory - patrz pkt. 5.
4. Praca mikrokontrolera i silnika lub przekaźników na tym samym zasilaniu
Dobrą praktyką jest rozdzielanie zasilania mikrokontrolera od silników czy przekaźników, ze względu na to, iż są one wrednymi generatorami zakłóceń. Najprostrzym sposobem jest zastosowanie osobnych stabilizatorów dla zasilania mikrokontrolera, i osobny dla silników czy przekaźników. Wtedy nadal zasilanie pochodzi ze wspólnego źródła, ale układy osobno stabilizują napięcia dla poszczególnych elementów projektu.
Przykład stabilizatora opisałem tutaj: Zasilanie mikrokontrolera
ABY UKŁAD DZIAŁAŁ PRAWIDŁOWO MASY NA WYJŚCIACH STABILIZATORÓW MUSZĄ BYĆ POŁĄCZONE !
Brak połączenia mas to jedna z częstych pomyłek nowicjuszy, którzy na przykład silnik zasilają z transformatora, a mikrokontroler z portu USB.
Z tym tematem związane są:
5. Wspólna masa z urządzeniem generującym duże zakłócenia
Czasami zakłócenia są tak silne, że przenoszą się nawet przez wspólną masę. Wtedy najprostrzym sposobem jest rozdzielenie galwaniczne (elektryczne) układu mikrokontrolera od układu generującego zakłócenia np. silnika. Jak to zrobić?
Wystarczy użyć optoizolacji czyli najprościej mówiąc przesyłać sygnał za pomocą światła a nie prądu :-)
Rozdzielamy zasilania i nie łączymy mas razem.
Więcej o transoptorach napisałem tutaj: Transoptor
Dobrym antidotum jest ekranowanie układu i/lub przewodów w ostateczności stosowanie światłowodów. Więcej na temat ekranowania możesz znaleźć tutaj:
Ekranowanie aparatury elektronicznej
Ekranowanie aparatury elektronicznej - kopia PDF
Czasami takie zakłócenia przenoszą się przez wspólną masę, ale na to jest sposób - optoizolacja czyli transoptory - patrz pkt. 5.
Rys. Rozdzielanie zasilania |
Dobrą praktyką jest rozdzielanie zasilania mikrokontrolera od silników czy przekaźników, ze względu na to, iż są one wrednymi generatorami zakłóceń. Najprostrzym sposobem jest zastosowanie osobnych stabilizatorów dla zasilania mikrokontrolera, i osobny dla silników czy przekaźników. Wtedy nadal zasilanie pochodzi ze wspólnego źródła, ale układy osobno stabilizują napięcia dla poszczególnych elementów projektu.
Przykład stabilizatora opisałem tutaj: Zasilanie mikrokontrolera
ABY UKŁAD DZIAŁAŁ PRAWIDŁOWO MASY NA WYJŚCIACH STABILIZATORÓW MUSZĄ BYĆ POŁĄCZONE !
Brak połączenia mas to jedna z częstych pomyłek nowicjuszy, którzy na przykład silnik zasilają z transformatora, a mikrokontroler z portu USB.
Z tym tematem związane są:
Rys. Prawidłowo użyty transoptor |
Czasami zakłócenia są tak silne, że przenoszą się nawet przez wspólną masę. Wtedy najprostrzym sposobem jest rozdzielenie galwaniczne (elektryczne) układu mikrokontrolera od układu generującego zakłócenia np. silnika. Jak to zrobić?
Wystarczy użyć optoizolacji czyli najprościej mówiąc przesyłać sygnał za pomocą światła a nie prądu :-)
Rozdzielamy zasilania i nie łączymy mas razem.
Więcej o transoptorach napisałem tutaj: Transoptor
Przykład błędnego użycia transoptora:
6. Dotykanie układu lub nóżek palcami
To ulubione zajęcie nowicjuszy, po którym często piszą:
"Ratunku! Gdy dotykam pin mikrokontrolera on głupieje!!!"
Mikrokontrolery zbudowane są w technologiach o baaardzo niskim poborze prądu przez co są podatne na wszelkie zakłócenia np. z ładunków elektrycznych na skórze człowieka, czy rezystancji i pojemności skóry. Dlatego dotykanie pinów, a nawet samej obudowy prawie zawsze będzie generować zakłócenia w pracy mikrokontrolera.
A jest na to prosta rada: NIE DOTYKAJ ! Bo i po co?
MIKROKONTROLER MOŻE ULEC USZKODZENIU PODCZAS DOTYKANIA GDYŻ ŁADUNEK ZGROMADZONY NA PRZEDMIOCIE (SKÓRA CZŁOWIEKA, ŚRUBOKRĘT, ITP) MOŻE MIEĆ KILKADZIESIĄT TYSIĘCY WOLTÓW !!!
Więcej o zjawisku dowiesz się w Wikipedii: ElectroStatic Discharge (ESD)
Ale jeżeli chcesz to ryzykuj, jak to mówią górale o nauce jazdy na nartach:
"Jak sie nie wyrócis, to sie nie naucys".
7. Cewki silników, przekaźników, itp.
Cewki urządzeń indukcyjnych są generatorami tzw. szpilek (nagły wzrost napięcia na cewce), które powstają w momencie wyłączania cewki. Szpilki te mogą powodować nieprawidłową pracę i/lub uszkodzenia mikrokontrolerów, tranzystorów, itp.
Co z tym problemem zrobić?
Jest kilka rozwiązań, ale dla Ciebie najlepszym będzie dodatkowa dioda (lub diody) Schottky, w ostateczności zwykła prostownicza. Dioda powinna być podłączona jak najbliżej cewki.
Takie zabezpieczenie stosuje się także w przypadku silników DC. Więcej na ten temat możesz przeczytać tutaj:
8. Przeczytaj także
Rys. ŹLE, bo zasilanie i masa nadal są wspólne |
Rys. Nie dotykaj! |
To ulubione zajęcie nowicjuszy, po którym często piszą:
"Ratunku! Gdy dotykam pin mikrokontrolera on głupieje!!!"
Mikrokontrolery zbudowane są w technologiach o baaardzo niskim poborze prądu przez co są podatne na wszelkie zakłócenia np. z ładunków elektrycznych na skórze człowieka, czy rezystancji i pojemności skóry. Dlatego dotykanie pinów, a nawet samej obudowy prawie zawsze będzie generować zakłócenia w pracy mikrokontrolera.
A jest na to prosta rada: NIE DOTYKAJ ! Bo i po co?
MIKROKONTROLER MOŻE ULEC USZKODZENIU PODCZAS DOTYKANIA GDYŻ ŁADUNEK ZGROMADZONY NA PRZEDMIOCIE (SKÓRA CZŁOWIEKA, ŚRUBOKRĘT, ITP) MOŻE MIEĆ KILKADZIESIĄT TYSIĘCY WOLTÓW !!!
Więcej o zjawisku dowiesz się w Wikipedii: ElectroStatic Discharge (ESD)
Ale jeżeli chcesz to ryzykuj, jak to mówią górale o nauce jazdy na nartach:
"Jak sie nie wyrócis, to sie nie naucys".
7. Cewki silników, przekaźników, itp.
Cewki urządzeń indukcyjnych są generatorami tzw. szpilek (nagły wzrost napięcia na cewce), które powstają w momencie wyłączania cewki. Szpilki te mogą powodować nieprawidłową pracę i/lub uszkodzenia mikrokontrolerów, tranzystorów, itp.
Co z tym problemem zrobić?
Jest kilka rozwiązań, ale dla Ciebie najlepszym będzie dodatkowa dioda (lub diody) Schottky, w ostateczności zwykła prostownicza. Dioda powinna być podłączona jak najbliżej cewki.
Takie zabezpieczenie stosuje się także w przypadku silników DC. Więcej na ten temat możesz przeczytać tutaj:
8. Przeczytaj także
Może należałoby obok transpotora (izolującego galwanicznie sygnały) wspomnieć jeszcze o izolowanych przetwornicach DC/DC separujących zasilania (np. części analogowej od cyfrowej). Bo masa jakby nie było, samym transpotorem się nie oddzieli jesli zasilanie jest wspólne dla obu części układu.
OdpowiedzUsuńSP
W pkt. 5 gdzie który opisuje optoizolację, zaznaczyłem wyraźnie, że masy muszą być rozdzielone.
OdpowiedzUsuńJednakże, faktycznie warto wspomnieć o przetwornicach izolowanych i zapisuję ten temat do opracowania, ale wrzucę go raczej do tematu dot. zasilania mikrokontrolerów, a nie zakłóceń. Tutaj tylko wspomnę o tym.
Dziękuję za komentarz,
i pozdrawiam
Witam
OdpowiedzUsuńJa mam pytanie odnośnie zakłóceń, ale nie w mikrokontrolerach tylko ogólnie w układach scalonych. Szukam od dłuższego czasu w google, na elektrodzie i książkach które miałem w technikum o tym jak powinno wyglądać podłączenie układów scalonych z zastosowaniem filtracji zasilania, zapewnienia stanów logicznych na wejściach. Interesują mnie metody z szczegółowym opisem jak to w praktyce wykorzystać. Buduje już swój nie pierwszy układ w którym nie stosuję żadnej ochrony przed zakłóceniami bo zwyczajnie nie wiem jak jej dokonać od podszewki. Ten artykuł częściowo uzupełnił mą wiedzę. Proszę o linki lub konkretną pozycję w literaturze. Pozdrawiam.
Z literaturą to jest tragicznie.
OdpowiedzUsuńNajnowsza pozycja 1979r.
Henry W. Ott.
"Metody redukcji zakłóceń i szumów w układach elektronicznych".
Można zapolować na allegro.
Wiedza na ten temat jest rozproszona.
W wielu książkach o projektowaniu są jakieś małe rozdziały na ten temat.
Ale zwykle mało konkretne.
Raczej internet i tam poszukiwanie artykułów- głównie po angielsku.
Najlepiej szukać u producentów filtrów, kondensatorów przeciwzakłóceniowych itp.
Oni takie artykuły publikują bo to im nakręca sprzedaż.
Witam ponownie !
OdpowiedzUsuńWracając do tematu literatury dotyczącej zakłóceń w elektronice znalazłem ciekawą, kilkutomową pozycję:
"Zakłócenia w urządzeniach elektronicznych" autorstwa Alain'a Charoy'a. Wydawnictwo: Wydawnictwa Naukowo-Techniczne, rok 2000.
Książki nie posiadam, ale być może ktoś z was miał z nią styczność...
Pozdrawiam
W punkcie 4 pisze Pan:
OdpowiedzUsuń"Brak połączenia mas to jedna z częstych pomyłek nowicjuszy, którzy na przykład silnik zasilają z transformatora, a mikrokontroler z portu USB."
A w punkcie 5, że wspólna masa powoduje zakłócenia
To są dwa osobne przypadki - przeczytaj proszę dokładnie oba punkty.
UsuńWitam,
OdpowiedzUsuńzastanawiam się, czy mogę ustawić piny MISO, MOSI, SCK jako wyjścia w stanie niskim. Czy wtedy zaprogramuję procesor w ISP? To samo z pinami PinC.0 i PinC.1 Atmega32 - SDA i SCK, one są podciągnięte przez rezystor do zasilania, ponieważ używam zegara RTC po i2c (tych pewnie nie warto ruszać).
Witaj.
OdpowiedzUsuńPytając o możliwość ustawienia pinów jako wyjściowe i ustawienie na nich niskiego stanu (zero logiczne) masz oczywiście na myśli wykonanie tego za pomocą programu. W takim przypadku nie ma konfliktu z programatorem, ponieważ proces programowania rozpoczyna się od ustawienia przez programator niskiego stanu na linii RESET, co powoduje zresetowanie mikrokontrolera, w tym także jego portów.
W przypadku TWI (o który pytasz w dalszej części) także nie ma konfliktu, bo port z pinami SDA i SCL także zostanie zresetowany, a zewnętrzne rezystory pull-up ustalą odpowiednie poziomy sygnałów na tych liniach.
Czy wystarczająco dobrze wyjaśniłem?
Pkt.6. Ładunek wyraża się w kulombach [C], wolty [V] tyczą się natomiast napięcia.
OdpowiedzUsuń