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

[Rozwiązano] Niska wydajność prądowa na wyjściach sterownika na ATMega328 - buzzer, dioda kontrolna, przekaźniki

milki21 13 Lis 2021 02:11 507 13
  • #1 19705706
    milki21
    Poziom 8  
    Cześć, borykam się z problemem iż mój sterownik wykony na własnej pcb na atmedze328 na 4 pinach okazuje oszałamiającą niską wydajność prądową mianowicie mam sterownik który obsługuje 2 wejścia analogowe 2 wejścia cyfrowe i 6 wyjść cyfrowych. 1 wyjscie to buzzer kolejne to dioda kontrolna a pozostałe 4 to wyjścia na przekaźniki i teraz o dziwo wszystko działa, buzzer i dioda działają jak chce lecz te 4 wyjścia na przekaźniki żyją własnym życiem chodzi o to że pojawia się na nich stan wysoki (w tym przypadku 5v) lecz kiedy podpinam ujście sygnału do np sterowania przekaźnikiem (przekaźnik zasilany odzielnie) to nagle napięcie spada do ponad 1v tak samo dzieje się kiedy podpinam TYLKO zwykłą małą 3mm diode przez rezystor np 220ohm tak samo napięcie spada poniżej 2v (gdzie pobór prądu to kilka mA) co uniemożliwia prawidłowe wykonywanie funkcji. Ma ktoś pomysł jak to rozwiązać? dodam że próbowałem na 2 różnych atmegach328 i to samo tak samo, wyciągnąłem uC z płytki i testowałem na "sucho", dalej taka sama reakcja. Dioda kontrolna podłączona do innego pinu przez taki sam rezystor 220ohm działa prawidłowo. Czy to możliwe aby było coś uszkodzone w uC? i to w dwóch niezależnych jednocześnie? Będę wdzięczny za każdą pożyteczną odpowiedź. Pozdrawiam
  • #2 19705717
    LeoDaVinci
    Poziom 12  
    Cewki przekaźników nie powinny być zasilane bezpośrednio z wyjścia mikrokontrolera nie tylko ze względu na pobór prądu (przeszkadza też indukcyjność). Właściwie nie napisałeś nic o tym, jakim obciążeniem są przekaźniki. czy wszystkie wyjścia wiszą na jednym porcie? Dla działania mikrokontrolera ważna jest też jakość zasilania. Jaka jest wydajność prądowa stabilizatora? Jakie i w których miejscach zastosowałeś pojemności? Czy dołożyłeś choćby 100nF ceramiczny bezpośrednio przy nodze +5V Attmegi?
    Jak dodasz schemat łatwiej będzie pomóc.
  • #3 19705859
    dasej
    Poziom 32  
    Witam,

    Przydał by się Twój schemat by lepiej ocenić czy jest to problem procesora czy konstrukcji.

    milki21 napisał:
    Cześć, borykam się z problemem iż mój sterownik wykony na własnej pcb na atmedze328 na 4 pinach okazuje oszałamiającą niską wydajność prądową mianowicie mam sterownik który obsługuje 2 wejścia analogowe 2 wejścia cyfrowe i 6 wyjść cyfrowych.

    1 wyjscie to buzzer - ( indukcja przez tranzystor )
    kolejne to dioda kontrolna - ( od zasilania do masy, włączana zerem logicznym )
    a pozostałe 4 to wyjścia na przekaźniki - ( przez tranzystor z diodą zabezpieczającą )


    milki21 napisał:

    i teraz o dziwo wszystko działa, buzzer i dioda działają jak chce lecz te 4 wyjścia na przekaźniki żyją własnym życiem chodzi o to że pojawia się na nich stan wysoki (w tym przypadku 5v)

    To raczej czysty przypadek że procesor jeszcze "żyje".


    milki21 napisał:

    lecz kiedy podpinam ujście sygnału do np sterowania przekaźnikiem (przekaźnik zasilany odzielnie) to nagle napięcie spada do ponad 1v tak samo dzieje się kiedy podpinam TYLKO zwykłą małą 3mm diode przez rezystor np 220ohm tak samo napięcie spada poniżej 2v (gdzie pobór prądu to kilka mA) co uniemożliwia prawidłowe wykonywanie funkcji.

    Zmuszasz procesor do pobierania znacznie dużego prądu. 20mA na pin w porcie to duża przesad. Ja diody podłączone bezpośrednio do portu zasilam przez rezystor 4,7k , oczywiście daje te o podwyższone jaskrawości.
    A Ty, wychodzi że ciągniesz przez procesor ponad 100mA.

    Na poniższeym foto masz budowę wyjścia/wejścia, jak widać wszystko idzie przez bramki a nie tranzystory mocy.
    Niska wydajność prądowa na wyjściach sterownika na ATMega328 - buzzer, dioda kontrolna, przekaźniki

    Kolejna sprawa wynika że masz problem z zasilanie.

    milki21 napisał:

    Ma ktoś pomysł jak to rozwiązać? dodam że próbowałem na 2 różnych atmegach328 i to samo tak samo, wyciągnąłem uC z płytki i testowałem na "sucho", dalej taka sama reakcja. Dioda kontrolna podłączona do innego pinu przez taki sam rezystor 220ohm działa prawidłowo. Czy to możliwe aby było coś uszkodzone w uC? i to w dwóch niezależnych jednocześnie? Będę wdzięczny za każdą pożyteczną odpowiedź. Pozdrawiam
  • #4 19705919
    kamyczek
    Poziom 38  
    Po takim podłaczeniu możę być już uszkodzony mikrokontroler . Poza tym pytanie podstawowe czy w programie prawidlowo skonfigurowano wyprowadzenia , czy w prawidlowy sposób podlaczono zasilanie i kondensatory filtrujace . Po prostu autor powinien uzupwlnić brakujacą wiedzę i bedzie ok .
  • #6 19706093
    tmf
    VIP Zasłużony dla elektroda
    dasej napisał:
    Zmuszasz procesor do pobierania znacznie dużego prądu. 20mA na pin w porcie to duża przesad. J

    Nie, to absolutnie zgodne ze specyfikacją MCU.
    dasej napisał:
    A Ty, wychodzi że ciągniesz przez procesor ponad 100mA.

    To też jest ok. O ile pamiętam prąd dla całego MCU powinien być mniejszy niż 200 mA.
    kamyczek napisał:
    Po takim podłaczeniu możę być już uszkodzony mikrokontroler .

    Nie wiem dlaczego zakładacie, że autor podłączył przekaźniki bezpośrendio pod IO MCU.
    milki21 napisał:
    kiedy podpinam ujście sygnału do np sterowania przekaźnikiem (przekaźnik zasilany odzielnie) to nagle napięcie spada do ponad 1v tak samo dzieje się kiedy podpinam TYLKO zwykłą małą 3mm diode przez rezystor np 220ohm tak samo napięcie spada poniżej 2v

    Wydaje mi się, że to nie jest podłączone bezpośrednio.
    Myślę, że problem autora polega na tym, że te piny nie są ustawione jako wyjścia, lecz są wejściami z podciąganiem. Trzeba sprawdzić wartość rej. DDRx.
  • #7 19706141
    milki21
    Poziom 8  
    Nie ciągnie dużo prądu nawet miernik pokazuje pobór całego układu wraz z dwoma diodami rzędu 30 40 mA stabilizator ma 1A wydajności. Jak pisałem cewki przekaźników są zasilane nie z mikrokontrolera tylko oddzielnie tylko daje sygnał przez transoptory dodatkowo zabezpieczone przekaźniki diodą. Tak mam kilka kondensatorów 100nF i 10uF do odpowiedniego zasilania mikrokontrolera.
    Dioda pobiera mniej niż 10mA przez rezystor 220 tak że podłączajać diode bezpośrednio przez resytor do uC nie ma czego sie obawiać

    w załączniku schemat lecz tam gdzie jest podciagniecie do masy 4 wyjść rezystorem 10k juz ich nie ma jakby co a nawet jeśli by było to są prądy mniejsze pewnie niz 1mA zależało mi na 0v na wyjściu kiedy nie podaje sygnału ale dla testów je odciąłem

    nie ma oscylatora celowo bo 8mhz wewnetrzy powinien wystarczyć do tego projektu.

    O, zaczynam się obawiać że coś w programie przy okazji innych zmian zmieniłem bo zwykły program migający tylko diodą działą na tych pinach co nie było mocy i diody świecą. ale dziwi mnie bo pojawia się logiczna 1 na wyjściach na mierniku równe 5v lecz sygnał taki słaby że nic z tym nie da się zrobić. Spróbuje zrobić backupa programu i zobaczyć czy są zmiany
  • #8 19706174
    tmf
    VIP Zasłużony dla elektroda
    milki21 napisał:
    ale dziwi mnie bo pojawia się logiczna 1 na wyjściach na mierniku równe 5v lecz sygnał taki słaby że nic z tym nie da się zrobić.

    Tak jak ci pisałem - najpewniej masz te piny ustawione jako wejścia z podciąganiem. Ponieważ rezystor podciągający jest rzędu 40 k, więc nie ma szans pociągnąć większy prąd. Ustaw te piny jako wyjścia i będzie ok. Najpewniej masz jakiś błąd w programie. Jeśli masz debugger, to przerwij wykonywanie programu i sprawdź odpowiedni rejestr DDR.
  • #9 19706189
    milki21
    Poziom 8  
    dodałem link do programu w poprzednim poście. uC jest sprawny wszystko działa. ale ten program też działał prędzej na testach a arduino wrzucę jeszcze raz na ardu i zobaczę. A może jakieś krzaki wychodzą przez WTD? watchdoha bo też używam w tym programie spróbuje go wywalić.

    Edit:
    Niestety po wyrzuceniu wtd też nic się nie zmieniło
  • Pomocny post
    #10 19706218
    tmf
    VIP Zasłużony dla elektroda
    Przypuszczam, że ta sekwencja jest błędna:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Najpierw ustawiasz te piny jako wyjścia (poprawnie), a potem tą samą funkcją nadajesz im stan niski (jak sądzę, powoduje to właśnie przestawienie ich na wejścia). Tam chyba powinno być digitalWrite, a nie pinMode.
  • #11 19706228
    milki21
    Poziom 8  
    kurde człowiek się łapie na takich prostych rzeczach. tak racja tam powinno być digitalWrite a nie pinMode lecz nawet po wycięciu tego kawałka kodu nie ma efektu
  • Pomocny post
    #12 19706236
    mpier
    Poziom 29  
    Tak,
    najpierw ustawisz pin na wyjście, później na wejście, i żeby nie było za mało, to wcześniej (żeby się upewnić, że nie zadziała) uruchamiasz na tym pinie port szeregowy (RX).

    Dodano po 4 [minuty]:

    Do tego na schemacie zaznaczasz wyjście na pinach 0 i 1, a w programie na 0 i 12.
  • #13 19706317
    milki21
    Poziom 8  
    taak racja mam już kod poprawiony numer pinu lecz akurat testowałem na sucho z wyciągniętym mikrokontrolerem co robi na innych wyjściach i skopiowałem tak kod.

    Takk jest dzęki wielkie działa!!! Problemem był aktywny serial port który wysyłał informacje. Projekt był tworzony na arduino leonardo(atmega32) a zapomniałem że leonardo ma dwa serial porty i ten pierwszy nie jest na tych pinach co korzystałem a atmega328 ma na tych pinach ten serial port i cały czas były wysyłane informacje zamiast normalnego cyfrowego wyjścia. Teraz działa wszystko jak należy
  • #14 19706439
    milki21
    Poziom 8  
    taak racja mam już kod poprawiony numer pinu lecz akurat testowałem na sucho z wyciągniętym mikrokontrolerem co robi na innych wyjściach i skopiowałem tak kod.

    Takk jest dzęki wielkie działa!!! Problemem był aktywny serial port który wysyłał informacje. Projekt był tworzony na arduino leonardo(atmega32) a zapomniałem że leonardo ma dwa serial porty i ten pierwszy nie jest na tych pinach co korzystałem a atmega328 ma na tych pinach ten serial port i cały czas były wysyłane informacje zamiast normalnego cyfrowego wyjścia. Teraz działa wszystko jak należy

    Dodano po 1 [godziny] 12 [minuty]:

    Problem programowy. Użytkownik zauważył iż używałem jednocześnie serial portu i wyjścia na przkeaźniki na tym samym pinie

Podsumowanie tematu

Użytkownik zgłosił problem z niską wydajnością prądową na wyjściach sterownika opartego na ATmega328, który obsługuje buzzer, diodę kontrolną oraz przekaźniki. Po podłączeniu przekaźników i diody, napięcie na wyjściach spadało do wartości poniżej 2V, co uniemożliwiało prawidłowe działanie. Uczestnicy dyskusji zasugerowali, że problem może wynikać z nieprawidłowego ustawienia pinów jako wejść z podciąganiem, co ograniczało prąd. Wskazano również na znaczenie odpowiedniego zasilania i kondensatorów filtrujących. Ostatecznie, użytkownik zidentyfikował problem w kodzie, gdzie aktywny port szeregowy kolidował z wyjściami na przekaźniki, co zostało naprawione przez poprawne ustawienie pinów i usunięcie konfliktu w programie.
Podsumowanie wygenerowane przez model językowy.
REKLAMA