Skocz do zawartości
danielll

Zmiana obrotów napędów w robocie typu LineFollower

Pomocna odpowiedź

Pracuje właśnie nad linefollowerem i zastanowiła mnie pewna sprawa.

Jeśli zbyt szybko będę zmieniał obroty w silnikach to prawdopodobnie będą one ulegały stopniowo uszkodzeniu. Jeśli się mylę to mnie poprawcie i można na tym zakończyć temat.

Jeśli jednak rzeczywiście tak jest to jaka jest bezpieczna granica. Może ktoś z doświadczenia wie o ile procent mozną zmienić wypełnienie sygnału PWM w jednostce czasu w silnikach Pololu.

Edytowano przez danielll

Udostępnij ten post


Link to post
Share on other sites
11 godzin temu, danielll napisał:

Jeśli zbyt szybko będę zmieniał obroty w silnikach to prawdopodobnie będą one ulegały stopniowo uszkodzeniu. Jeśli się mylę to mnie poprawcie i można na tym zakończyć temat.

Myślę, że w tego typu konstrukcjach jest to pomijalne i nie warto się tym przyjmować. Znacznie łatwiej uszkodzisz silnik, gdy robot zaklinuje się o przeszkodę i zablokują mu się koła. Częstotliwość zmiany prędkości powinna raczej wynikać z ograniczeń regulatorów, które sterują silnikami. Jeśli chcesz wykorzystać np. PID to nie ma sensu zmieniać parametrów w każdym obiegu pętli, bo człon całkujący nie będzie działał poprawnie (oczywiście piszę o najprostszej implementacji) i z tego powodu warto wstawić jakieś "opóźnienie". Nie zwracałbym uwagi na możliwość uszkodzenia silnika, bo to pomijalna kwestia.

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Jest to mój pierwszy robot i nie mam pojecia jak dziala PID i myslalem narazie o jak najprostszym sposobie zmiany predkosci. Chyba jak ustawie w petli zeby po prostu po wykryciu linii wartosc PWM na kola sie odpowiednio zmieniala to powinno to chyba zadzialac. Przykladowo zeby po wykryciu linii przez lewy czujnik wartosc na prawym kole stopniowo malala do zera robot sie obrocil i wartosc znowu zwiekszyc. Pozniej z czasem moze pomysle nad zrobieniem tego w lepszy sposob ale narazie moim celem jest zeby wogole to zadzialalo

Dzieki za odpowiedz, to ze nie musze sie bardzo martwic o szybkosc zmiany predkosci duzo ulatwi eksperymentalne dobranie parametrów  😀

Aktualizacja:

Chociaż właśnie znalazłem twój artykuł o sterowaniu PID i może nawet się o to pokuszę, całkiem przystępnie to wyjaśniłeś 🙂

Jeszcze drobne pytanie, bezpieczna jest nagła zmiana wypełnienia z maksymalnego na zero?

Udostępnij ten post


Link to post
Share on other sites

Wtedy to silnik staje się źródłem i prąd przez niego produkowany płynie przez tranzystory mostka. Na pewno natężenie prądu będzie mniejsze niż gdybyś nagle ruszył od zera do 100% więc o silnik raczej bym się nie bał. Najgorsza sytuacja będzie wtedy, gdy gwałtownie spróbujesz zmienić kierunek obrotów i tego staraj się unikać. 

A w sytuacji jaką opisujesz, czyli gdy zdejmiesz PWM z iluśtam do zera bardzo liczy się w jaki sposób sterujesz mostkiem/driverem silnika. To czy kółko połączone z silnikiem będzie umiało gwałtownie hamować (a na tym Ci chyba zależy) lub czy będzie zwyczajnie zwalniać jakby zabrakło baterii, uzależnione jest od tego czy mostek aktywnie zwiera silnik czy nie. Także ważny jest zarówno a) schemat, b) program.

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

Czyli jesli GPIO beda ustawione na 01 i wtedy ustawie PWM 0 to bedzie odciecie zasilania a jesli przy maksymalnym PWM ustawie na GPIO 00 lub 01 to bedzie gwaltowne hamowanie?

Udostępnij ten post


Link to post
Share on other sites

A skąd mamy to wiedzieć? Przecież nie widzimy schematu Twojego robota, nie wiemy jak podłączyłeś te swoje "GPIO", do jakiego mostka i jak nim sterujesz. Dane katalogowe drivera zawierają takie dane więc sam możesz to sprawdzić a jeśli nie wiesz na co patrzeć, niestety musisz wrzucić tu schemat z pełnym opisem i czekać aż ktoś się obudzi i wytłumaczy.

Udostępnij ten post


Link to post
Share on other sites

sorry, myslalem ze kazdy mostek H działa podobnie, używam L293D. Co do podlaczenia to jest tutaj chyba tylko jeden sposob, zgodny z dokumentacja.

Udostępnij ten post


Link to post
Share on other sites

Na poczekaniu mogę wymyślić co najmniej kilka sposobów sterowania silnikiem przez ten scalak. Niestety, to jest ta chwila w której już musisz mieć schemat i wypadałoby wysłać go w następnym poście. Zatem ołówek (lub mysz) do ręki i do roboty.

Udostępnij ten post


Link to post
Share on other sites

Nie wiem jeszcze jak dokładnie wszystko sie oznacza ale mam nadzieje ze uda sie cos z tego zrozumiec. Poprzez 0 i 1 przy GPIO oznaczylem stan wysoki i niski.

