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

driver L298 - nie działa i wariuje

15 Maj 2011 19:24 5759 31
  • Poziom 12  
    Witam. Zmontowałem driverek na układzie l298n i pojawił się problem.
    Dwa układy pod rząd po podaniu sygnału na wejścia nie kręcą silnikami a jedynie wymuszają jakiś wielki prąd "naokoło" siebie.

    Przykład: podłączam logikę, zasilanie silników, wentylatorek kręci się spokojnie... podaję sygnał na wej. 1 i kręci.
    podając sygnał na inne wejścia wentylatorek i wszystko inne podłączone pod stabilizator od logiki wariuje a silniki stoją.

    Schemat i płytkę sprawdzałem ze sto razy i wygląda poprawnie.
    Z początku pierwszy driver kręcił na trzech kanałach i tylko jeden wariował. Kupiłem drugi (bo nie chcieli uznać reklamacji) i tym razem działa i to ledwo jeden kanał.

    załączam schemat i płytkę:

    driver L298 - nie działa i wariuje driver L298 - nie działa i wariuje
    Na płytce tego nie ma, ale pin 1 i 15 oczywiście mostkuję do masy.
  • PCBway
  • Pomocny post
    Poziom 39  
    Cytat:
    Przykład: podłączam logikę, zasilanie silników, wentylatorek kręci się spokojnie... podaję sygnał na wej. 1 i kręci.
    podając sygnał na inne wejścia wentylatorek i wszystko inne podłączone pod stabilizator od logiki wariuje a silniki stoją.

    Jeżeli układ sprawdzasz statycznie to podstawowa sprawa nie wolno pozostawiać wiszących wejść w powietrzu , najprościej wszystkie IN1÷4 i oba Enable połącz opornikami 4,7 ÷ 10kΩ do masy masz pewny stan L na tych wejściach . Dopiero teraz baw się w dowolną konfigurację ustawień , jak nie korzystasz z PWM to oba Enable do +5V a do zmiany kierunku tylko IN1±4 . Kolejna sprawa to diody zabezpieczające nie mogą to być zwykłe prostownicze muszą to być szybkie diody o prądach co najmniej równych prądowi silnika . Wiszące wejścia powodują stany nie ustalone , tak więc mogłeś " ugotować " kolejnego L298 diody to kolejny krok w tym kierunku . Logikę sterowania masz w dokumentacji L298 .
  • PCBway
  • Poziom 12  
    Dzięki za pomoc. O rezystorach myślałem ale nie w roli podciągania do masy,
    nie rozumiem tylko do końca dlaczego koniecznie muszą być tu diody schottky.
    Tak czy siak zaprojektowałem wszystko od nowa.
    (na schemacie nie są diody schottky ale te miały właściwy rozstaw)
    driver L298 - nie działa i wariuje driver L298 - nie działa i wariuje driver L298 - nie działa i wariuje

    Mam nadzieję że teraz jest poprawnie. (jeśli tak, to zamieszczę pliki eagle dla potomności)
  • Pomocny post
    VIP Zasłużony dla elektroda
    dnuk napisał:

    nie rozumiem tylko do końca dlaczego koniecznie muszą być tu diody schottky.


    Bo zwykłe diody mogą się okazać za wolne i w rezultacie działają tak jakby ich nie było - szpile wracają do klucza tranzystorowego w celu jego uszkodzenia ;)
  • Pomocny post
    Poziom 39  
    Dopowiadając do wypowiedzi McRancor-a dla L298 zalecane są diody z czasem poniżej 200ns ale to w przypadku pracy max. kluczowaniem dla tego układu wynoszącym 40kHz , dla prostych zastosowań wystarczą diody schottky przy okazji możesz sobie zobaczyć różnice czasowe dla różnego typu diod .
    Cytat:
    na schemacie nie są diody schottky ale te miały właściwy rozstaw

    tak się składa że 1N5819 jest diodą schottky http://www.fairchildsemi.com/ds/1N/1N5817.pdf
  • Poziom 12  
    Cytat:

    tak się składa że 1N5819 jest diodą schottky

    Chodziło mi o symbole, bo nazwy specjalnie zmieniłem na 1n5819 ale to już szczegóły ;]

    Natomiast co do nowego schematu rozumiem, że mogę go uznać już za prawidłowy?
    Chyba że coś można tam jeszcze dorzucić.

    Ma to być końcówka mocy do silników 24v ok.1A na zatrzymaniu w małym robocie.
    Całość sterowana z uC 89s52 (przynajmniej z początku)
  • Pomocny post
    Poziom 39  
    Cytat:
    Ma to być końcówka mocy do silników 24v ok.1A na zatrzymaniu w małym robocie.
    Całość sterowana z uC 89s52 (przynajmniej z początku)

    Jeżeli ma to być bezpośrednio sterowane z uC to rezystory są zbyteczne ponieważ praktycznie ( poza czasem resetu i startu programu ) na wyjściach uC masz ustalone stany H lub L , oczywiście te rezystory w niczym nie przeszkadzają i mogą pozostać . Natomiast w przypadku różnego rodzaju testów i prób statycznych są konieczne aby zapewnić prawidłowy stan na wejściach układu L298 . Zaproponowane rozwiązanie jest dobre ( z rezystorami ) ponieważ jest uniwersalne i może być sterowane zarówno z uC jak i mikrowyłączników dodaj jeszcze kondensatory elektrolityczne dla obu napięć +5V 220 ÷470µF , +24V 1000- 2200µF . Można by jeszcze pokusić się o stabilizator +5V ale przy 24V zasilania moc strat będzie bardzo duża nawet dla niewielkich prądów .
  • Poziom 12  
    Tak jak obiecałem, wstawiam gotowe pliki z eagle'a. Może ktoś kiedyś wykorzysta.
    Jeżeli ktoś oprócz mnie to złoży może się tu pochwalić jak śmiga ;]

    Dzięki serdecznie za pomoc merytoryczną. Jak przyjadą nowe scalaki pochwalę się czy a raczej jak działa.

    Pozdrawiam
  • Poziom 12  
    Melduję posłusznie, że układ ożył i wszystko działa jak należy ;).
    Teraz jest kolejna sprawa. A mianowicie to, czy mikrokontroler mający 50uA obciążalności na jedynce może sterować bezpośrednio driverem.
    Aktualnie plan mam taki aby sterować zerami (do 1mA) poprzez optoizolatory z darlingtonem (akurat mam je pod ręką).
  • VIP Zasłużony dla elektroda
    Niepotrzebnie komplikujesz układ, steruj bezpośrednio. Co to za mikrokontroler że ma tak znikomą obciążalność?
  • Poziom 12  
    Mikrokontroler to wspomniany już AT89s52. Sprawdzałem w nocie i wychodzi na to, że ma na 1 ok. 60uA, na 0 wytrzymuje 1,5mA.
    Bajecznie łatwo się go programuje, ale ma wady. Jedyne co poza tym ogarniam to sterowniki plc, ale tego do robota nie wpakuję :/
    Dodatkowo jest to projekt szkolny, więc muszę '52 zastosować...
  • VIP Zasłużony dla elektroda
    Heh, to żeś dziadka odkopał... Ale w sumie wystarczy.

    Możesz go podłączyć bezpośrednio, będzie działał. Przy większym prądzie może siąść napięcie, ale spokojnie wystarczy żeby jedynkę logiczną uzyskać/
  • Poziom 39  
    Nie zbyt dokładnie doczytałeś dokumentację :
    Cytat:
    Maximum IOL per port pin: 10 mA
    Maximum IOL per 8-bit port:
    Port 0: 26 mA Ports 1, 2, 3: 15 mA
    Maximum total IOL for all output pins: 71 mA

    Należy pamiętać że port0 jest typu open drain w zależności od wykorzystania może wymagać rezystorów podciągających , wyjaśniono to tutaj tak więc wszystko zależy od prądu diod transoptorów , ważny jest również sumaryczny prąd całego obciążenia mikrokontrolera .
  • Poziom 12  
    Zapomniałem dodać, że chodzi mi o obciążalność pojedynczej linii.
    Wtedy te 1.5mA jest mniej więcej bliskie prawdzie przy obciążeniu całego portu.
    W nocie od uC jest napisane, że wytrzyma 60uA na 1. Pytanie czy to na port czy na linię. Jak na linię to wystarczą rezystory i mogę sterować bezpośrednio, bo driver na poj. wejściu przymuje od 30 do 100uA.
    Jak plotę głupoty to mnie naprostujcie.
    Przypomniałem sobie jeszcze, że silniki biorą ok. 2-3A na starcie (potem 0,8 na obc.). Czy diody jedno amperowe to przeżyją przy obciążeniu? Ewentualnie mogę pokombinować z soft startem.
  • VIP Zasłużony dla elektroda
    60uA jest na pin, mostek sterowany jest cyfrowo. 60uA wystarczy w zupełności, to nie jest tak że 61uA spowoduje eksplozję.

    Widziałem już roboty na tym klocku i L298 więc śmiało możesz cisnąć bez stresu.
  • Poziom 12  
    Podłączyłem wszystko bezpośrednio. Zasilanie sterownika pociągnąłem z odczepu
    w pakietach żeby się nie grzał zbytnio stabilizator w nim
    (chciałem z osobnej baterii ale pozostaje kwestia kilku różnych mas teraz jest z jednego źródła).
    Według programu powinien kręcić obydwoma silnikami. Ale nie kręci wcale.
    Statycznie "z druta" silnikami kręci. Czyżby jednak uC nie dawał rady?
    Podczas pracy odłączyłem i podłączyłem sterowanie i jakieś podrygi były.. Spróbuję przez wspomniane już transoptory.
  • VIP Zasłużony dla elektroda
    Zmierz napięcia na wejściach i prawdy się dowiesz.
  • Poziom 39  
    Strasznie chaotycznie to wszystko opisałeś , właściwie to zrób schemat Twojego połączenia i będzie wszystko jasne . Za bardzo nie rozumiem połączenia zasilania tylko w tym wszystkim jest podstawowa sprawa na którą chyba nie zwróciłeś uwagi , napięcie Vs musi być większe o 2,5 V od stanu H na wejściach masz spełniony ten warunek .
    Kolejna sprawa który port używasz do sterowania , jak P0 to przeczytaj wcześniejszy mój post , nie wiem czy sterujesz to bezpośrednio czy z transoptorami ale najprostszą metodą to sprawdzenia sterowania to podpięcie do danego portu diod led + rezystor oraz wizualna obserwacja co się dzieje , zakładam że program masz w porządku napisany .
  • Poziom 12  
    witam po dłuższej przerwie. Podłączyłem układ za pośrednictwem transoptorów.
    Z początku działało to poprawnie przy programie jedź prosto, ale po puszczeniu sekwencji już jakby się "ruchy" myliły... to pewnie odwrotnie podłączony silnik lub sterowanie ale do tego dochodzi
    drganie i samowolne kręcenie jednym silnikiem na postoju. (znowu stan nieustalony?) uc sterować steruje.. ale coś mu się tam miesza znowu i silniki reagują inaczej niż to przewidziałem.
    Za transoptorami są rezystory ustalające (przy driverze),
    ale przed transoptorami (przy diodach) ich nie ma. steruję z P2 więc rezystory ustalające są zbędne chyba... statycznie kręci poprawnie.
    Jedyne co mi przychodzi do głowy to uszkodzone transoptory. były z demontażu.
    Sprubuję to jeszcze wykonać klasycznie na zwykłych tranzystorach...
  • Poziom 12  
    schemat układu z transoptorami:
    driver L298 - nie działa i wariuje pominąłem jedynie rezystory podciągające do masy bo są one w driverze na wejściach. mierząc miernikiem bez podłączonego drivera wydawało się być ok.
    Schemat drivera post 3, schemat starterkitu pomijam, bo i tak leci to z portu bezpośrednio

    program jest sam w sobie ok bo diodki w starterkicie świecą poprawnie... mimo wszystko oto program (testowy, nie końcowy) :
    CZUJNIK1 EQU P1.0
    CZUJNIK2 EQU P1.1
    CZUJNIK3 EQU P1.2
    CZUJNIK4 EQU P1.3
    CZUJNIK5 EQU P1.4

    PRAWY_WTYL EQU P2.4
    PRAWY_WPRZOD EQU P2.5
    LEWY_WTYL EQU P2.6
    LEWY_WPRZOD EQU P2.7
    ;-----------------------------------------------------------------------------------------------------

    LJMP START


    START:
    LCALL STOP

    LCALL CZEKAJ1

    LCALL PROSTO
    LCALL CZEKAJ1
    LCALL STOP

    LCALL CZEKAJ1

    LCALL COFAJ
    LCALL CZEKAJ1
    LCALL STOP

    LCALL CZEKAJ1

    LCALL OBROT_WPRAWO
    LCALL CZEKAJ1
    LCALL STOP

    LCALL CZEKAJ1

    LCALL OBROT_WLEWO
    LCALL CZEKAJ1
    LCALL STOP

    ;----------------------------------------------------------------------------------------------------




    ;**************Podprogramy odczekania czasu A* 1s******

    ORG 600H
    TIMEN1:
    PUSH ACC ;przechowaj na stosie
    ;licznik zewnętrzny
    MOV A,#250 ;zacznij odliczać 125*0.4ms=50ms
    TIME1:
    PUSH ACC ;2 cykle
    MOV A,#236 ;2 cykle
    DJNZ ACC,$ ;236*2=472 cykle
    POP ACC ;2 cykle
    DJNZ ACC,TIME1 ;2 cykle
    ;razem 480 cykli=0.4ms

    POP ACC ;odtwórz licznik
    DJNZ ACC,TIMEN1 ;odlicz N*0.4ms
    RET

    CZEKAJ:
    MOV A,#5
    ACALL TIMEN1
    RET


    CZEKAJ1:
    MOV A,#10
    ACALL TIMEN1
    RET


    CZEKAJ2:
    MOV A,#15
    ACALL TIMEN1
    RET


    ;************** KONFIGURACJA STANÓW DLA WSZYSTKICH MOŻLIWYCH RUCHÓW ***********

    PROSTO: ; !!!!!! STEROWANIE ZERAMI !!!!!

    CLR PRAWY_WPRZOD
    CLR LEWY_WPRZOD
    SETB PRAWY_WTYL
    SETB LEWY_WTYL
    RET


    SKRET_WPRAWO:

    CLR LEWY_WPRZOD
    SETB PRAWY_WPRZOD
    SETB PRAWY_WTYL
    SETB LEWY_WTYL
    RET


    SKRET_WLEWO:

    CLR PRAWY_WPRZOD
    SETB LEWY_WPRZOD
    SETB PRAWY_WTYL
    SETB LEWY_WTYL
    RET


    OBROT_WPRAWO:

    CLR LEWY_WPRZOD
    CLR PRAWY_WTYL
    SETB PRAWY_WPRZOD
    SETB LEWY_WTYL
    RET


    OBROT_WLEWO:

    CLR PRAWY_WPRZOD
    CLR LEWY_WTYL
    SETB LEWY_WPRZOD
    SETB PRAWY_WTYL
    RET


    COFAJ:

    CLR LEWY_WTYL
    CLR PRAWY_WTYL
    SETB PRAWY_WPRZOD
    SETB LEWY_WPRZOD
    RET


    STOP:

    SETB LEWY_WTYL
    SETB PRAWY_WTYL
    SETB PRAWY_WPRZOD
    SETB LEWY_WPRZOD
    RET
  • Poziom 12  
    ups.. Zapomniałem powiedzieć jakich transoptorów użyłem... zastosowałem til113 (na schemacie są inne bo akurat piny pasowały - sprawdzałem)
    a rezystory są 1,5k lecz to bez różnicy. Chodziło mi o to, aby linie portu nie dostały zanadto po dupie dlatego akurat takie.
  • Poziom 39  
    Kolego strasznie kombinujesz z tymi transoptorami , aby to miało sens przez diodę IR transoptora musi przepłynąć konkretny prąd , liczymy przy Twoich rezystorach
    I= Uzas - Udiody / rezystor I = 5V - 1,2 V / 1500 co daje 2,53 mA stanowczo za mało przynajmniej prąd diody 10mA lub więcej . Rezystor 330Ω da 11,5mA co może być jeszcze za mało , ponadto wybrałeś transoptor w układzie Darlington z wyprowadzoną bazą którą wypadało by spolaryzować a nie pozostawiać wiszącą w powietrzu , dalej rezystory 2kΩ w obwodzie emiterów są za małe a w przypadku kiedy łączysz układ z wcześniej zaprojektowanym na L298 to już zupełna pomyłka , przecież masz już tam 4,7kΩ a Ty dodatkowo łączysz równolegle 2kΩ . Nie dziw się że to nie działa bo wątpię że masz na wejściu L298 odpowiednie stany L / H szczególnie H ciekawe czy to sprawdzałeś . Zacznij od wymiany rezystorów , dokonania stosownych pomiarów prądów diod oraz stanów logicznych na wejściu L298 przy sterowaniu z transoptora . Umieść program w odpowiednich znacznikach ( listing kodu ) i większą czcionką .
  • Poziom 12  
    bogdan_p napisał:
    stanowczo za mało przynajmniej prąd diody 10mA lub więcej

    Z tym się zgodzę, jednak obawiałem się że upalę Uc.
    bogdan_p napisał:
    transoptor w układzie Darlington z wyprowadzoną bazą którą wypadało by spolaryzować a nie pozostawiać wiszącą w powietrzu

    Fakt, o tym nie pomyślałem. rozumiem że powinienem dociągnąć do masy?
    bogdan_p napisał:
    rezystory 2kΩ w obwodzie emiterów są za małe a w przypadku kiedy łączysz układ z wcześniej zaprojektowanym na L298

    Już napisałem wcześniej że ich tam w rzeczywistości nie ma. Właśnie dlatego, że już są 4k7 w układzie drivera.

    Czułem że transoptory to lipny pomysł. Czy któryś z forumowiczów mógłby zaproponować układ aby to wysterować? Zaoszczędzi to mi i innym czasu i nerwów ;] .
  • Moderator Mikrokontrolery Projektowanie
    Dając 330R nie uszkodzisz uC.
    Transoptory to nie jest zły pomysł (eliminacja zakłóceń), tylko zastanów się do czego służą transoptory vs jak go zasilasz.
    Przeczytaj pkt 5: http://mikrokontrolery.blogspot.com/2011/04/zakocenia-w-pracy-mikrokontrolerow.html
    I co nieco o transoptorach: http://mikrokontrolery.blogspot.com/2011/04/transoptor.html
  • Poziom 39  
    Cytat:
    Transoptory to nie jest zły pomysł (eliminacja zakłóceń)

    Nie tylko , podstawowe zastosowanie to separacja galwaniczna , tylko jaki sens ma w tym przypadku ich zastosowanie kiedy wszystko jest z wspólnego źródła zasilania podejrzewam że również mikrokontroler korzysta z tego samego zasilania .
    Miałem zapytać o to wcześniej dlaczego nie sterujesz tego bezpośrednio port > wejście L298 tylko kombinacje z transoptorami , przy rezystorach 4,7kΩ prąd dla wymuszenia stanu H to 1mA mikrokontroler powinien bez problemu dać radę , jeżeli nie to zwiększ do 10kΩ . Najpewniej masz przy obecnej konfiguracji wymusić na porcie stany H / L i dokonać pomiarów napięcia to wyjaśni wszystko , tak to będziesz pisał że nie działa a wszyscy będą zgadywać w czym problem .
    Oczywiście możesz zastosować transoptory ale dokładnie to samo wymusić na mikrokontrolerze odpowiednie stany dokonać pomiarów i podstawowa sprawa użyć właściwej konfiguracji zasilania i sterowania transoptorów .
  • Moderator Mikrokontrolery Projektowanie
    bogdan_p napisał:
    Nie tylko , podstawowe zastosowanie to separacja galwaniczna , tylko jaki sens ma w tym przypadku ich zastosowanie kiedy wszystko jest z wspólnego źródła zasilania podejrzewam że również mikrokontroler korzysta z tego samego zasilnia .

    A ja niby o czym napisałem :)
  • Poziom 39  
    Kolego eliminacja zakłóceń to nie to samo co separacja galwaniczna wej / wyj , według Ciebie to transoptor nie przenosi zakłóceń ?
    Jeżeli powstają zakłócenia po stronie nadawczej to tak samo będą na wyjściu i transoptor ich na pewno nie zlikwiduje .
  • Moderator Mikrokontrolery Projektowanie
    Kolego bogdan_p, czytaj ze zrozumieniem teksty które cytujesz, w szczególności wytłuszczony tekst:

    dondu napisał:
    Transoptory to nie jest zły pomysł (eliminacja zakłóceń), tylko zastanów się do czego służą transoptory vs jak go zasilasz.


    a pod tym linkiem w punkcie 5:
    dondu napisał:

    kryje się np. taki schemacik:

    driver L298 - nie działa i wariuje
    który odzwierciedla przypadek autora tematu, w dodatku ładnie opisany oraz dodatkowy tekst na czerwono:

    Cytat:
    Rozdzielamy zasilania i nie łączymy mas razem.


    a pod linkiem
    dondu napisał:

    kryje się teoria transoptora z uwzględnieniem galwaniczego rozdzielenia.

    No tak, oczywiście
    bogdan_p napisał:
    Kolego eliminacja zakłóceń to nie to samo co separacja galwaniczna wej / wyj , według Ciebie to transoptor nie przenosi zakłóceń ?
    Jeżeli powstają zakłócenia po stronie nadawczej to tak samo będą na wyjściu i transoptor ich na pewno nie zlikwiduje .

    bardzo pouczające :D i jakby nieco ... brak mi słów. Takie zakłócenia nie mają nic wspólnego z tematem poruszanym przez autora i mnie.