Skocz do zawartości

Zdychające mostki w LF-gdzie jest błąd?


nanab

Pomocna odpowiedź

Mam problem z mostkami l293d. Zmontowałem prostego LF, wgrałem program testowy i podłączyłem zasilanie. Ku mojemu zaskoczeniu wszystko działało jak należy(na pierwszy rzut oka). Jednak po chwili zauważyłem, ze prawy silnik nie kręci do przodu. Do tyłu bez problemu, a do przodu tylko lekko drga. Sprawdziłem jeszcze raz wszystkie ścieżki-brak zwarć/przerw. Pomierzyłem napięcia podawane na nogi mostka-wszystko ok. 5V pojawia się na tych nogach, na których powinno. Uznałem mostek za ubity w bliżej nieokreślonych okolicznościach i zamówiłem nowe(2szt.). Dzisiaj odebrałem paczkę i zamontowałem nowy mostek. Teraz prawy silnik w ogóle nie reaguje... Ani przód, ani tył, nawet nie drga. Zamieniałem silniki-bez efektu. Mostek nie wybucha, nie dymi, nawet ciepły się nie robi. Przegrzanie przy lutowaniu chyba nie-lutuję dość szybko(ok. 1s jedno wyprowadzenie) w taki sposób, że mogę trzymać na obudowie palec i się nie poparzyć.

Będę wdzięczny za sugestie, bo został mi już ostatni mostek...

Schemat połączeń między uc a mostkiem i zasilania:

Program:

                              $regfile = "m8def.dat"
$crystal = 1000000
$noramclear
Enable Interrupts
                                                            '
Config Portb = &B11000110                                   '
Portb = &B00111000                                          '   konfiguracja portow
Config Portd = &B11101111                                   '
Portd = &B10100000                                          '
Config Portc = &B0000000
Portc = &B0000000

Config Timer1 = Pwm , Pwm = 8 , Prescale = 64 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down       'konfiguracja pwm

Motor_lp Alias Portd.1
Motor_lt Alias Portd.0
Motor_pp Alias Portd.2
Motor_pt Alias Portd.3


Switch1 Alias Pinb.3
Switch2 Alias Pinb.5
Switch3 Alias Pinb.4

Dioda1 Alias Portd.5
Dioda2 Alias Portd.7





Dim Pwm As Byte
Pwm = 155                                                   ' wartosc pwm
Pwm1a = Pwm
Pwm1b = Pwm

Ocr1a = Pwm
Ocr1b = Pwm



Do
Gosub Lewo
Wait 3
Gosub Llewo
Wait 3
Gosub Przod
Wait 3
Gosub Prawo
Wait 3
Gosub Pprawo
Wait 3
Dioda1 = 0
Dioda2 = 1
Wait 1
Toggle Dioda1
Toggle Dioda2
Wait 1
Toggle Dioda1
Toggle Dioda2
Wait 1
Toggle Dioda1
Toggle Dioda2
Wait 1
Loop

Przod:

Motor_lp = 0
Motor_lt = 0
Motor_pp = 0
Motor_pt = 0
Waitms 1
Motor_lp = 1
Motor_lt = 0                                                ' sterowanie mostkiem H
Motor_pp = 1                                                ' przed kazda zmiana zerowanie portow dla
Motor_pt = 0                                                ' ochrony przed stanami zabronionymi mostka
Return

Lewo:

Motor_lp = 0
Motor_lt = 0
Motor_pp = 0
Motor_pt = 0
Waitms 1
Motor_lp = 0
Motor_lt = 0
Motor_pp = 1
Motor_pt = 0
Return

Llewo:

Motor_lp = 0
Motor_lt = 0
Motor_pp = 0
Motor_pt = 0
Waitms 1
Motor_lp = 0
Motor_lt = 1
Motor_pp = 1
Motor_pt = 0
Return

Prawo:

Motor_lp = 0
Motor_lt = 0
Motor_pp = 0
Motor_pt = 0
Waitms 1
Motor_lp = 1
Motor_lt = 0
Motor_pp = 0
Motor_pt = 0
Return

Pprawo:

Motor_lp = 0
Motor_lt = 0
Motor_pp = 0
Motor_pt = 0
Waitms 1
Motor_lp = 1
Motor_lt = 0
Motor_pp = 0
Motor_pt = 1
Return

End

Problem zatrzymał mnie na tym etapie:

Tj. brakuje tylko tasiemki, którą miałem zamontować po pomyślnym przejściu testu 😖

Link do komentarza
Share on other sites

Być może wszystkie mostki są nadal sprawne, na schemacie masz odwrotnie podpięte VCC1 i VCC2! VCC1 (nóżka 16) to napięcie zasilania logiki (powinno być w Twoim przypadku +5V) a VCC2 (nóżka 8) to napięcie zasilania stopnia mocy (w Twoim przypadku BATT). Wystarczy że wylutujesz układ i wlutujesz obrócony o 180 stopni 🙂

Link do komentarza
Share on other sites

grabo, Sprawdziłem jeszcze raz na płytce i w datasheet-to był mój błąd na schemacie-już poprawiłem.

A po zamianie silników, który z nich nie działał?

Powiem tak: wszystkie silniki działają. Nie chcą jedynie kręcić jeśli są podpięte pod "prawą" stronę mostka - 3Y i 4Y.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Sprawdź tylko czy zamiast wystawiania na PD 2 i 3 poleceń poprzez komendy:

