LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
Artykuły

[DIY] Robot MiniSumo – tajniki konstrukcji

Sterowanie silnikami

Do sterowania silnikami użyłem sterownik silników Arduino moduł L298. Jako że w konstrukcji używam dwóch silników DC, sterowanie tego typu będę opisywał. Sterownik podczas pracy korzysta z 8 pinów płyty głównej (funkcje jak niżej).

Nie będziemy korzystać z pomiarów prądu – wyjścia Analog 0 i Analog 1, jednak należy pamiętać, że piny te są wykorzystywane przez sterownik w czasie jego pracy i nie możemy z nich skorzystać bez uprzedniej zmiany konfiguracji sterownika(np. podpięcie tam czujnika da nieprawidłowe pomiary). Piny digital  9 i 8 wykorzystane będą tylko w małym stopniu. Ustawię je jako wyścia i wymuszę na nich stan niski, co oznacza wyłączanie hamowania odpowiednio w kanale A i B.

Największą uwagę należy skupić na pinach digital 12 i 13 odpowiedzialnych za wybór kierunku i digital 3 oraz 11 odpowiedzialne za ustawienie prędkości.

Przy wyborze kierunku najpierw trzeba skonfigurować piny 12 i 13 jako wyjścia, później wymusząjąc stan wysoki lub niski sterujemy kierunkiem pracy silnika.

Sterowanie prędkością odbywa się modulacją szerokości impulsów PWM, po prostu wpisujemy wartość z zakresu 0 – 255 co odpowiada zakresowi prędkości od postoju do prędkości maksymalnej.

Poniżej funkcja do sterowania silnikami:

 

Algorytm

Przed napisaniem programu warto stworzyć algorytm. Konieczne jest ustalenie priorytetu – które odczyty czujników są ważniejsze. W naszym przypadku ważniejsze jest, żeby robot utrzymał się na macie, niż żeby atakował przeciwnika, więc to czujniki odbiciowe będą miały wyższy priorytet. Przykład użyty w projekcie pokazano na rysunku 4.

 

Rys. 4. Algorytm działania robota opisanego w artykule

 

Końcowy program

Mając gotowy algorytm, funkcję do sterowania silników i wiedze, jak interpretować wartości z czujników bez większych problemów można przystąpić do napisania kompletnego programu.

Tak wygląda cały program, napisany w środowisku programistycznym Arduino: