Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

ATMEGA i gorąca masa. Wpływ zakłóceń z sieci.

xixin 06 Dec 2011 11:37 8858 56
Altium Designer Computer Controls
  • Altium Designer Computer Controls
  • #32
    dondu
    Moderator on vacation ...
    misiu_mietowy wrote:
    ATMEGA i gorąca masa. Wpływ zakłóceń z sieci.


    Schemat jakiś "nie teges" - jakieś niepodłączone połączenia itp.
    Ale jeżeli to kompletny schemat, to jest KOMPLETNIE do bani.

    1. Regulator napięcia (stabilizator) nie ma wymaganych kondensatorów filtrujących.
    2. mikrokontroler nie ma filtrowania zasilania tuż obok jego nóg zasilających.
    3. nie podłączona masa na pinie 22 mikrokontrolera
    4. diody transoptorów zasilane z portu uC bez rezystora ograniczającego prąd - chcesz spalić pin w uC?
    5. zasilasz przekaźniki tym samym napięciem co uC - to niezbyt roztropne, choć dopuszczalne.
    6. przy zastosowaniu przekaźników w projekcie, warto do pinu RESET dodać kondensator.
    dalej już nie szukam ...

    Drobne uwaga:
    - AREF podłączone bezpośrednio do Vcc - można ale lepiej tak nie robić.
    - do czego są rezystory na zasilaniu przekaźników - czyżby były one na mniejsze napięcie niż 5V?

    Innymi słowy:
    Tak zaprojektowany schemat nie ma prawa działać poprawnie. Zakłócenia będą go dobijać.

    Zatrzymaj swoje dalsze prace nad projektem i bardzo dokładnie i powoli przeczytaj prawie wszystkie tematy z działu Zasilanie i zakłócenia:
    http://mikrokontrolery.blogspot.com/p/spis-tresci.html#dzial_zasilanie_zaklocenia

    A potem po kolei realizuj na schemacie całą wiedzę którą tam znajdziesz,
  • #33
    misiu_mietowy
    Level 16  
    dondu wrote:

    1. Regulator napięcia (stabilizator) nie ma wymaganych kondensatorów filtrujących.

    Poprawione - 330nF przed 7805, 100nF za.
    dondu wrote:
    2. mikrokontroler nie ma filtrowania zasilania tuż obok jego nóg zasilających.

    Poprawione - 100 nF miedzuy nozkami
    dondu wrote:
    3. nie podłączona masa na pinie 22 mikrokontrolera

    Poprawione
    dondu wrote:
    4. diody transoptorów zasilane z portu uC bez rezystora ograniczającego prąd - chcesz spalić pin w uC?

    Poprawione - esemdek 331
    dondu wrote:
    5. zasilasz przekaźniki tym samym napięciem co uC - to niezbyt roztropne, choć dopuszczalne.

    Teraz juz tego nie zmienie, ale w przyszlosci zrobie tak jak w tym linku co mi dales - 2 osobne stabilizatory na uC i przekazniki
    dondu wrote:
    6. przy zastosowaniu przekaźników w projekcie, warto do pinu RESET dodać kondensator.

    Dodane 100nF.
    dondu wrote:
    Drobne uwaga:
    - AREF podłączone bezpośrednio do Vcc - można ale lepiej tak nie robić.

    Poprawione - polaczylem przez 10k
    dondu wrote:

    - do czego są rezystory na zasilaniu przekaźników - czyżby były one na mniejsze napięcie niż 5V?

    Wywalone

    Nic to nie pomoglo - przy włączeniu zarówki w obwod nadal sa resety itp.

    Dodano po 29 [minuty]:

    Dodałem jeszcze po kondensatorze 150 nF do wejsc przekaznikow i jest duuuuuuuuużo lepiej :) Przypadkowo przełączył mi się tylko raz na 15 min. testowania :)
  • #34
    arturt134
    Level 27  
    Dodaj kondensator 1n na resecie (jakoś go nie widzę, a na pewno się przyda).
    Na wejściu stabilizatora daj kondensatory 100u i 100n (330n to żart).
    Na wyjściu stabilizatora dodaj kondensator 100u do 100n, który już masz.

    Co znaczy: "dodałem po kondensatorze 150n do wejść przekaźników"? Znaczy dałeś je na napięciu zasilającym cewkę przekaźnika? a może na porcie kontrolera sterującym tranzystorem? - sprecyzuj.
  • #35
    misiu_mietowy
    Level 16  
    arturt134 wrote:
    Dodaj kondensator 1n na resecie (jakoś go nie widzę, a na pewno się przyda).
    Na wejściu stabilizatora daj kondensatory 100u i 100n (330n to żart).

    Hmmm - Wartosc 330n wzialem z dataszita :|
    ATMEGA i gorąca masa. Wpływ zakłóceń z sieci.
    arturt134 wrote:


    Na wyjściu stabilizatora dodaj kondensator 100u do 100n, który już masz.

    Co znaczy: "dodałem po kondensatorze 150n do wejść przekaźników"? Znaczy dałeś je na napięciu zasilającym cewkę przekaźnika? a może na porcie kontrolera sterującym tranzystorem? - sprecyzuj.


    Dolutowalem kazdy C do nozek kazdej cewki
  • #36
    arturt134
    Level 27  
    W momencie załączenia przekaźnika występuje duży impuls prądowy - stabilizator nie zdąży zareagować tak szybko i napięcie spadnie (pojawi się "szpilka" na zasilaniu) - może to spowodować reset urządzenia. Duży kondensator zapewnia rezerwuar energii niezbędnej do zadziałania przekaźnika. Nie wiem ile prądu potrzebują przekaźniki do zadziałania, ale na pewno całkiem sporo. Daj duże kondensatory na stabilizator, np. 100u (jeżeli masz po ręką inną wartość, np. 47u lub 220u to też może być) i zobacz czy nastąpi poprawa.

    Jeżeli po dodaniu kondensatorów 150n na cewki przekaźników nastąpiła poprawa to je zostaw.
  • #37
    misiu_mietowy
    Level 16  
    arturt134 wrote:
    Daj duże kondensatory na stabilizator, np. 100u (jeżeli masz po ręką inną wartość, np. 47u lub 220u to też może być) i zobacz czy nastąpi poprawa.

    Dzieki. Oczywiscie na wejsciu stabilizatora i tak juz jest 1000 uF(filtrujacy do mostka Gretza). Dodac jeszcze ten 100uF?
    Quote:
    Jeżeli po dodaniu kondensatorów 150n na cewki przekaźników nastąpiła poprawa to je zostaw.

    Moge jeszcze dodac ze 100n na wyjscie uC sterujace przekaznikiem (miedzy wyjsciem uC a naza tranzystora. Na plytce jest juz tak nawalone, ze i tak bede musial ja zaprojektowac i wytrawic od nowa.
    Quote:
    W momencie załączenia przekaźnika występuje duży impuls prądowy

    Chyba nie az taki duzy, skoro tranzystory BC547 o Icmax=100mA wytrzymuja :)

    Dodam, ze po wprowadzeniu zmian zaproponowanych przez dondu (respect) przoblemem jest juz tylko samoczynne wywolanie przerwania INT2 - jest to powodowane "pstrykaniem" zarowka, to znaczy podlaczamniem i odlaczaniem jej od wyjsc 230V przekaznikow. Innych problemow juz nie ma.

    A moze cos takiego
    mgradzki w innym temacie wrote:
    6. Na stykach roboczych przekaźnika gasiki łuku w postaci szeregowego połączenia R=33ohm i C= ok. 50nF – kondensator w wykonaniu na 400V AC.


    A moze trzeba bylo po prostu podlaczyc przekazniki przez transoptory?

    Docelowo uklad ten bedzie sterowal silnikiem 1,5 kW, wiec na zarowce 60W powinien zachowywac sie bez zarzutu.
  • Altium Designer Computer Controls
  • #38
    arturt134
    Level 27  
    1. Jeżeli na mostku Graetz'a jest 1000u to wystarczy, nie dodawaj dodatkowych 100u - schemat jest mało czytelny, nie zauważyłem.
    2. Na pewno jest potrzebny większy kondensator na wyjściu stabilizatora.
    3. Przy przełączaniu dużych obciążeń i to jeszcze w dodatku indukcyjnych pewnie jakiś układ gaszący się przyda - tu Ci nie pomogę, nie mam doświadczenia.
    4. Na wejście przerwania daj filtr RC i/lub zastosuj debouncing (kilka odczytów stanu pinu co np. 5-10ms) - wyeliminujesz w ten sposób krótkie szpilki zakłócające.
  • #39
    misiu_mietowy
    Level 16  
    arturt134 wrote:
    1. Jeżeli na mostku Graetz'a jest 1000u to wystarczy, nie dodawaj dodatkowych 100u - schemat jest mało czytelny, nie zauważyłem.
    2. Na pewno jest potrzebny większy kondensator na wyjściu stabilizatora.
    3. Przy przełączaniu dużych obciążeń i to jeszcze w dodatku indukcyjnych pewnie jakiś układ gaszący się przyda - tu Ci nie pomogę, nie mam doświadczenia.
    4. Na wejście przerwania daj filtr RC i/lub zastosuj debouncing (kilka odczytów stanu pinu co np. 5-10ms) - wyeliminujesz w ten sposób krótkie szpilki zakłócające.

    Cos na ksztalt debouncingu juz stosuje (ale nie odczyty, tylko: _delay_ms(25) odczyt _delay_ms(250) )i zarowno przy INT0 jak i przy INT1 daje to super rezultaty. Problemem jest jego samoczynne wlaczanie sie przerwania INT1. Doloze ten RC na wejscie INT1 (filtr dolnoprzep. R=10k C = 100n bedzie OK?) i moze sprobuje z transoptorem , tyle ze do jego montazu bede musial chyba przyklejac kawalek plytki uniwersalnej. Z gasikiem bede probowal dopiero przy silniku.
  • #40
    arturt134
    Level 27  
    1. Może powinieneś wydłużyć debouncing - do 3, 4 lub nawet 5 odczytów.
    2. Na temat czasu między odczytami i wartościami elementów w filtrze RC się nie wypowiadam, bo nie wiem jak długie impulsy mają włączyć przerwanie, a jakie nie.
    3. Jeżeli przy innych przerwaniach jest OK, to może masz jakiś błąd w programie?

    Na koniec mała sugestia: Spróbuj narysować ten schemat porządnie - tak jak jest w tej chwili jest absolutnie nieczytelny.
  • #41
    misiu_mietowy
    Level 16  
    arturt134 wrote:

    2. Na temat czasu między odczytami i wartościami elementów w filtrze RC się nie wypowiadam, bo nie wiem jak długie impulsy mają włączyć przerwanie, a jakie nie.

    Moga byc dlugie - w koncu to po nacisnieciu klawisza - powiedzmy 200ms a nawet 500ms. Czyli np. 100kOhm*4,7uF = 470us
    arturt134 wrote:
    3. Jeżeli przy innych przerwaniach jest OK, to może masz jakiś błąd w programie?


    Code: c
    Log in, to see the code
  • #42
    dondu
    Moderator on vacation ...
    Oj, czerpiesz wiedzę dot. kodu z niekompetentnych źródeł.
    - oczekiwania w przerwaniu,
    - stare (przestarzałe) funkcje i wektory przerwań,
    - cli(); i sei() w funkcji w przserwaniu
    to wszystko prosi się o kłopoty - poczytaj: http://mikrokontrolery.blogspot.com/2011/04/problemy-c-przerwania.html

    I przychylę się do zdania:

    arturt134 wrote:
    Na koniec mała sugestia: Spróbuj narysować ten schemat porządnie - tak jak jest w tej chwili jest absolutnie nieczytelny.

    i narysuj go czytelnie tak: Link
    A jeżeli Twój program nie ma etykiet, to zainstaluj darmowego EAGLE.

    Dodatkowo PCB także może rodzić problemy, np. optotriak bardzo blisko uC. W dodatku pod nim idzie w miarę wąska (jak na tyle przekaźników) ścieżka zasilająca układ ze stabilizatora, więc łapie zakłócenia z sieci a dodatkowo spory spadek napięcia przy włączaniu przekaźników.
    misiu_mietowy wrote:
    ATMEGA i gorąca masa. Wpływ zakłóceń z sieci.

    Pokaż dokładne zdjęcia projektu po zmianach, które dokonałeś.

    Moim zdaniem PCB jest do ponownego zaprojektowania, z wydzielonymi obszarami poszczególnych części projektu, prawidłowego prowadzenia ścieżek zasilających, miejscem na filtrowanie o którym zapomniałeś.
  • #45
    misiu_mietowy
    Level 16  
    Poprawilem juz te volatile'y i dalem nowe funkcje obslugi przerwan.
    BTW. Czy przerwanie timera powinno byc tak:
    Code: c
    Log in, to see the code
    ?
    Ale nijak nie wiem w jaki sposob:
    1) zawiesic wykonanie przerwan, gdy zmieniam obroty silnika
    2) poczekac te 4 sekundy na zatrzymanie sie silnika, przeciez nie mam czym zmierzyc czy on juz sie zatrzymal (analogicznie do Twojego rozwiazania z przetwornikiem A/D, gdy mogles sprawdzic czy konwersja sie skonczyla).
    Uruchomic 2gi timer? Przeciez to tez przerwanie i byloby wywolywanie przerwania a z przerwania B
  • #46
    arturt134
    Level 27  
    Taki debouncing to można sobie... używać. Sugerowałbym coś takiego:
    1. Nie używasz przerwania do klawiszy.
    2. Programujesz timer na generowanie przerwania co 10ms.
    3. W przerwaniu to odczytujesz stan pinu i buforujesz go (bufor na 3 odczyty).
    4. Jeżeli 3 odczyty takie same, to akcja (klawisz naciśnięty lub puszczony).
    Filtr RC w takim przypadku jest zbędny, w razie problemów trzeba wydłużyć długość bufora - jest to rodzaj filtru cyfrowego.
  • #47
    misiu_mietowy
    Level 16  
    arturt134 wrote:

    2. Programujesz timer na generowanie przerwania co 10ms.

    A jak ustawic to 10ms?
    v
    Code: c
    Log in, to see the code


    Czy tak?
  • #48
    arturt134
    Level 27  
    Zegar procka masz 1MHz, prescaler 256, czyli zegar timera wynosi:
    TCLK = 1e+6/256 = 3906,25Hz
    Teraz chcesz mieć przerwanie co 10ms, więc:
    OCR1A = TCLK * 10ms = 3906,25 * 0,01 = 39,06, co po zaokrągleniu daje 39.
    Mam nadzieję, że wszystko jasne.
  • #49
    misiu_mietowy
    Level 16  
    Na podstawie informacji od Artura sprobowalem uruchomic 2 timery - Timer2 do obslugi przyciskow i Timer0 do obslugi wyswietlacza 7-seg.
    Kod jest nastepujacy:
    Code: c
    Log in, to see the code


    Obsluga przerwan:

    Code: c
    Log in, to see the code



    Jak widac procedura obslugi przerwania timera t2 powinno wokonywac sie z czestotliwoscia bliska 4 kHz, a wykonuje sie z f = 20...100 Hz (wnioskuje z migania wyswietlacza), natomiast procedura obslugi przerwania timera t2 nie wykonuje sie wcale :(
  • #50
    arturt134
    Level 27  
    Używasz wektora przerwania od przepełnienia licznika timera. Powinieneś używać wektora od TIMERx_COMPA, przecież programujesz tryb CTC i rejestr OCRxA (przynajmniej tak to powinno być zaprogramowane). Generalnie, polecam pobawić się w symulatorze ustawieniami timera (oczywiście po przeczytaniu dokumentacji) - zobaczysz jak działają różne tryby i kiedy się włącza jakie przerwanie.
  • #51
    misiu_mietowy
    Level 16  
    Korzystajac z przewy swiatecznej, wracam do tematu :)
    1) Ustawilem obsluge przyciskow za pomoca timera2 i wszystko dziala OK. Procedure obslugi przerwania przepelnienia wykorzystuje rowniez do innych celow: miganie dioda w trakcie wylaczania silnika przy zmianie obrotow i obsluga wyswietlacza 7segm. Timer2 hula bez przerwy, a o tym czy migac dioda czy nie decyduje ustawiajac zmienna-flage typu boolean w kodzie poza procedura obslugi przerwania.

    2) Douczylem sie Eagle'a i w zalaczniku znajdziecie poprawiony, o wiele bardziej czytelny schemat

    To z czym sie teraz borykam to zmiana predkosci obrotowej silnika.
    a)Jak wysterowac optotriak MOC3063, oznaczony na schemacie symbolem OK1? b) Czy ten optotriak wlacza triak po podaniu krotkiego impulsu (np dlugosci 10 us - cos w tym stylu pisali w dataszicie), czy tez trzeba podawac "1" przez caly ulamek okresu w ktorym motor ma byc wlaczony?
    c) Czy to prawda, ze uklad ten sam sychronizuje triak z przebiegiem z sieci 230V, i zadaniem uC jest tylko podanie prostokata o odpowiedniej czestotliwosci?
  • #52
    ololukiXP
    Level 19  
    Triak (jak i optotriak) załącza się po podaniu krótkiego impulsu na bramkę i pozostaje załączony do końca okresu napięcia sieciowego między anodami. Rozumiem, że do sterowania prędkością obrotową silnika chcesz zastosować klasyczną regulację fazową (czyli ściemniacz). Do tego celu należałoby użyć optotriaka, który załącza się natychmiast po podaniu impulsu np. MOC3020. Optotriaki z synchronizacją z siecią stosuje się do dwustanowego załączania i wyłączania urządzeń, synchronizacja zapobiega powstawaniu zakłóceń i udarów prądowych spowodowanych podłączeniem urządzenia w szczycie napięcia sieci. Zastosowanie takiego optotriaka w ściemniaczu uniemożliwiłoby poprawne jego działanie.
  • #53
    misiu_mietowy
    Level 16  
    ololukiXP wrote:
    Triak (jak i optotriak) załącza się po podaniu krótkiego impulsu na bramkę i pozostaje załączony do końca okresu napięcia sieciowego między anodami. Rozumiem, że do sterowania prędkością obrotową silnika chcesz zastosować klasyczną regulację fazową (czyli ściemniacz).

    Tak.

    ololukiXP wrote:
    Do tego celu należałoby użyć optotriaka, który załącza się natychmiast po podaniu impulsu np. MOC3020.

    Aha :)

    ololukiXP wrote:
    Optotriaki z synchronizacją z siecią stosuje się do dwustanowego załączania i wyłączania urządzeń, synchronizacja zapobiega powstawaniu zakłóceń i udarów prądowych spowodowanych podłączeniem urządzenia w szczycie napięcia sieci.

    No właśnie:) Pisałeś, że muszę zastosować optotriak MOC3020 lub podobny. Ale on wlasnie nie będzie synchronizował się z "zerem" zasilania sieciowego i moze wlaczyc sie jak w gniazdku bedzie akurat chwilowe napiecie np. 280V, 300V albo jakies inne wysokie. czy to nie spowoduje "szarpania" silnikiem?
    Drugie pytanie: Co ze startem takiego silnika? Nie ma synchronizacji z zerem, wiec moze byc jakis udar. Czy mam zastosowac gasik (np. dwojnik szeregowy 30 Ohm + 100 nF polaczony rownolegle do terminali triaka)?
    ololukiXP wrote:
    Zastosowanie takiego optotriaka w ściemniaczu uniemożliwiłoby poprawne jego działanie.

    No to fakt :) Poniewaz boje sie podlaczac swojego wynalazku do silnika, testowalem na zarowce. W najepszym przypadku zarowka migala, nie udao sie uzyskac efektu sciemnienia :)

    Przypomne jeszcze, ze ten triak bedzie sterowal silnikiem 3fazowym przerobionym na zasilanie z 1 fazy. Czy musze uwzgledniac jakies dodatkowe zjawiska?
  • #54
    ololukiXP
    Level 19  
    Quote:
    No właśnie:) Pisałeś, że muszę zastosować optotriak MOC3020 lub podobny. Ale on wlasnie nie będzie synchronizował się z "zerem" zasilania sieciowego i moze wlaczyc sie jak w gniazdku bedzie akurat chwilowe napiecie np. 280V, 300V albo jakies inne wysokie. czy to nie spowoduje "szarpania" silnikiem?

    Na tym właśnie polega zasada działania ściemniacza. Załącza on obciążenie z odpowiednim opóźnieniem względem zera sieci energetycznej. Im większe opóźnienie, tym mniejsza moc na obciążeniu - wynika to z tego, że do obciążenia prąd dopływa przez krótszy czas.
    Quote:
    Czy mam zastosowac gasik (np. dwojnik szeregowy 30 Ohm + 100 nF polaczony rownolegle do terminali triaka)?

    Koniecznie.
    Quote:
    Przypomne jeszcze, ze ten triak bedzie sterowal silnikiem 3fazowym przerobionym na zasilanie z 1 fazy. Czy musze uwzgledniac jakies dodatkowe zjawiska?

    Jeszcze tak dla pewności zapytam: Mowa jest o silniku komutatorowym?
    Pytam, bo regulację fazową stosuje się do silników komutatorowych, a jeśli chciałbyś sterować prędkością silników asynchronicznych lub synchronicznych, musiałbyś zastosować falownik.
  • #55
    misiu_mietowy
    Level 16  
    ololukiXP wrote:

    Na tym właśnie polega zasada działania ściemniacza. Załącza on obciążenie z odpowiednim opóźnieniem względem zera sieci energetycznej. Im większe opóźnienie, tym mniejsza moc na obciążeniu - wynika to z tego, że do obciążenia prąd dopływa przez krótszy czas.

    Aha - bo ja myslalem ze na odwrot - tzn. zalacza obciazenie w zerze i odlacza pewnien czas przed koncem okresu sinusa. :)

    ololukiXP wrote:
    Jeszcze tak dla pewności zapytam: Mowa jest o silniku komutatorowym?
    Pytam, bo regulację fazową stosuje się do silników komutatorowych, a jeśli chciałbyś sterować prędkością silników asynchronicznych lub synchronicznych, musiałbyś zastosować falownik.

    Tak - taki ze szczotkami :)

    A jak podlaczyc moc? :). W dataszicie jest schemat, ale bez wartosci elementow. W innym temacie forumowicz podlaczal w ten sposob: https://www.elektroda.pl/rtvforum/files-rtvforum/optotriak_212.jpg , ale to bylo do sterowania zarowkami (max 100 W) a ja mam silnik 1,5 kW i triak BTB16
  • #56
    arturt134
    Level 27  
    Silnik komutatorowy na pewno ma szczotki, jednak nie każdy silnik ze szczotkami ma komutator....
  • #57
    misiu_mietowy
    Level 16  
    arturt134 wrote:
    Silnik komutatorowy na pewno ma szczotki, jednak nie każdy silnik ze szczotkami ma komutator....

    Aha - moj silnik jest 3f ze starej pompy. Jak bede mial chwile to go rozbiore i dam zdjecia