IMG_20191229_001357.jpg

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Super, to jeden z ładniejszych tutaj schematów narysowanych klasycznie, ołówkiem 🙂 Gratuluję ręki. 

Zapewne to banał, ale dla ustalenia faktów: każdy silnik dostał dwa piny sterujące, które zmieniasz "statycznie" z programu w zależności od żądanej funkcji oraz pin PWM, którym zapewne jakiś timer sprzętowy macha szybko z wypełnieniem 0-100%. I teraz wystarczy rozpatrzeć cztery przypadki kombinacji dwóch pinów sterujących i zastanowić się jaki wpływ ma w każdym z nich produkowany osobno PWM. Pamiętając, że działanie układu 293 jest bardzo proste: powtarza on stan danego wejścia na odpowiadające mu wyjście a linia EN zwyczajnie wyłącza oba drivery danego silnika dostajemy:

IN1 IN2 PWM  
 X   X   0   Obie linie silnika wiszą w powietrzu, "wolny wybieg" wirnika zgodnie z bezwładnością i oporami mechanicznymi
 0   0   1   Obie linie silnika zwarte do masy, aktywne hamowanie poprzez zwarcie uzwojeń
 0   1   1   Dostarczenie energii do obrotów w jedną stronę
 1   0   1   Dostarczenie energii do obrotów w drugą stronę
 1   1   1   Obie linie silnika zwarte do plusa zasilania, aktywne hamowanie poprzez zwarcie uzwojeń, słabsze niż w przypadku 00

Ponieważ sygnał PWM będzie bardzo szybko przełączał silnik między pierwszym wierszem w tabelce a którymś z czterech pozostałych, de facto wypełnienie PWM płynnie zmienia "głębokość" efektu ustawionego pinami sterującymi. Dla przykładu gdy wybierzesz np. "jedziemy do przodu" czyli powiedzmy 01 to w fazie "aktywnej" (PWM=1) będziesz "popychał" silnik a w fazie "pasywnej (PWM=0) napęd będzie biegł siłą rozpędu. Rzecz jasna w tej sytuacji im większe dasz wypełnienie tym większy będzie prąd średni i tym większy moment dostaniesz na kołach. Dużo ciekawiej robi się gdy podczas jazdy przełączysz sterowanie np. na 00. Od tej chwili PWM będzie sterował siłą hamowania. Gdy wypełnienie będzie małe, faza PWM=1 będzie krótka, zwieranie silnika będzie niewielką częścią okresu i będzie słabe. Gdy podkręcisz PWM do 100% silnik zostanie gwałtownie zatrzymany tak, że koła robota zapewne wpadną w poślizg. Gdybyś jednocześnie ze zmianą sterowania 01 -> 00 zdjął PWM do 0%, dostaniesz wolny wybieg napędu jakbyś mu odłączył zasilanie. Masz zatem pełne spektrum możliwości sterowania i wystarczy tylko mądrze oprogramować driver 🙂 

Przy okazji: pamiętaj, że 293 to bardzo słaby układzik. Nie sugeruj się prądami podawanymi na pierwszej stronie karty katalogowej, te liczby (600mA/kanał) trzeba traktować raczej jak "nam się udało gdy nad płytką pracowało trzech inżynierów przez tydzień ale Ty nawet nie próbuj tego w domu". Układ ma kilka pinów przeznaczonych na radiator (środkowe masy) i one naprawdę muszą być przylutowane do wielkiego, rozpraszającego ciepło pola masy najlepeij na tej samej stronie PCB co scalak. Żadne tam płyteczki stykowe itp.. Obejrzyj rekomendacje producenta co do pola powierzchni tej miedzi. A gdy mamy już ciepło, to każdy [J]  energii wypuszczony do radiatora to czysta strata energii z baterii. Ten scalak zabiera jakieś 1.5V z każdej strony silnika, czyli z zasilania 2xLiPol powiedzmy 7.5V dostaniesz zaledwie 4.5V na silnik. Słabo, prawda? Dlatego układzik ten stosować raczej należy przy niskoprądowych/wysokonapięciowych napędach (200mA/24V?), gdzie te jego 3Vstraty nie są tak bolesne w bilansie. Nie wiem jakie tam silniki zamierzasz podłączyć, ale niech raczej będą to niskopółkowe pipsztaczki max 300-400mA niż kilkuamperowe potworki. Może zrób projekt tak, by driver był wymiennym elementem, np. wynieś go na osobną płytkę? Wtedy zawsze możesz zrobić kolejny, z identycznie sterowanym ale dużo lepszym mostkiem gdy szybko okaże się, że dotarłeś do granic możliwości 293 albo gdy dojdziesz do wniosku, że grzanie powietrza nie jest najważniejszym zadaniem Twojego linefollowera. 

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

Dzieki za wyjaśnienie. Szczególnie zaciekawila mnie ostatnia cześć bo wogóle o tym nie wiedziałem. Silnik wykorzystałem ten http:// https://botland.com.pl/pl/silniki-micro-n20-seria-mp-medium-power/12563-silnik-n20-bt21-micro-301-1000rpm-9v.html

Skończyłem dzisiaj najprostsza wersje programu i linefollower dziala ale radzi sobie tylko z gladkimi zakretami i na malej predkosci. W głownej mierze jest to jednak wina samej budowy robota niz silników wiec pozostaje jedynie zrobic nowy projekt obudowy do druku 3D zeby wyciagnac wiecej, gdyz teraz dostrzegam kilka istotnych bledow tej konstrukcji.

Dzięki wielkie za wszelka pomoc w stworzeniu mojego pierwszego robota 😄

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...