logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[atmega8] Zakłócenia w układzie Atmega8 i Atmega168 przy włączaniu światła

thral666 06 Lis 2011 19:15 4291 31
Najlepsze odpowiedzi

Jak usunąć zawieszanie i resety ATmega8/ATmega168 wywoływane przez zakłócenia przy włączaniu światła, mimo zasilania z baterii i połączenia płytek długą skrętką?

W praktyce problem rozwiązało dołożenie porządnej filtracji zasilania i odfiltrowanie linii przerwań — po dodaniu 47uF przy VCC i na wyjściu 7805 oraz rezystora 10k z kondensatorem 33pF na wejściach zakłócenia od światła zniknęły [#10118194][#10114257][#10110417] Na długich przewodach do wejść procesora warto dać szeregowy rezystor i mały kondensator do masy albo całkiem odseparować je transoptorami; 5 m przewodu do przerwań to zły pomysł [#10110417] Najlepiej w ogóle zrezygnować z osobnych przewodów do wywoływania przerwań i obsługiwać komunikację samym UART/RS232, a jeśli chcesz większej odporności na zakłócenia, użyć RS485 z transceiverem typu 75176 i przerwaniem RXC po stronie odbiornika [#10111316][#10118825][#10120102] Na każdej płytce trzeba mieć 100nF możliwie blisko VCC/AVCC/AREF oraz dodatkowe elektrolity 10–47uF przy zasilaniu, także przy LCD i przy 7805 na wejściu i wyjściu [#10114257][#10118243][#10119964] Jeśli przewód idzie blisko 230VAC, pomaga kabel ekranowany oraz poprawne prowadzenie masy i większe pola masy na PCB [#10114802][#10118910]
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
  • #1 10109815
    thral666
    Poziom 11  
    Posty: 32
    Ocena: 4
    Witam.

    Mam duży problem z układem na dwóch atmegach 8 i 168. Jedna płytka pełni rolę panelu operatora, druga płytki wykonawczej. Obie płytki zasilane zasilaczem sieciowym, stabilizowanym 12V, każda mega zasilana z układu LM7805. Obie połączone za pomocą portu RS-232. Układy podpięte według wskazówek znalezionych na elektrodzie. Kondensatory na VCC, AVCC, AREF, pin reset do opornika 10k i do VCC, programowo nieużywane porty skonfigurowane na wyjściowe i ustawione na nich stany wyjściowe. Między płytkami idą jeszcze 2 przewody dzięki którym mogę generować przerwania między nimi.

    Problem polega na tym, że włączenie światła w pomieszczeniu w którym znajduje się jedna z płytek powoduje zawieszenie procesora i jego reset przez układ watchdog.

    Najgorsze jest to, że nawet na próbę zasiliłem oba układy z baterii 12V, czyli całkowicie były odseparowane od sieci a i tak przy włączeniu światła jeden z procesorów się zawiesza i resetuje.

    Dodam, że płytki połączone są ze sobą zwykłą skrętką komputerową o długości około 5m.

    Może ktoś coś wymyśli :P bo już nie wiem co robić.
  • #2 10109869
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2205
    Na 5m ma się co indukować. Odseparuj te linie transoptorami, lub doraźnie daj szeregowy rezystor i kondensator, np. 330R i 10nF.
  • #3 10110034
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Zrób to co poradził kolega wyżej ale dobrze byłoby też pokazać jednak tutaj dokładnie schemat a może nawet same płytki - jak wygląda PCB. Bo już nie raz widziałem niestety :( jak ktoś na schemacie pododawał kondensatory jak pisał - a na płytce PCB była hmmm masakra z ich umiejscowieniem chociażby. Poza tym napisałeś że wszędzie dałeś kondensatory zgodnie z zaleceniami - ale nie napisałeś jakie? ... tak by można było jeszcze długo się dopytywać a tymczasem jeden prosty schemat wszystko by wyjaśnił w 5 sekund każdemu - no i powód tego co się u ciebie dzieje łatwiej i szybciej byłoby znaleźć.
  • #4 10110079
    thral666
    Poziom 11  
    Posty: 32
    Ocena: 4
    Doraźnie czyli?? Nie ukrywam, że elektroniką zacząłem się interesować kilka lat temu bo znudziło mi się pisanie programów tylko na kompa :) dużo umiem ale wiem, że uczyć się nowych rzeczy będę całe życie :D:D

    A czy np. zastosowanie przewodów z ekranem coś by pomogło?? Zastanawiałem się czy mój problem właśnie nie tkwi w sposobie połączenie tych procesorów. Spróbuję jeszcze je rozpiąć i zobaczyć czy występują jakieś zakłócenia w momencie kiedy pracują osobno.

    Schemat dodam tylko nie mam obecnie dostępu do kompa. Kondensatory przy Aref, Avcc i Vcc dodałem ceramiczne wszystkie po 100nF, kondensatory przy kwarcy po 33pF i wszystkie dolutowane do samego procesora czyli bliżej się nie dało. (gdzieś znalazłem info, że mają być jak najbliżej)

    A jeszcze co do długości przewodów. Wcześniej miałem jeden sterownik, który mierzył temperaturę poprzez LM35 na takiej samej długości przewodów (3 przewody od LM teraz wykorzystałem te same) i nic się nie zawieszało ani nie resetowało jak tylko zamiast samego LM35 dodałem 2 płytkę wykonawczą to pojawił się problem zawieszania.
  • #5 10110211
    janbernat
    Poziom 38  
    Posty: 3954
    Pomógł: 468
    Ocena: 51
    Jak to trzy przewody?
    Skrętka ma cztery pary przewodów i i to które przewody są parami wykorzystane ma znaczenie.
    Oczywiście użycie skrętki w ekranie może zmniejszyć odbierane zakłócenia.
  • Pomocny post
    #6 10110417
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2205
    Z LM35 sytuacja jest trochę inna, bo impedancja wyjścia tego układu jest niewielka i może on zbijać zakłócenia. W każdym razie ten układ przejmie większą część energii zakłócenia. Wejścia procesora z kolei mają impedancję ogromną, rzędu GOmów, więc niewielka energia zakłócenia może wyindukować spore napięcie. W każdym razie, niezależnie od sytuacji, podłączanie wielometrowych przewodów do wejść procesora jest pomysłem złym. Ekran pewnie pomoże, na ile to zależy od innych czynników. Daj szeregowo rezystor np. 10kOm i równolegle do macy mały kondensatorek i sprawdź czy pomogło.
  • #7 10110590
    janbernat
    Poziom 38  
    Posty: 3954
    Pomógł: 468
    Ocena: 51
    Zakłócenia nie są dziwne- po prostu są.
    Trzeba zrobić pętlę prądową- albo coś w rodzaju pętli.
    Chodzi o zmiejszenie impedancji odbiornika- nadajnik zwykle ma małą.
    Wtedy zakłócenia powodują mniejsze napięcia.
    Jeśli transmisja jest jednokierunkowa to wystarczy po stronie odbiornika- tam gdzie ma wystąpić sygnał przerwania dać opornik między wejście a masę.
    Jaki- jeśli z nadajnika można pobrać np. 10mA bez znaczącego spadku napięcia to przy odbiorniku można dać 5V/10mA== 510ohm .
    Wtedy nawet kondensator może być niepotrzebny.
  • #8 10110726
    Fredy
    Poziom 27  
    Posty: 915
    Pomógł: 117
    Ocena: 28
    thral666 napisał:
    Między płytkami idą jeszcze 2 przewody dzięki którym mogę generować przerwania między nimi.


    myślę że to właśnie jest twoim problemem. Skoro łączysz oba układy RSem to po co ci jeszcze jakieś przewody do wywoływania przerwań? Sam RS może przecież wytworzyc przerwanie , a wtedy w procedurze obsługi możesz zdekodować jaki znak nadszedł i robić sobie co chcesz.

    Odłącz na próbę te kabelki od przerwań i zobacz czy problemy ustały.

    Spróbuj jeszcze :
    1) obniżyć prędkość transmisji
    2) wprowadz sumę kontrolną
    3) włącz watchdoga.
  • #9 10111248
    thral666
    Poziom 11  
    Posty: 32
    Ocena: 4
    Więc tak.

    Cytat:
    Skoro łączysz oba układy RSem to po co ci jeszcze jakieś przewody do wywoływania przerwań?


    Pewnie dlatego, że na tyle ile umiem obsługiwać RS tak sobie radzę :P ogólnie miałem taką wizje, żeby oba układy pracowały normalnie w spoczynku bez siebie. Na panelu np mam godzine, a na tym drugim układzie temperature odczytaną z LM35. A przerwania miały służyć do tego, żeby wtedy kiedy jeden albo drugi układ potrzebował informacji od drugiego wyzwolił w nim przerwanie za pomocą którego wykonuje wysłanie info, a dokładnie ciągu 5 znaków 1 lub 0.

    Możliwe że nie do końca też dobrze mam obsłużone przerwanie. Na portach INT0 utrzymuje stan wysoki i przerwanie wyzwalam stanem niskim. może tu jest coś źle. Porty te nie są podciągnięte rezystorami do Vcc tylko programowo mają stan wysoki.

    Ogólnie komunikacja przebiega prawidłowo, czasami jakiś błąd się wtargnie ale maksymalnie trzeba 2 razy to samo wysłać, żeby prawidłowo odebrać dane. Ale czy przez to wieszał by mi się jeden z okładów. Watchdoga mam bo właśnie dlatego wiem, że się zawiesza jeden układ. Na wyświetlaczu coś się tam dziej, zapalam światło i nagle widzę, że układ stoi 2000ms później układ startuje od nowa (na 2000 mam ustawiony licznik watchdoga)

    Chyba, że skorzystać z magistrali SPI ??

    Cytat:
    Jeśli transmisja jest jednokierunkowa to wystarczy po stronie odbiornika- tam gdzie ma wystąpić sygnał przerwania dać opornik między wejście a masę.
    Jaki- jeśli z nadajnika można pobrać np. 10mA bez znaczącego spadku napięcia to przy odbiorniku można dać 5V/10mA== 510ohm .


    Właśnie jest dwukierunkowa w taki sposób jak napisałem wyżej. Ale jak wywołuje przerwanie stanem niskim to jak dam rezystor do masy to nie pomiesza mi się coś za bardzo??

    Cytat:
    Daj szeregowo rezystor np. 10kOm i równolegle do macy mały kondensatorek i sprawdź czy pomogło.


    Czyli rozumiem, zamiast przewodu bezpośrednio do wejścia INT0 mam dać między nim a portem ten rezystorek??

    Cytat:
    Jak to trzy przewody?
    Skrętka ma cztery pary przewodów i i to które przewody są parami wykorzystane ma znaczenie.
    Oczywiście użycie skrętki w ekranie może zmniejszyć odbierane zakłócenia.


    No skrętka jest położona cała ale wcześniej kożystałem tylko z 3 przewodów.

    Zasilacz do obu układów jest w miejscu tego co mierzy temperature. i z tego zasilacza jedną parą np. brązowy i bialo brązowy mam pociągnięte zasilanie 12v do drugiego układu. Potem para niebieska to połączenie RxD i TxD obu układów a para zielona to przewody do generowania przerwań.

    A może nie powinienem zasilania drugiego układu po tych kablach ciągnąć w skrętce tylko np dać drugi osobny zasilacz blisko tego układu.

    Jutro zamieszczę szczegółowy schemat płytek i połączeń między nimi może sie okaże że jednak jest coś źle :) I napiszę czy pomogły te proste wskazówki bo zastosowanie transoptorów wiąże się z troszkę większą przeróbką (jak bedzie trzeba to też to biorę pod uwagę)
  • #10 10111316
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Tak jak radził ci kolega Fredy - daj sobie spokój w ogóle z tymi przerwaniami to od razu odpadnie ci połowa tych problemów.

    Pomyśl sobie po co jeden układ ma do drugiego wystawiać przerwanie, że chce wysłać mu coś przez RS232 - toż to nieporozumienie prawie ;)

    Ot układ od razu wysyła do tego drugiego dane po RS232 - a tamten to zauważa sam i obsługuje - jaki w tym problem ???

    Dodano po 2 [minuty]:

    i podobnie w drugą stronę, jeśli jeden układ potrzebuje informacji od drugiego - to wysyła mu zapytanie po RS232 i dostaje odpowiedź .... gdzie tu miejsca na dodatkowe przerwania ?? ;)
  • #11 10111431
    thral666
    Poziom 11  
    Posty: 32
    Ocena: 4
    No właśnie tylko zacząłem zabawę z atmegą w bascomie bawiąc się z coraz to większymi układami no i tak doszedłem do tego projektu co teraz. Ponieważ miał to być sterownik ogrzewacza który znajduje się w innym pomieszczeniu napisałem sobie aplikacje do układu który miał być panelem sterującym i do układu wykonawczego. Taki projekt przy którym też pewnych rzeczy chciałem się nauczyć.

    Nie wiem jak się używa RS-a w bascomie tak żeby dało się nim przerwanie wyzwolić dlatego wymyśliłem co wymyśliłem :D Wszystko działało do momentu jak było zasilane z komputera na którym te układy były programowane a połączone były kabelkiem o długości 20cm :)

    Cytat:
    Ot układ od razu wysyła do tego drugiego dane po RS232 - a tamten to zauważa sam i obsługuje - jaki w tym problem ???


    Właśnie nie wiem jak to zrobić, wcześniej było tak, że jeden układ coś wysyłał drugi czekał na info (od razu się przyznam, najprostszy sposób czyli Print i Input w bascomie) problem polegał na tym, że jak jeden nic nie wysyłał to drugi stał w miejscu Input i nie mógł wykonać innego zadania dlatego narodziła mi się w głowie pewna myśl co do przerwań :D:D i ogólnie wszystko działa oprócz tego, że mam zakłócenia z domowej sieci. Światło, wentylator w łazience, co nie włączę to układy świrują.

    Z helpa do bascoma wywnioskowałem, że używanie magistrali SPI daje taki właśnie efekt, że nie muszę tych nieszczęsnych przerwań używać myślę czy by tego nie wypróbować jeszcze.

    Byle do rana, bo aż mnie skręca, żeby wypróbować wskazówki od was :D:D
  • #12 10111478
    piotrva
    VIP Zasłużony dla elektroda
    Posty: 6409
    Pomógł: 625
    Ocena: 735
    Da się w bascomie zrobić to wszystko co Ci radzimy o rsie. Poczytaj o Config Serialin = Buffered i Bytematch All. Powinno się nieco rozjaśnić.

    Dodano po 5 [minuty]:
    Dodano po 45 [sekundy]:

    A głównym problemem i tak pozostają zakłócenia, niezależnie czy zmienisz te przerwania czy nie.
    Więc tak, czy ta skretka idzie w pobliżu 230vac?
    Czy na każdej płytce masz elektrolity na zasilaniu?
    Czy same płytki nie są blisko urządzeń/ linii 230vac?
    Czy na płytkach resety procesorów masz podciagane przez rezystor powiedzmy ok 1-2k do vcc?
  • #13 10111599
    thral666
    Poziom 11  
    Posty: 32
    Ocena: 4
    Cytat:
    Da się w bascomie zrobić to wszystko co Ci radzimy o rsie. Poczytaj o Config Serialin = Buffered i Bytematch All. Powinno się nieco rozjaśnić.

    Dodano po 5 [minuty]:
    Dodano po 45 [sekundy]:

    A głównym problemem i tak pozostają zakłócenia, niezależnie czy zmienisz te przerwania czy nie.
    Więc tak, czy ta skretka idzie w pobliżu 230vac?
    Czy na każdej płytce masz elektrolity na zasilaniu?
    Czy same płytki nie są blisko urządzeń/ linii 230vac?
    Czy na płytkach resety procesorów masz podciagane przez rezystor powiedzmy ok 1-2k do vcc?


    Właśnie gdzieś mi się już obiło o uszy, że trzeba dane z RS-a odbierać buforowo a nie tak jak ja to robię :P poczytam jeszcze helpa może coś znajdę.

    Skrętka przechodzi przez ścianę w pobliży właśnie puszki od światła przez które jak zauważyłem jest najwięcej zakłóceń.
    Na zasilaniu czyli rozumiem przed 7805 mam elektrolity 100uF 25V. (jak się dzisiaj po południu dostanę wreszcie do kompa ze schematami to od razu go zamieszczę)
    Jedna płytka z tego co zauważyłem zawiesza się prawie zawsze albo może i za każdym razem jest w plastikowej rozdzielce natynkowej razem z zasilaczem 230 -> 12V więc jak by na to nie patrzeć jest blisko 230V.
    Rezystory podciągnięte przez 10k do Vcc.

    Dodaję schematy obu moich układów z tym, że układ wykonawczy wykonałem sam na podstawie jakiś przykładów z internetu a panel sterowania jest na gotowej płytce kupionej gdzieś w internecie :)

    [atmega8] Zakłócenia w układzie Atmega8 i Atmega168 przy włączaniu światła [atmega8] Zakłócenia w układzie Atmega8 i Atmega168 przy włączaniu światła

    Pewnie w tworzeniu schematów też mam pełno błędów ale cały czas się uczę i słucham dobrych rad :)

    tmf mam pytanie czy ten rezystor 10k i kondensator miał by być tak podpięty czy inaczej??

    [atmega8] Zakłócenia w układzie Atmega8 i Atmega168 przy włączaniu światła
  • #14 10114257
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Niestety - jak widać sprawa filtracji zasilania - raczej jest nieszczęśliwie rozwiązana. Nie masz nawet jednego kondensatora elektrolitycznego. Tymczasem podstawowa zasada polega na tym, żeby dać przy każdej parze nóg zasilania każdego scalaka - nie jeden kondensator 100nF ale parę kondensatorów. W tej parze jeden to oczywiście 100nF ale drugi to 10 do 47uF. Przy czym pamiętać musisz że twój stabilizator napięcia to też scalak i ma wejście i wyjście zasilania czyli już masz dwie pary takich kondków przy nim.

    Tymczasem na jednym schemacie dałeś na wejściu stabilizatora TYLKO elektrolit a na wyjściu tylko 100nF - błąd :(

    A na drugim schemacie jeszcze większa niefrasobliwość w tym zakresie - więc musisz to poprawić szybko.

    No i pokaż swoją płytkę PCB bo jak pisałem wcześniej, już raz ktoś napisał że dał kondensatory najbliżej jak mógł - a po zobaczeniu widoku PCB okazało się że niestety - zrobił kolejną (ten ktoś) masakrę.

    Dodano po 4 [minuty]:

    No i gdybyś poszedł drogą rezygnacji z tych dodatkowych linii przerwań (niepotrzebnych) a pozostał przy samym RS232 na skrętce to już byłoby lepiej. Chociaż może warto byłoby pomyśleć o prawidłowym jeszcze zbuforowaniu linii RS232 za pomocą scalaczków MAX232 ? Bo w takiej konfiguracji, gdy RS232 śmiga na napięciach +12V/-12V to po kablu skrętkowym można i na odległość 20-30m spokojnie puścić bez mrugnięcia oka. A w TTL'u może być gorzej.
  • #15 10114420
    thral666
    Poziom 11  
    Posty: 32
    Ocena: 4
    Cytat:
    Niestety - jak widać sprawa filtracji zasilania - raczej jest nieszczęśliwie rozwiązana. Nie masz nawet jednego kondensatora elektrolitycznego. Tymczasem podstawowa zasada polega na tym, żeby dać przy każdej parze nóg zasilania każdego scalaka - nie jeden kondensator 100nF ale parę kondensatorów. W tej parze jeden to oczywiście 100nF ale drugi to 10 do 47uF. Przy czym pamiętać musisz że twój stabilizator napięcia to też scalak i ma wejście i wyjście zasilania czyli już masz dwie pary takich kondków przy nim.


    Czyli rozumiem przy Vcc atmegi i przy Avcc ma być taka para kondensatorów. I na wejściu i wyjściu stabilizatora też, dobra to poprawie to na płytkach i zobaczymy czy będzie lepiej.

    A tu zdjęcie na którym widać, że kondensatorki 100nF (o których zapomniałem na początku) przylutowałem blisko wejścia Vcc oraz wyjścia stabilizatora.

    [atmega8] Zakłócenia w układzie Atmega8 i Atmega168 przy włączaniu światła

    Aha zrobiłem (przynajmniej tak mi się wydaje, że dobrze) tak jak poradził tmf z tym, że tak jak na poniższym schemacie

    [atmega8] Zakłócenia w układzie Atmega8 i Atmega168 przy włączaniu światła

    i zakłócenia powodowane zapalaniem światła ustały, mogę pstrykać klapakiem od światła do woli i jak tylko chcę i nic się nie dzieje, układy pracują stabilnie. I wszystko by było super gdyby nie to :D że mam w łazience nieszczęsny wentylator wyciągowy i jak go włączę albo wyłączę to układy jeszcze świrują z tym, że nie zawiesza się żaden z procków tylko dziwne rzeczy się na wyświetlaczu pojawiają nawet jakieś chińskie znaki i panel sterowania zachowuje sie tak jak by wywołano w nim przerwanie czyli pewnie przez moje nieszczęsne 2 kabelki się coś jeszcze indukuje.

    A może wartości rezystora 10k i kondensatorka 33pF mam złe?? akurat takie miałem ale może kondensator ma być większy albo mniejszy?? Lub rezystor??
  • #16 10114802
    piotrva
    VIP Zasłużony dla elektroda
    Posty: 6409
    Pomógł: 625
    Ocena: 735
    Zmień kabel na ekranowany, dodaj stabilizację zasilania odpowiednimi c., wreszcie rozważ użycie rs232 w standardzie +-12v
  • #17 10114866
    thral666
    Poziom 11  
    Posty: 32
    Ocena: 4
    piotrva napisał:
    Zmień kabel na ekranowany, dodaj stabilizację zasilania odpowiednimi c., wreszcie rozważ użycie rs232 w standardzie +-12v


    Zmienię ten kabel, dodam te kondensatory o których mówicie i zobaczę jutro jaki to da efekt. Jak na razie poprzednie wskazówki pomagają :) zostały tylko zakłócenia z wentylatora :)
  • #18 10115015
    piotrva
    VIP Zasłużony dla elektroda
    Posty: 6409
    Pomógł: 625
    Ocena: 735
    Powiedziałbym aż, a nie tylko;-)
  • #19 10118194
    thral666
    Poziom 11  
    Posty: 32
    Ocena: 4
    Cytat:
    Niestety - jak widać sprawa filtracji zasilania - raczej jest nieszczęśliwie rozwiązana. Nie masz nawet jednego kondensatora elektrolitycznego. Tymczasem podstawowa zasada polega na tym, żeby dać przy każdej parze nóg zasilania każdego scalaka - nie jeden kondensator 100nF ale parę kondensatorów.


    A więc tak jak doradził mirekk36 dodałem sobie kondensatorki 47uF do Vcc procka i do 7805 na wyjściu bo na wejściu miałem elektrolity 100uF (może za duża wartość nie wiem :P)

    dałem też tak jak doradził tmf szeregowo do linii od przerwań rezystorek 10k i kondensatorek ceramiczny 33pF (tak jak na schemacie który załączyłem) nie wiem czy dobrze ale najważniejsze jest to, że zakłócenia zniknęły. Nawet jak włączę wentylator w łazience albo wyłączę to zakłóceń nie ma. Zdążają się sporadycznie ale tylko jak szybko włączę i wyłączę wentylator tak np 20 razy jeden za drugim. A przy normalnym użytkowaniu tak się nie robi. Można by jeszcze dopracować to tak żeby w ogóle nie było żadnego zakłocenia ale nie znam się tak na elektronice, żeby się zagłębiać się w ten temat (chyba, że ktoś ma jeszcze jakąś sugestie) albo może jeszcze ten kabel ekranowany dam.

    Zastanawiam się tylko czemu nieraz na wyświetlaczu LCD pojawiają się jakieś dziwne chińskie znaki?? Wcześniej się tak nie działo dopiero jak dodałem te kondensatory 47uF. Może na zasilaniu LCD też powinienem je dać?? Razem z 100nF. Dzieje się tak na wyświetlaczu płytki wykonawczej (tej co zamieściłem zdjęcie)
  • Pomocny post
    #20 10118243
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Sam widzisz, że filtracja zasilania prawidłowa to nie jakiś tam wymysł a podstawa. Zatem jak zrobisz sobie nową płytkę PCB, zaprojektujesz wszystko tak jak się należy ale co ważne prawidłowo poprowadzisz ścieżki zasilania bo tu niezbyt dobrze to widać ( a coś czuję pismo nosem że też jest coś nieteges ), zrezygnujesz z tych linii przerwań w końcu, puścisz sobie RS232 na +12V/-12V - to wtedy pozbędziesz się do końca problemów. No i pamiętaj, że na końcu trzeba jeszcze sprawdzić program - bo tam też może być parę jak nie więcej baboli niestety.
  • #21 10118495
    thral666
    Poziom 11  
    Posty: 32
    Ocena: 4
    Właśnie ciężko zdobyć informacje na temat tego jak dobrze ścieżki prowadzić, przynajmniej ja nie znalazłem czegoś ciekawego a może za słabo szukam :) Myślę, że teraz zabiorę się właśnie za te linie przerwania i za prawidłowy RS. Niestety na razie zaliczam się do początkujących więc robię błędy na każdym kroku :P Program pewnie też nie należy do najlepszych ale myślę o książce i przesiadce na C.

    Dzięki za wszystkie rady bo się sprawdziły a i przez to nie zniechęcę się tak szybko :P
  • #22 10118546
    oskar777

    Poziom 26  
    Posty: 1264
    Pomógł: 76
    Ocena: 243
    Tu masz opis na temat wylewania masy, filtracji i innych ważnych zagadnień.
    Jest to do atmegi32 ale idea pozostaje ta sama.
    Pozdrawiam
    http://www.atmel.com/dyn/resources/prod_documents/doc2521.pdf
    Konto firmowe:
    Oskar-info
    Gidzińskiego 24/1, Warszawa, 02-293 | Tel.: 501XXXXXX (Pokaż) | Strona WWW: http://oskar-info.pl
  • #23 10118825
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2205
    Z tych linii przerwań oczywiście zrezygnuj, nie są potrzebne. Co do RS, to zamiast robić RS232, zrób RS485. W przypadku dwóch układów nie jest to bardziej skomplikowane, w dodatku transceiver RS485 wymaga mniej elementów dodatkowych. Ta magistrala jest projektowana z myślą o zakłóceniach, więc powinna świetnie się sprawdzić.
    Co do zakłóceń na LCD - pamiętaj, że to też scalak, potrzebuje swoje filtrowanie. Masz LCD na płytce więc nie powinno być problemów z zakłóceniami.
  • #24 10118910
    WOBI
    Poziom 19  
    Posty: 206
    Pomógł: 33
    Ocena: 8
    Niestety to znany problem, sam widzisz że tak jak pisali koledzy powyżej, kondensatory i filtrowanie jest najważniejsze i prawidłowy projekt płytki PCB.
    Spotykałem się z takim samym problemem przy projektowanych urządzeniach i rozwiązaniem okazało się prawidłowe projektowanie PCB z dużymi, jak największymi powierzchniami masy i do tego wszędzie kondensatory parami 100nF i 10uF tam gdzie tylko się da i gdzie tylko sztuka projektowa nakazuje.

    To przykładowa płytka sterownika ATmega128, wogle nie reaguje na "pstrykanie sieci", zobacz jak dużo powierzchni masy jest. Teraz zawsze w moich płytkach wylewam dużo masy i jest spokój a urządzenia pracują stabilnie.

    warstwa 1

    [atmega8] Zakłócenia w układzie Atmega8 i Atmega168 przy włączaniu światła

    warstwa 2

    [atmega8] Zakłócenia w układzie Atmega8 i Atmega168 przy włączaniu światła
  • #25 10119866
    thral666
    Poziom 11  
    Posty: 32
    Ocena: 4
    oskar777 napisał:
    Tu masz opis na temat wylewania masy, filtracji i innych ważnych zagadnień.
    Jest to do atmegi32 ale idea pozostaje ta sama.
    Pozdrawiam
    http://www.atmel.com/dyn/resources/prod_documents/doc2521.pdf


    Dziwne właśnie jest to że podane jest, że do każdej pary Vcc i GND ma być kondensator 100nF a nigdzie mowy o elektrolicie :)

    tmf napisał:
    Z tych linii przerwań oczywiście zrezygnuj, nie są potrzebne. Co do RS, to zamiast robić RS232, zrób RS485. W przypadku dwóch układów nie jest to bardziej skomplikowane, w dodatku transceiver RS485 wymaga mniej elementów dodatkowych. Ta magistrala jest projektowana z myślą o zakłóceniach, więc powinna świetnie się sprawdzić.
    Co do zakłóceń na LCD - pamiętaj, że to też scalak, potrzebuje swoje filtrowanie. Masz LCD na płytce więc nie powinno być problemów z zakłóceniami.


    LCD na płytce a jednak coś czasami się na nim dziwnego wyświetla, może do jego zasilania też dołożę kondensatory.

    Nie pojmuję do końca zasady działania RS232 a co dopiero jakiś inny :D No ale poczytam coś to może mi się umysł rozjaśni :P

    WOBI napisał:
    Spotykałem się z takim samym problemem przy projektowanych urządzeniach i rozwiązaniem okazało się prawidłowe projektowanie PCB z dużymi, jak największymi powierzchniami masy i do tego wszędzie kondensatory parami 100nF i 10uF tam gdzie tylko się da i gdzie tylko sztuka projektowa nakazuje.


    Dzięki za sugestię na pewno wezmę to pod uwagę przy projektowaniu kolejnej PCB. A i nawet wytrawianie będzie szybsze :P

    (wiecznie się na błędach uczę...)
  • #26 10119964
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2205
    Do LCD koniecznie kondensatory, tak jak pisałem LCD to też scalak, a prosta zasada mówi, że na każdy scalak ma być co najmniej jeden kondensator. Elektrolity jakieś warto dodać, ale bez przesady.
    Co do RS232 i RS485 - w twoim przypadku programowo nic to nie zmienia, kwestia tylko zastąpienia transceivera 232 na transceiver 485. RS485 wygląda nieco inacej dopiero przy więcej niż dwóch układach. Oczywiście na max232 też pewnie ci to dobrze zadziała.
  • #27 10120020
    thral666
    Poziom 11  
    Posty: 32
    Ocena: 4
    tmf napisał:
    Do LCD koniecznie kondensatory, tak jak pisałem LCD to też scalak, a prosta zasada mówi, że na każdy scalak ma być co najmniej jeden kondensator. Elektrolity jakieś warto dodać, ale bez przesady.
    Co do RS232 i RS485 - w twoim przypadku programowo nic to nie zmienia, kwestia tylko zastąpienia transceivera 232 na transceiver 485. RS485 wygląda nieco inacej dopiero przy więcej niż dwóch układach. Oczywiście na max232 też pewnie ci to dobrze zadziała.


    No więc dodam jeszcze do LCD kondensatorki.

    Co do elektrolitów to dałem do każdego ceramicznego na zasilaniach i się uspokoiło ale nie wiem co dokładnie znaczy "bez przesady" :)

    "zastąpienia transceivera 232 na transceiver 485" czyli w moim przypadku musiał bym coś dodać do moich układów bo obecnie to są połączone bezpośrednio przewodami :) o ile dobrze rozumuję o co chodzi :P bo przeglądałem właśnie trochę info o RS485 :)
  • #28 10120102
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2205
    Tak, zobacz np. scalak 75176 - to jest transceiver RS485. Ty sterowanie buforów możesz pominąć (sygnąły RE/DE) i je na stąłe otworzyć. Układ wtedy pracuje jako przeźroczysty konwerter pomiędzy procesorami. Wszystko wysyłasz normalnie przez UART. W procesorze odbierającym dane ustawiasz sobie przerwanie RXC i masz odpowiednik tych twoich linii przerwań.
  • #29 10120231
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    thral666 napisał:

    Co do elektrolitów to dałem do każdego ceramicznego na zasilaniach i się uspokoiło ale nie wiem co dokładnie znaczy "bez przesady" :)


    A to "bez przesady" oznacza właśnie to, że jeśli np masz procek w obudowie TQFP i ma on więcej wyprowadzeń zasilania VCC, to przy każdym dobrze dać powiedzmy ten kondensator 100nF ale już bez przesady ;) czyli wystarczy na te 4 nogi tylko jeden elektrolit. O to chodzi.

    Chociaż to wszystko zależy od aplikacji całości a szczególnie od tego czy obciążasz większymi prądami wyjścia portów.
  • #30 10120305
    thral666
    Poziom 11  
    Posty: 32
    Ocena: 4
    tmf napisał:
    Tak, zobacz np. scalak 75176 - to jest transceiver RS485. Ty sterowanie buforów możesz pominąć (sygnąły RE/DE) i je na stąłe otworzyć. Układ wtedy pracuje jako przeźroczysty konwerter pomiędzy procesorami. Wszystko wysyłasz normalnie przez UART. W procesorze odbierającym dane ustawiasz sobie przerwanie RXC i masz odpowiednik tych twoich linii przerwań.


    Aha czyli przy jednym jak i przy drugim układzie musi się taki scalak znaleźć. Jak to mówią jak nie spróbujesz to się nie przekonasz :) z datasheetu widzę, że można tak połączyć aż do 32 układów (ciekawe przy późniejszej rozbudowie systemu) ale pewnie to już nie takie proste :)

    mirekk36 napisał:
    A to "bez przesady" oznacza właśnie to, że jeśli np masz procek w obudowie TQFP i ma on więcej wyprowadzeń zasilania VCC, to przy każdym dobrze dać powiedzmy ten kondensator 100nF ale już bez przesady czyli wystarczy na te 4 nogi tylko jeden elektrolit. O to chodzi.


    No teraz mam już rozjaśnione w swojej głowie :D (w miarę) zasilanie scalaków :)

Podsumowanie tematu

✨ W dyskusji poruszono problem zakłóceń w układzie z mikrokontrolerami Atmega8 i Atmega168, które występują przy włączaniu światła. Użytkownik zauważył, że włączenie oświetlenia powoduje zawieszenie procesora i reset przez watchdog. Uczestnicy sugerowali różne rozwiązania, w tym zastosowanie transoptorów, ekranowanych przewodów, oraz dodanie kondensatorów filtrujących (100nF i elektrolitycznych 10-47uF) w pobliżu zasilania mikrokontrolerów. Wskazano również na konieczność poprawy schematu połączeń oraz rezygnację z linii przerwań na rzecz komunikacji przez RS-232. Po wprowadzeniu sugerowanych poprawek, w tym zmiany na RS-485, problemy z zakłóceniami znacznie się zmniejszyły, chociaż sporadycznie występowały jeszcze zakłócenia przy włączaniu wentylatora.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA