Skocz do zawartości

Dobór odpowiedniego sterownika dla 4 silników dc


marecki_vv

Pomocna odpowiedź

Witam wszystkich.

Na wstępie chciałem zaznaczyć że jestem początkującym w temacie robotyki.

Mój problem polega na tym że chciałem zbudować robota z kamerką oparty na raspberry pi.

Chciałem wykorzystać podwozie tego typu:

https://botland.com.pl/podwozia-robotow/7289-podwozie-robota-4wd-czterokolowe-z-silnikami-prostokatne.html

i nie wiem jaki dokładnie wybrać mam sterownik dla tej platformy. Z tego co jest na botland.pl, to ta wydaje mi się najlepsza: https://botland.com.pl/sterowniki-silnikow-dc/546-pololu-drv8833-dwukanalowy-sterownik-silnikow-108v12a.html

Oczywiście zdaje sobie sprawę że całość będzie działać na granicy swoich możliwości.

Całość może być zasilana albo bezpośrednio z li-ion albo z 2 przetwornic (każda 2A max).

Czy taki zestaw ma szansę zadziałać? Jeśli nie to proszę również o jakieś sugestie zmiany (w rozsądnej cenie 🙂 )

Link do komentarza
Share on other sites

Przede wszystkim upewnij się, że będziesz w stanie wygenerować 4 kanały PWM o sensownej częstotliwości z RPi. O ile wiem ten komputerek jest ubogi w tego typu wyjścia (jedyne dostępne zużyto na audio) więc trzeba posiłkować się programowym machaniem pinami a to zawsze kosztuje dużo czasu procesora. Dużo bardziej eleganckim rozwiązaniem jest podpięcie jakiejś płyteczki z małym mikrokontrolerem (np. któregoś Arduino) przez np. UART lub I2C jako sterownika silników, czujników itp. Te maluchy mają kilka sprzętowych kanałów PWM i z tym zadaniem poradzą sobie bez problemu. Niech Malina robi to co umie najlepiej: obsługuje kamerę, łączność WiFi, rozpoznawanie otoczenia, planowanie taktyczne itp.

Silniczki w tym podwoziu są dość delikatne i przepuszczanie przez nie 1A w zatrzymaniu załatwi je bardzo szybko. Tak więc bardziej obawiałbym się o nie niż o 1.2A mostki.

No i przemyśl czy rzeczywiście potrzebujesz 4 PWMów. Przecież silniki po jednej stronie mogą pracować razem z jednego mostka. Wtedy potrzebujesz tylko 2, ale za to silniejsze.

Link do komentarza
Share on other sites

Dzięki za odpowiedź.

Sprawdziłem generowanie PWM na malinie i przy czestotliwości 500 Hz i 4 kanałach to obciążenie procesora dla tego procesu to około 5%. Więc akceptowalnie (wysokie częstotliwości mocno obciążają procesor). Co dokładnie oznacza "sensowna częstotliwość"? czy chodzi o to żeby generować powyżej 20kHz w celu wyeliminowania specyficznego hałasu wydawanego przez silnik? bo jeśli tak to raczej nie będzie mi to przeszkadzać. Chyba że jest jakiś techniczny powód stosowania wyższych częstotliwości.

Tak. Masz rację że nie potrzebuję 4 kanałów PWM. Wystarczą 2 kanały odpowiednio podłączone.

Wobec tego pozostaje jeszcze pytanie: jaki prąd maksymalny można uznać za bezpieczny dla takiego jednego silniczka? (ten sterownik ma możliwość ograniczenia prądu).

Link do komentarza
Share on other sites

Tak, ten akurat driver ma fajną możliwość zamiany domyślnych zworek na rezystory i ograniczenia prądu silnika do 200mV/R. Gdybyś miał wysokie zasilanie (np. LiPol 3S) wtedy istniałaby szansa zaszkodzenia tym silnikom - szczególnie przy większych obciążeniach i "silnym" PWM, ale takiego napięcia nie wytrzyma z kolei sam scalak. Tak więc moim zdaniem nie musisz się tym przejmować. Te silniczki przy zasilaniu z 6V pobierają przy zatrzymaniu ok. 600-700mA a z dużo niższego nie warto ich napędzać, bo są słabiutkie i wolne. Masz więc do wyboru:

- albo dajesz mostkom 3-4V, dostajesz na kołach jakieś 60rpm (wolno, niestety..) i wtedy możesz z jednego modułu szarpnąć wszystkie 4 silniki (kanał na stronę) nawet do zatrzymania i nic nikomu nie grozi,
- albo ten sam sprzęt z zasilaniem 6-7V i ograniczeniem prądu jednego mostka do np. 1A (opornik 200mΩ) - trochę oszczędnościowe, ale zadziała choć silniki będą "głodzone" na podjazdach i przy cięższych skrętach - szybko tego pożałujesz,
- albo zostawiasz zasilanie na poziomie 6-7V, kupujesz dwa moduły DRV8833 i wtedy każdy silnik dostaje własny mostek - to też nie grozi zniszczeniem niczego, za to dysponujesz 2 razy większymi momentami, 2 razy większymi prędkościami i oczywiście 4 razy większą mocą na osiach,
- albo kupujesz 2 mocniejsze mostki i dalej - wiadomo.

Ja jednak z powodów czysto edukacyjnych pokusiłbym się o 4 niezależne kanały PWM, 4 mostki i 4 osobno sterowane silniki. To daje większe możliwości sterowania w zakrętach. Zwykle silniki po tej samej stronie mają tę samą prędkość, ale jeśli zaczniesz ją modyfikować, możesz dostać całkiem ciekawe zachowania takiego podwozia, przemyśl to. Skoro dwa kanały to 5%, poświęciłbym drugie 5 na dwa następne kanały PWM z czystej ciekawości. Napisz na co się zdecydowałeś.

EDIT: Hm, czytam i za chwilę nie pamiętam, SKS chyba... Skoro 5% mocy załatwia już 4 kanały PWM, wcale bym się nie zastanawiał.

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

Wobec tego rozsądnym rozwiązaniem będzie zakup dwóch sterowników DVR8833 i poeksperymentowanie z różnym rodzajem zasilania i sterowania. Rozumiem też że te 500 Hz to rozsądna częstotliwość dla PWM? Jeszcze jedno pytanie co do PWM: czy nie lepiej dać po prostu logicznej "1" dla PWM 100% zamiast bawić się w częstotliwości?

Link do komentarza
Share on other sites

500Hz to mało, ale dla takich silniczków powinno wystarczyć. Mają ok. 10Ω → dużo zwoi nawiniętych cienkim drutem → stosunkowo duża indukcyjność, a to dobrze wróży stałości prądu. Zbyt wolny PWM powoduje szybkie narastanie prądu w fazie ON i zaburza liniowość regulacji. Zamiast w miarę liniowego wzrostu momentu, na początku zakresu (PWM<30%) masz szybki wzrost i całość słabo działa na wolnych obrotach. Szkoda, że w przypadku RPi będzie to zawsze bolesny handel częstotliwości PWM za utraconą moc obliczeniową CPU. Z drugiej strony nawet jeśli zostanie Ci 70 czy 80% tej mocy na własne aplikacje (i system), to i tak jest to wielokrotnie więcej MIPSów dużego procesora niż gdyby mózgiem pojazdu było Arduino.

Zaraz, ale o co chodzi z tą jedynką na stałe? Przecież jeśli chcesz mieć płynną regulację, gdzieś musisz doprowadzić PWM do mostka. Dla danej aplikacji częstotliwość przełączania jest określona i stała (np. 500Hz) i dla tej częstotliwości strata mocy CPU też jest stała. Silniki regulujesz współczynnikiem wypełnienia PWM więc obciążenie procesora nie zależy od tego jak szybko jedziesz. Oczywiście możesz zrezygnować w ogóle z PWM i mostki sterować stałymi sygnałami zero-jeden, ale wtedy dostajesz tylko "cała naprzód - stop - cała wstecz" a to nie jest fajne.

Co to podwozie ma robić? Bo zaraz po zlutowaniu i uruchomieniu napędów trzeba będzie sobie to pytanie zadać. Możesz się pobawić dorobieniem zdalnego sterowania (np pilotem od TV) i chwilę poszaleć po dywanie strasząc koty, ale dobrze jest mieć jakiś konkretny cel. Wtedy zaraz dochodzi montaż niezbędnych czujników i rycie literatury w poszukiwaniu algorytmów lub chociaż opisów podobnych rozwiązań. Do czego ta kamerka? Trywialna jazda do światła, śledzenie linii lub transmisja obrazu po WiFi czy coś bardziej ambitnego: ratowanie misia, budowanie map otoczenia, znajdowanie drogi w zagraconym pokoju?

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Szkoda, że w przypadku RPi będzie to zawsze bolesny handel częstotliwości PWM za utraconą moc obliczeniową CPU.

