Robot na bazie Raspberry Pi #2

in #pl-artykuly6 years ago

_IGP2434.jpg

Dzisiaj chciałbym przedstawić bliżej sposób w jaki rozwiązane zostało sterowane silnikami w moim robocie, którego projekt w sposób ogólny przedstawiłem w części pierwszej.

Do realizacji sterowania dwóch silników komutatorowych z przekładniami, zastosowałem gotowy sterownik.
Sterownik ten bazuje na układzie DRV8834.

_IGP2441.jpg

Daje on możliwość sterowanie jednym silnikiem krokowym, lub dwoma silnikami szczotkowymi, takimi jak te zastosowane w moim projekcie. Aby układ przełączyć tryb sterowania silników komutatorowych, wystarczy zewrzeć dwa pola lutownicze na płytce, zgodnie ze specyfikacją producenta:

sterownik-silnika-krokowego-low-voltage-drv8834-108v-2a.jpg
(źródło: dystrybutor sterownika: pololu.com)

Wykonanie zworek jest konieczne, bo domyślnie układ jest ustawiony w tryb sterowania krokowcem.
Pola lutownicze zaznaczone na ilustracji powyżej, zmostkowałem kropelką cyny.
Nie bez znaczenia są małe gabaryty układu:

0J4347.250.jpg
(źródło: dystrybutor sterownika: pololu.com)

Domyślny układ pracy sterownika przedstawia poniższy schemat(ze strony pololu.com):

drv8834.jpg

Jest to jednak układ sterowania silnikiem krokowym unipolarnym. Po przełączeniu układu na sterowanie szczotkowcami , układu należy używać zgodnie z następującym schematem:

Bez tytułu.jpg

(źródło: specyfikacja układu DRV8834, Texas Instruments)

Sterowanie podłączonymi w powyższy sposób silnikami, sprowadza się do podawania odpowiednich stanów logicznych na odpowiednie wejścia sterujące:

  • Motor A Enable : Włączenie/wyłączenie silnika podłączonego do wyjść AOUT1 i AOUT2
  • Motor B Enable : Włączenie/wyłączenie silnika podłączonego do wyjść BOUT1 i BOUT2
  • Motor A Direction: Zmiana kierunku obrotów silnika podłączonego do wyjść AOUT1 i AOUT2
  • Motor B Direction: Zmiana kierunku obrotów silnika podłączonego do wyjść BOUT1 i BOUT2

Wiedząc powyższe, można w prosty sposób sterować silnikami z Raspberry Pi, przez podłączenie do nich odpowiednich wyjść GPIO i software-ową zmianę ich stanów. Masa układu DRV8834 oraz Raspberry Pi musi być oczywiście wspólna, aby całość zadziałała. Ponadto pomiędzy VMOT i GND układu sterownika(motor power supply) konieczne jest wlutowanie kondensatora elektrolitycznego 100 uF. Chroni to przed szpilkami napięcia o wysokiej amplitudzie, jakie mogą pojawić się na wejściu układu podczas pracy silników. Nie powinno się także zasilać obwodu silników i logiki z jednego źródła zasilania, nawet jeśli silniki mogłyby pracować przy napięciu 3.3V, bo może to spowodować uszkodzenie Raspberry Pi. W swoim rozwiązaniu w taki właśnie sposób odseparowałem zasilanie. Silniki zostaną zasilone z wydajnego pakietu akumulatorów litowo - polimerowych a część logiczna z innego źródła napięcia. Póki co, do celów testowych, zasilam silniki i Raspberry Pi z osobnych zasilaczy, pamiętając o konieczności wspólnej masy dla drivera DRV8834 oraz Malinki.

Na dzisiaj tyle. Kolejnym krokiem będzie napisanie kawałka kodu w Pythonie, w celu umożliwienia sterowania silnikami z GPIO. Życzę wszystkim miłego dnia :)

Coin Marketplace

STEEM 0.31
TRX 0.11
JST 0.034
BTC 64332.82
ETH 3146.25
USDT 1.00
SBD 4.17