Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Problem ze stabilnym działaniem układu z AVR

xPatryk 31 Paź 2010 18:41 2992 24
  • #1 31 Paź 2010 18:41
    xPatryk
    Poziom 15  

    Witajcie,

    ostatnio dały mi się we znaki problemy ze stabilnością uC AVR (Atmega8, Attiny2313).

    Zdarzały się latch-upy i inne dziwne zwisy, na które nawet watchdog i detekcja spadku napięcia nie pomogły, a ze względu na działanie modułów nie mogę na to pozwolić.

    Słyszałem iż inne uC są pod względem niezawodności o niebo lepsze. Szukam więc zamienników dla Attiny2313 i Atmega8 o podobnych parametrach.

    Będę wdzięczny za sugestie :)

    0 24
  • #3 31 Paź 2010 18:56
    tmf
    Moderator Mikrokontrolery Projektowanie

    Hehe, nie potrafisz prawidłowo zaprojektować układ wykorzystując proste mikrokontrolery,ale z jakiegoś powodu uważasz, że z trudniejszymi (chociażby z powodu taktowania) dasz rade? Ciekawa koncepcja. Jak ci się zdarzają dziwne rzeczy to szukaj błędów w swoich układach.

    0
  • #4 31 Paź 2010 19:29
    xPatryk
    Poziom 15  

    :arrow: Freddie Chopin - a coś innego? STM, PIC?

    :arrow: tmf - jeśli nie masz nic ciekawego do powiedzenia, to proponuję byś nie nabijał sobie licznika postów;)

    0
  • #5 31 Paź 2010 19:35
    sulfur
    Poziom 24  

    xPatryk napisał:
    :arrow: tmf - jeśli nie masz nic ciekawego do powiedzenia, to proponuję byś nie nabijał sobie licznika postów;)


    Jeśli kolega nie przyjmuje konstruktywnej krytyki, z resztą słusznej, to po co ten temat ? Ten sam układ z ARMem będzie się zachowywał co najmniej o niebo gorzej. Co najmniej.

    0
  • #6 31 Paź 2010 19:36
    asembler
    Poziom 32  

    xPatryk napisał:
    :arrow: Freddie Chopin - a coś innego? STM, PIC?

    :arrow: tmf - jeśli nie masz nic ciekawego do powiedzenia, to proponuję byś nie nabijał sobie licznika postów;)


    tmf ma wiele racji. Jezeli nie projekt elektryczny masz do bani to lekartwem na zwisy jest niewieszajacy sie program. Watchdog nie słuzy do tego aby leczył twoje nieudane programy.
    Co do niezawodnosci AVR to ja mam wrecz przeciwne zdanie czy bardziej skomplikowany układ z wiekszym 'taktem' tym niezawodność musi spadac anie rosnąć

    0
  • #7 31 Paź 2010 20:27
    kemot55
    Poziom 30  

    ARM'y zamiast AVR'ów? Raczej przerost formy nad treścią (zresztą nie wiadomo co chcesz zrealizować). Do zrobienia własnego systemu z ARM'em potrzebowałem 2 miesięcy (budowa od zera systemu, jtag'ów :-) oraz zrozumienie koncepcji programowania). W przypadku STM8 wystarczył mi 2 tygonie "Bezbolesne" przejście może być na poziomie podobno-bitowym np. procesor 8 bitowy na inny 8 bitowy. Ja ostatnio się przesiadłem z AVR na STM8 (i 51' oczywiście jest ponad współczesnymi wynalazkami :-)-> to tak z sentymentu). Z tym, że nie ma na STM8 kompilatora GNU niestety. Są za to dwa kompilatory komercyjne (do 16kB kodu darmowe) i firmowy asembler. W stosunku do AVR'ów asembler ST jest znacznie bardziej intuicyjny. Poza tym dla STM8 na pewno nie dostaniesz takiego efektu jak opisałeś -> AVR "wisi" a WD go z tego stanu nie może wyprowadzić. To nie jest efekt "latch'owania". Stawiam na to, że używasz zewnętrznego oscylatora kwarcowego :-).
    Fakt, że jeżeli masz takie zjawisko to na 99% błędy są po stronie projektu PCB (głównie zasilanie, lub postawiłeś urządzenie w środowisku mocno zakłóconym i wyłazi to czego nigdy nie zobaczysz w laboratorium). Ale nie usuniesz problemu po dodaniu "standardowych" 100n i tym podobnych "manewrów". Tu raczej potrzeba przeprojektować obwody w okolicach AVR'a.
    Co do PIC'ów to trzeba przyznać, że mają niezłe możliwości i są RISC'ami "z krwi i kości" (33 instrukcje pozwalały na więcej niż ponad 100 instrukcji Atmela). Ale jak pamiętam doświadczenia sprzed jakiś 12 lat to z mojego punktu widzenia problemem był programator "wysoko-napięciowy". Teraz to już nie jest istotne, ale wtedy programowanie po ISP (pierwsze układy 89S8252 ATMEL'a) wydawało się "wygodniejsze".

    0
  • #8 31 Paź 2010 20:47
    xPatryk
    Poziom 15  

    Co do racji tmf i konstruktywnej krytyki, to takowa może wynikać co najwyżej z rzeczowej oceny sytuacji i opierać się na pewnych przesłankach.

    Oczywiście wziąłem pod uwagę takie drobiazgi jak kondensatory blokujące 100nF przy układach, duże pola masy. Układy mają pracować w środowisku o wysokich zakłóceniach, gdzie przełączane są obciążenia indukcyjne o dużych mocach, niestety z wykorzystaniem styczników, czego zmienić nie mogę... Wielokrotnie wspominano o problemach ze stabilnością AVR'ów - stąd moje pytanie...

    Wracając do tematu, na czym polega problem z zewnętrznym oscylatorem kwarcowym? Czy poza latch-up'ami występują w AVR'ach inne przyczyny zawieszenia się, z których watchdog nie jest w stanie uC wybudzić?

    0
  • #9 31 Paź 2010 20:57
    kemot55
    Poziom 30  

    A zasilanie do tych Twoich układów jest transformatorowe czy zastosowałeś kondensator sieciowy (zasilacz bez-transformatorowy)?. Coś mi się wydaje, że jednak to drugie.

    0
  • #10 31 Paź 2010 21:00
    xPatryk
    Poziom 15  

    Zasilanie zrealizowane jest na gotowej przetwornicy impulsowej 230/12V 3A po której zastosowany jest stabilizator liniowy LM7805, na wejściu kondensator 100uF + 100nF, na wyjściu 470nF + 100nF.

    0
  • #11 31 Paź 2010 21:20
    kemot55
    Poziom 30  

    Izolowana przetwornica? Bo jeżeli tak, to sprawdź jak wyrównałeś potencjały "żelaza". Chodzi mi o kabel PE, uziemienia, potencjały obudów itd. Tu trzeba szukać problemu (trochę poprzełączać :-)) A jeżeli przetwornica nieizolowana to sprawa jest najgorsza z możliwych (przy takich zakłóceniach). Trochę z tym powalczyłem niestety bez 100% sukcesu.

    0
  • #12 31 Paź 2010 21:40
    mirekk36
    Poziom 42  

    xPatryk --> pokaż może schemat tego co zrobiłeś na ATtiny2313 i ci się tak latch'up-uje ? Bo na razie tylko wiadomo jakie kondensatory dałeś przed i za stabilizatorem. A jaki kondensator(-y) dałeś przy procku, przy innych układach wykonawczych? jak są obciążone wyjścia procka?

    0
  • #13 31 Paź 2010 22:05
    xPatryk
    Poziom 15  

    => kemot55:

    Wszystkie układy mają wspólną masę w celu wyrównania potencjałów rozprowadzoną skrętką UTP na dwóch żyłach. Masa układu nie jest połączona z masą urządzeń którymi steruje (ani przewód PE ani obudowa). Docelowo chciałem, aby część sterująca była odseparowana od przekaźników załączających styczniki optycznie i zalana żywicą - dla bezpieczeństwa.

    => mirekk36:

    W załączeniu schemat modułu z 4 przekaźnikami. "Na sucho" - w przypadku braku obciążenia (styczniki, silniki) którymi steruje, przy kilku tysiącach symulowanych przełączeń nie wystąpiły żadne problemy. Przy przełączaniu obciążeń zawiesza się średnio raz na kilkadziesiąt przełączeń.

    0
  • Pomocny post
    #14 31 Paź 2010 22:46
    mirekk36
    Poziom 42  

    xPatryk --> pod schematem widać opis:

    Cytat:
    Karta 4 przekaznikow z filtrowanym zasilaniem\4 przekaźniki


    Jak dla mnie to lekka masakra niestety. Gdzie kolega widzi tu filtrowanie zasilania????. Niestety tak jak myślałem układ jest zrobiony najgorzej jak tylko można było do tego podejść więc nie dziwota, że dzieją się cuda z prockiem i to jeszcze przy załączaniu jakichś dużych prądów itp.

    A przecież nie widać do tego jeszcze samej płytki PCB na której może być dalsza niestety część koszmaru.

    Tak na szybko co można podpowiedzieć, to gdy tworzyłbym układ pracujący w środowisku z zakłóceniami i miał sterować przekaźnikami to:

    1. zdecydowanie oddzieliłbym zasilanie przekaźników ! a ty sobie niefrasobliwie zasilasz je z VCC tego samego co leci do procka. Jeszcze jak na płytce źle poprowadziłeś to zasilanie to już gwóźdź do trumny.

    2. do procka podłączona(-e) jest(są) jakaś dioda(-y) LED nie wiem czy ona tylko ciągle świeci czy może sobie pomiguje czasem - no tu panie kolego wychodzi raczej duża niewiedza o filtrowaniu zasilania tak ogólnie. Proponuję na początek przyjąć jedną żelazną zasadę. Żeby wszystko było dobrze filtrowane to dajesz PRZY KAŻDYM SCALAKU jedną PARĘ kondensatorów !

    - 100nF (to masz akurat przy stabilizatorze na we/wy) i przy procku ale już przy MAX485 jakby go amba zjadła

    - jakiś elektrolit !!! od kilku do kilkudziesięciu uF. Np 47uF w twoim przypadku.

    KAŻDY kondensator danej pary przylutowany najbliżej nóg konkretnego scalaka (w tym stabilizatora) jak tylko się da, wręcz przy samych nogach zasilania. Tylko sam wiem, że dla niektórych jak najbliżej to bywa czasem pojęcie względne i dają za daleko

    3. Rozdzielaj zasilanie dla odbiorników większych prądów, którymi w twoim przypadku są cewki przekaźników. Już 1000razy lepiej byłoby dać zasilanie +12V pobierane z przed stabilizatora 7805 !!! Ale nawet jak muszą być na 5V to co za problem dać oddzielny stabilizator na potrzeby samego procka i powiedzmy MAX485 - toż wtedy wystarczy maleńki 78L05 (tylko kondków dojdzie kilka) i już 50% mniej kłopotów

    4. Ciekawe jak długie ścieżki dałeś do kwarca i jak podłączyłeś kondensatory 22pF od kwarca do GND ????? oj tu można sobie nagrabić ;)

    5. Diody LED masz odwrotnie narysowane ale to chyba tylko czeski błąd przy tworzeniu schematu na szybko

    to takie uwagi na gorąco - jak widzisz trochę ich jest a to nie wszystko i inni może jeszcze coś dodadzą od siebie. W każdym bądź razie dużo takich podstawowych błędów a ty tu o jakimś latch-up'owaniu , o tym że słyszałeś o tragedii z zakłóceniami AVRów itp ..... Już sam chyba się domyślasz że takie rzeczy to mogłeś słyszeć tylko od osób, które także nie mają za dużego pojęcia o filtracji zasilania i projektowaniu PCB. Takie właśnie krążą opinie o lepszości lub gorszości jednych procków od innych wśród takich ludzi i to nie dziwota.





    Tymczasem jeśli zastąpisz ATtiny2313 za pomocą np jakiegoś ARM'a to gwarantuję ci że przy takim podejściu do filtrowania będziesz miał identyczne efekty i wtedy na innych forach szybko znajdziesz tych, którzy mają opinie że już nie tylko AVR'y ale i ARM'y są mało odporne na zakłócenia - wtedy zaczniesz szukać kolejnych ???

    Tymczasem warto najpierw problemów szukać u siebie.

    Pokaż lepiej jak zaprojektowałeś do tego płytkę PCB to może jeszcze kolejną porcję informacji przydatnych się dowiesz. I na tym etapie jeszcze nie jest tak ważne czy używasz przetwornicy takiej czy innej ..... najpierw zajmij się podstawami a już mogą zniknąć wszystkie dziwne zachowania u ciebie jak ręką odjął.

    Dodano po 10 [minuty]:

    łoo Matko! a jeszcze widzę, że zasilanie puściłeś sobie po skrętce i fajnie tylko że liczyłeś odległości i spadki napięć szczególnie że twój układ jakby nie patrzeć (sorki za określenie) "wpiernicza spore ilości prądu" - te wszystkie przekaźniki i diody LED. Ciekawe czy nie dochodzi nawet do zbyt dużych spadków napięcia i czy się stabilizator 7805 przypadkiem nie rozkrzacza a procek nie jest zasilany wahającym się napięciem od 3 do 5V ????

    Jak już dajesz takie zasilanie po skrętce to weź pod uwagę ile masz takich układów na magistrali i policz łączny prądzik a przy danej długości magistrali spadki napięć. Lepiej by już było dać jakieś przetworwniczki typu np.: LM2675 albo jakieś podobne. A żeby wyeliminować tak duże obciążenia układów sterujących na magistrali wystarczyłoby się pokusić o oddzielne zasilanie lokalne (do modułu Slave) dla przekaźników dodając jeszcze jakąś prostą optoizolację co dodatkowo podniosłoby i to mocno odporność na wszelkie zakłócenia ze strony samych przekaźników i ich styków podczas załączania/rozłączania. A wtedy zasilanie samego układu może spokojnie lecieć po skrętce.

    Dodano po 2 [minuty]:

    Poza tym w układzie ULN2803 masz już diody zabezpieczające więc nie do końca są potrzebne w takim przypadku te przy przekaźnikach.

    Dodano po 2 [minuty]:

    rezystor podciągający RESET dałeś 330R ????? szok! Zwykle wystarcza 10K, rozumiem że jak się ktoś uprze to można zmniejszać tą wartość do kilku K ale 330R to już chyba lekka przesada jakby.

    Dodano po 3 [minuty]:

    jak na zasilanie puszczane po skrętce i konieczność przy tej okazji dużej osczędności na pobieranie prądu przez układy Slave to też lekką ręką rozdajesz diodom LED rezystory po 330R. Wystarczy dobrać jakieś LED'y Super Jasne , dać dużo większe rezystory ograniczając o wiele więcej pobierany przez nie prąd bez dużej utraty jasności świecenia i już masz zaoszczędzone kolejne miliampery - a to w twoim przypadku jest bardzo istotne - skoro to wszystko ci się wiesza że watchdog nie daje rady. Aż się nie dziwię temu watchdogowi albo prockowi że się sam latch-up'uje gdy jest w tak nieludzki sposób traktowany jeśli chodzi o warunki pracy ;)

    Dodano po 3 [minuty]:

    Reasumując - zanim zamienisz ATtiny na:

    ARM, STxx, '51, PIC, DsPIC czy inny to wprowadź choć kilka poprawek a przejdą ci raz na zawsze opinie o latch-up'owaniu i tym podobne.

    1
  • #15 31 Paź 2010 23:26
    xPatryk
    Poziom 15  

    Tak, to są konkretne i konstruktywne uwagi, w przeciwieństwie do tych od tmf.


    Co do rezystora na resecie, jest 4k7, na schemacie zapomniałem zdjęcie.

    Kondensatory są bardzo blisko nóżek AVR'a, faktycznie - przy MAX485 nie wiedziałem, iż też należy je zastosować.

    Myślałem nad oddzieleniem zasilania dla przekaźników i zastosowaniu przykładowo 12V, lecz w przypadku znacznych spadków napięć, rozważałem zastosowanie przetwornicy zasilającej całość na wyższe napięcie - 18, 24V. Stabilizatory w układach zapewniałyby nadal 5 V dla elektroniki, gorzej byłoby z przekaźnikami. Ale pomysł dodatkowego stabilizatora na 5V wydaje się rozwiązywać ten problem :)


    Spróbuję jutro przeprojektować układ zgodnie z w/w uwagami, mam nadzieje iż to pomoże. Przed wytrawieniem płytki pozwolę sobie wrzucić poprawione schematy i będę wdzięczny za wskazanie dodatkowych nieprawidłowości.

    0
  • #16 31 Paź 2010 23:36
    mirekk36
    Poziom 42  

    No właśnie i pokaż wtedy razem ze schematem także PCB - też zobaczymy czy tu nie kryją się jakieś pułapki - wtedy będziesz mógł je wyeliminować.

    Dodano po 6 [minuty]:

    Czy nie masz możliwości zasilania modułów SLAVE tzn chociaż samych przekaźników z lokalnego nawet byle jakiego zasilacza żeby nie męczyć napięcia prowadzonego do układów po skrętce ???

    Jeśli absolutnie nie masz możliwości lokalnego zasilania ale na prawdę absolutnie to zamiast podwyższać napięcie do 24V !!!!! co może się źle skończyć dla twoich stabilizatorów 7805 bo się spalą żywym piekilenym ogniem a może nawet pociągną za sobą procka do piekła, to lepiej zastanów się nad wykorzystaniem triaków i optotriaków zamiast tych całych przekaźników. Wtedy będzie o wiele mniejszy prąd pobierany przez cały układ i od razu przy okazji optoizolacja. Ja tak robię.

    I spójrz w notę tych przetworniczek co podpowiedziałem LM2675 .... poważnie ;) .... stosując je zamiast tych kocich 7805 pozbędziesz się od razu "KALORYFERÓW" i ogrzewania środowiska naturalnego ;) a w zamian usbroisz się w o wiele lepszą odporność na spadki napięcia.

    0
  • #17 31 Paź 2010 23:51
    xPatryk
    Poziom 15  

    Hmm... ciekawa ta przetworniczka... Do układów z przekaźnikami będzie w sam raz. A poleciłbyś jeszcze jakąś odmianę na mniejszy prąd do układów termometrów?

    Stosowana obecnie miniaturowa wersja 7805 na 100 mA grzeje się odrobinę nawet bez obciążenia, przez co czujnik temperatury musi być odsunięty od układu.

    0
  • #18 01 Lis 2010 00:01
    Freddie Chopin
    Specjalista - Mikrokontrolery

    mirekk36 napisał:
    Poza tym w układzie ULN2803 masz już diody zabezpieczające...

    ... niepodłączone [; Masa od ULNa też niepodłączona. Jeśli to jest "przeoczenie" to jak można oceniać taki schemat, skoro nie wiadomo co jeszcze zostało "przeoczone"?

    4\/3!!

    0
  • #19 01 Lis 2010 00:04
    xPatryk
    Poziom 15  

    Masa ULN jest podłączona. Eagle automatycznie łączy piny ze ścieżkami o takich samych nazwach (GND) - tak jak w przypadku Attiny i MAX485.

    0
  • #20 01 Lis 2010 00:26
    mirekk36
    Poziom 42  

    Freddie Chopin napisał:
    mirekk36 napisał:
    Poza tym w układzie ULN2803 masz już diody zabezpieczające...

    ... niepodłączone [; Masa od ULNa też niepodłączona.


    No właśnie dlatego napisałem o tych diodach wewnątrz bo widać je na schemacie przy przekaźnikach a przy ULN są właśnie niepodłączone. Brak tej masy przy ULN też uznałem (ale widać błędnie) za czeski błąd ;)


    xPatryk napisał:
    Masa ULN jest podłączona. Eagle automatycznie łączy piny ze ścieżkami o takich samych nazwach (GND) - tak jak w przypadku Attiny i MAX485.


    xPatryk --> ja nigdy w życiu bym nie rysował tak schematu żeby piny zasilania nie były podłączone bo Eagle sam sobie to połączy. (A myślałem właśnie, że to tylko dlatego nie widać na schemacie tych połączeń bo "na szybko rysowałeś żeby wrzucić na elektrodę. No nie zdziwiłbym się jakby przejrzeć twoje wszystkie płytki, że nierzadko nie ma wszystkich połączeń ;) ).

    Możesz się kiedyś srogo przejechać a wręcz być może już się przejechałeś nie raz, tylko nawet tego nie zauważyłeś niestety ;) dlaczego? Zobacz najpierw jak się tworzy biblioteki własnych elementów i definiuje piny. Nie wszyscy autorzy bibliotek są na tyle staranni, że definiują odpowiednio piny zasilania. Zatem przez głupią nieuwagę kiedyś na prawidziwej płytce nie będziesz miał podłączonego VCC albo GND .... a szczególnie jeśli np w procku masz kilka pinów VCC i GND.

    Nie wspominając już że takie nie rysowanie połączeń do GND czy VCC jest mało eleganckie a wręcz niechlujne niestety. Uwierz! nie warto tak robić.

    0
  • #24 03 Gru 2010 17:13
    22053
    Użytkownik usunął konto  
  • #25 07 Paź 2011 21:08
    xPatryk
    Poziom 15  

    Problem został wyeliminowany poprzez dodanie warystora na 25V przed stabilizatorem. Układ działa teraz poprawnie :)

    0