Nie będzie. W zasadzie wszystkie rozsądne biblioteki do PWM na RPi robią to przy pomocy DMA w trybie zapętlonego bufora -- więc nie powinno być znaczącej różnicy.

Link do komentarza
Share on other sites

PWM mogę zwiększyć do 1kHz (trochę poniżej 10 % CPU - dla mnie akceptowalne). PWM generowane z użyciem biblioteki: RPi.GPIO w python. A te rozsądne biblioteki to jakie?

Z tą jedynką na stałe to tak jak napisałeś że może być cała moc do przodu albo cała moc do tyłu (tu kwestię zostawiam otwartą. Zamówię podwozie i przeprowadzę jakieś małe badania jak będzie optymalnie: PWM czy "1"). Jeśli prędkość nie będzie powalająca to taka cała naprzód zamiast powolnego narastania to większej różnicy nie robi (chyba że dla żywotności silniczków robi różnicę).

W tej chwili dążę do zbudowania bazy (podwozia + raspberry + zasilanie) i kontroli tego zdalnie. Kontrola będzie odbywać się z użyciem interfejsu webowego (czyli serwerek po stronie raspberry i tam stronka z przyciskami do sterowania + podgląd z kamerki) komunikacja z wykorzystaniem AJAX więc w miarę responsywnie (sprawdzałem na podwójnym przełączniku i ładnie działało) Sterowanie z użyciem pilota tv też przewiduję. Mam już odbiornik podczerwieni i zaprogramowany jeden pilot. Jeszcze pozostała kwestia napisania oprogramowania pod to wszystko. Kamerkę również zamierzam wykorzystać. Na razie mam VGA na USB ale to strasznie słabe jest (1 klatka na 2,5 sekundy i około 50% CPU) więc docelowo dla RPi będzie dedykowana kamerka.

Plus czujnik odległości żeby nie walił w ścianę jak się zagapię podczas zabawy.

Robot ogólnie będzie służył do monitoringu mieszkania (zdalnie), no i oczywiście poszukiwanie misia za kanapą🙂 Robota przynajmniej na początku będzie sterował człowiek. Może później będę próbował jakieś algorytmy inteligentne próbował stosować.

Link do komentarza
Share on other sites

Może podczas jazdy na wprost płynna regulacja prędkości nie ma znaczenia a przy powolnych silnikach zwykle i tak korzysta się zwykle z maksymalnej (100% PWM), ale już podczas manewrowania w ograniczonych przestrzeniach mieszkania wady "dwustanowego" sterowania 0-1 dadzą o sobie znać na pewno. Swobodny i niezależny dobór prędkości napędów po lewej i prawej stronie pozwala w takim układzie na wykonywanie zakrętów o dowolnym promieniu. Jazda po łuku nie będzie możliwa gdy nie będziesz miał szansy regulacji różnic prędkości - bo od tego zależy promień łuku. Podwozie przy manewrach będzie szarpało, jechało na wprost albo kręciło się w kółko w miejscu lub wokół prawych lub lewych kół, bo tylko takie opcje będą dostępne. Dodając do tego ograniczenia/opóźnienia prymitywnego zdalnego sterowania (pilot RC lub wręcz smartfon) skierowanie pojazdu w jakimś precyzyjnie upatrzonym kierunku będzie trudne. Wyobraź to sobie.

Z resztą na obecnym etapie i tak musisz poprowadzić ileś tam drutów między mostkami a RPi, a czy będziesz po nich przesyłał stałe 0-1 czy PWM to wyjaśnisz sobie po pierwszych eksperymentach.

BTW: "Ratowanie misia" to jedna z konkurencji robotycznych w Łodzi - polecam wybrać się do Manufaktury, chyba w ten weekend? Akurat "w misiach" wyjątkowo dopuszczalne jest zdalne sterowanie i chyba 100% dotychczasowych uczestników nie wyszło poza to. A zadanie jest fajnym wyzwaniem dla autonomicznego robota z kamerą, właśnie takiego jak Twój, posiadającego wystarczającą moc obliczeniową by rozumieć co widzi. Najpierw trzeba ominąć kilka ścian, potem rozpoznać i jakoś złapać prawdziwego pluszowego misia a na koniec przetransportować/zawlec go do miejsca startu. Jeśli robot zrobi to samodzielnie (chyba jeszcze się to nie zdarzyło, niech mnie ktoś poprawi) to wygrana w kieszeni, bo współczynnik punktowy za autonomię jest smakowicie wysoki.

  • Lubię! 1
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.