Motor_pp = 0/1

Motor_pt = 0/1

działa:

Set PORTD.2

Set PORTD.3

ewentualnie

Reset PORTD.2

Reset PORTD.3

Bo nie wiem jaka tam jest logika. Z doświadczenia wiem, że czasami z aliasami są problemy, z bezpośrednim przypisaniem stanu do pinu w taki sposób nigdy.

Link do komentarza
Share on other sites

Wgrałem wcześniej coś takiego:

                              $regfile = "m8def.dat"
$crystal = 1000000
$noramclear
Enable Interrupts
                                                            '
Config Portb = &B11000110                                   '
Portb = &B00111000                                          '   konfiguracja portow
Config Portd = &B11101111                                   '
Portd = &B10100000                                          '
Config Portc = &B0000000
Portc = &B0000000

Config Timer1 = Pwm , Pwm = 8 , Prescale = 64 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down       'konfiguracja pwm

Dim Pwm As Byte
Pwm = 155                                                   ' wartosc pwm
Pwm1a = Pwm
Pwm1b = Pwm

Ocr1a = Pwm
Ocr1b = Pwm



Do
Portd.1 = 1
Portd.0 = 0                                                 'przod
Portd.2 = 1
Portd.3 = 0
Wait 3
Portd.1 = 1
Portd.0 = 0                                                 'prawo
Portd.2 = 0
Portd.3 = 0
Wait 3
Portd.1 = 1
Portd.0 = 0
Portd.2 = 0                                                 'prawo obrot
Portd.3 = 1
Wait 3
Portd.1 = 0
Portd.0 = 0
Portd.2 = 1                                                 'lewo
Portd.3 = 0
Wait 3
Portd.1 = 0
Portd.0 = 1
Portd.2 = 1                                                 'lewo obrot
Portd.3 = 0
Wait 3

Loop



End

I bez zmian.

Czy jest możliwe, że uc w trakcie uruchamiania podaje na mostek stany nieustalone, które niszczą go w niewidoczny z zewnątrz(wybuch, dym) sposób? Myślałem, że może to wina uc, jeśli np. poda na mostek dwa sygnały "1" i spowoduje zwarcie zasilania tranzystorami mostka, ale coś takiego chyba skończyło by się trzaskiem(?)

Podłączyłem silnik pomiędzy masę a wyjście 4Y, potem między Vcc a 4Y- kręci w obie strony. To samo zrobiłem z wyjściem 3Y- nie kręci w żadną. Na wejściach 3A i 4A pojawiają się napięcia zgodnie z wgranym programem, mimo to sytuacja jak wyżej-na 100% uszkodzenie w mostku. Pytanie tylko skąd się wzięło i jak zapobiec powtórce 🙁

Link do komentarza
Share on other sites

W trakcie programowania na wszystkich pinach mikrokontrolera jest stan wysokiej impedancji. Jeśli nie masz podciągniętych wejść mostka do plusa bądź minusa przez rezystory no to wejścia wiszą w powietrzu, to mogło być przyczyną uszkodzenia, aczkolwiek nie musiało. Nie znam wewnętrznej struktury tego mostka czy ma wejścia wewnątrz podciągane.

Link do komentarza
Share on other sites

To raczej nie to- lf nie ma złącza isp-programuję poza robotem i wkładam zaprogramowany procek w podstawkę. Zagadka nie rozwiązana, ale jest przynajmniej jakaś nauka-podciągać wejścia mostka do masy 🙂

Link do komentarza
Share on other sites

Na schemacie widać że pwm podajesz na nóżki enable.

W takim układzie chyba nie masz hamowania wiec twój LF kiepsko będzie zakręty brał.

I może dlatego ze masz rozpędzony silnik robiący za prądnicę i próbujesz zmienić jego kierunek i następuje jakieś przepięcie.

Link do komentarza
Share on other sites

A nie właśnie do użycia PWM służą wejścia enable? Poza tym wszystkie roboty, które oglądałem mają to podłączone właśnie tak i nikt nie ma takich problemów.

W takim układzie chyba nie masz hamowania wiec twój LF kiepsko będzie zakręty brał.

Silniki po odłączeniu napięcia zatrzymują się praktycznie natychmiast-nie przejedzie więcej niż kilka milimetrów. Jak rozwiążę problem z mostkiem, to zajmę się softem i ewentualnie dorobię hamowanie software'owo.

I może dlatego ze masz rozpędzony silnik robiący za prądnicę i próbujesz zmienić jego kierunek i następuje jakieś przepięcie.

W mostku są diody, a przy silniku kondensatory. Problem pojawił się przy pierwszym uruchomieniu, przy niskim PWM, jeszcze przed rozpędzeniem silników. Przy późniejszych testach na większym wypełnieniu i przy nagłych zmianach kierunku nic złego nie stało się z resztą mostka.

Spróbuję zamontować ostatni w podstawce i podciągnąć wejścia przez 10k do masy.

Link do komentarza
Share on other sites

Przy pomocy miernika sprawdź przy wylutowanym układzie czy nie ma zwarć między padami mostka, może też gdzieś zwierać do masy. Napisz jak zachowuje się mostek, gdy zamiast PWM podasz na wejścia EN na stałe stan wysoki.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.