Sterowanie silnikami DC za pomocą TB6612FNG i Arduino
W tym samouczku nauczymy się, jak kontrolować prędkość i kierunek silników prądu stałego za pomocą modułu sterownika silników TB6612FNG. Ta konfiguracja pozwoli nam na niezależne sterowanie dwoma silnikami, zapewniając praktyczny sposób budowy robotów kołowych lub projektów zmechanizowanych. Dodatkowo poznamy, jak używać modulacji szerokości impulsu (PWM) do precyzyjnego sterowania prędkością każdego silnika, zwiększając możliwości ruchu Twojego projektu.
W trakcie tego przewodnika będziemy używać płytki Arduino wraz z płytką breakout TB6612FNG oraz dwóch silników prądu stałego z przekładnią. TB6612FNG to ogromny krok naprzód w porównaniu ze starszymi sterownikami bipolarnymi, takimi jak L298N, ponieważ wykorzystuje wysokowydajne tranzystory MOSFET. Jest to szczególnie przydatne w zastosowaniach zasilanych bateryjnie, gdzie wymagana jest trwałość i efektywność energetyczna, ponieważ ten sterownik dostarcza więcej mocy do silników bez przegrzewania się i bez potrzeby stosowania dużego radiatora.
Aby uzyskać dalsze wyjaśnienia dotyczące konfiguracji i programowania, koniecznie sprawdź powiązane wideo (na wideo w czasie 00:00).
Objaśnienie Sprzętu
Główne komponenty w tym projekcie obejmują sterownik silników TB6612FNG, mikrokontroler (Arduino) oraz dwa silniki prądu stałego. Sterownik TB6612FNG pobiera sygnały logiczne o niskim prądzie z Arduino i używa ich do przełączania zasilania o wysokim prądzie z baterii do silników. Zazwyczaj ma dedykowane piny do zasilania logicznego, zasilania silników, kontroli kierunku (AIN1, AIN2, BIN1, BIN2) oraz kontroli prędkości (PWMA, PWMB).
Silniki prądu stałego otrzymują modulowaną moc z pinów wyjściowych sterownika (A01/A02 i B01/B02), aby się obracać. Pin standby (STBY) działa jak główny wyłącznik, zapewniając szybki sposób wyłączenia silników i wprowadzenia układu w stan uśpienia o niskim poborze mocy. Każdy komponent odgrywa kluczową rolę w zapewnieniu płynnego i wydajnego działania systemu napędowego.
Szczegóły z Karty Katalogowej
|
Producent |
Toshiba (IC) / Różni (Moduł) |
|---|---|
|
Numer części |
TB6612FNG |
|
Napięcie logiczne/IO |
2,7 V do 5,5 V |
|
Napięcie zasilania (VM) |
2,7 V do 15 V |
|
Prąd wyjściowy (na kanał) |
1,2 A ciągły |
|
Prąd szczytowy (na kanał) |
3,2 A |
|
Zalecana częstotliwość PWM |
Do 100 kHz |
|
Progi logiczne wejściowe |
Wysoki: > 2,0 V, Niski: < 0,8 V (przy VCC 5 V) |
|
Spadek napięcia / RDS(on) / nasycenie |
0,5 Ω (typowy) |
|
Limity termiczne |
Wbudowany układ zabezpieczenia termicznego |
|
Obudowa |
SSOP24 / Płytka breakout |
|
Uwagi / warianty |
Zastępuje L298N ze znacznie wyższą wydajnością. |
-
Zapewnij odpowiednie poziomy napięcia (dopasuj VCC do 5 V Arduino lub 3,3 V ESP32).
-
Zapewnij osobne zasilanie bateryjne dla pinu VM (zasilanie silników).
-
Uważaj, aby połączyć wszystkie masy (baterii, Arduino i modułu) razem, aby zapobiec niestabilnemu działaniu.
-
Przetestuj połączenia przed włączeniem zasilania, aby zapobiec zwarciom.
-
Zawsze ustaw pin STBY w stan WYSOKI, w przeciwnym razie silniki nie będą działać.
Instrukcje Podłączania
Zacznij od podłączenia zasilania i masy dla wszystkich komponentów. Podłącz masę z Arduino do ujemnej szyny na płytce stykowej. Następnie podłącz dodatni przewód zewnętrznej baterii do pinu VM na sterowniku silnika, a pin 5V z Arduino do pinu VCC na sterowniku.
Następnie podłącz wejścia logiczne: podłącz AIN1 do pinu cyfrowego 2 na Arduino, AIN2 do pinu cyfrowego 4, a PWMA do pinu obsługującego PWM, takiego jak pin cyfrowy 5. Dla drugiego silnika podłącz BIN1 do 7, BIN2 do 8, a PWMB do pinu 6. Upewnij się, że podłączyłeś pin STBY do pinu cyfrowego 9.
Jeśli chodzi o wyjście do silników, podłącz dwa zaciski pierwszego silnika prądu stałego do A01 i A02. Podłącz drugi silnik prądu stałego do B01 i B02. Sprawdź dwukrotnie, czy wszystkie masy są połączone na wspólnej szynie masy.
Przykłady Kodów i Omówienie
Przyjrzyjmy się niektórym kluczowym identyfikatorom i fragmentom kodu używanym w projekcie. Pierwsza część kodu inicjalizuje piny do kontroli kierunku, prędkości i trybu standby:
const int AIN1 = 2;const int AIN2 = 4;const int PWMA = 5;const int STBY = 9;
Tutaj AIN1 i AIN2 są przypisane do kontroli kierunku silnika A, podczas gdy PWMA będzie używany do kontroli prędkości przez PWM. STBY pozwala Arduino obudzić układ lub wprowadzić go w stan uśpienia.
Następnie funkcja setup konfiguruje te piny jako wyjścia i włącza układ:
void setup() { pinMode(AIN1, OUTPUT); pinMode(AIN2, OUTPUT); pinMode(PWMA, OUTPUT); pinMode(STBY, OUTPUT); // Włącz sterownik silnika digitalWrite(STBY, HIGH);}
Polecenia pinMode() ustawiają piny w trybie wyjściowym. Ustawienie STBY na HIGH zapewnia, że TB6612FNG jest aktywny i gotowy do odbierania poleceń.
W funkcji pętli wydajemy polecenie, aby silnik obracał się do przodu z pełną prędkością, zatrzymał się, a następnie obracał wstecz:
void loop() { // Do przodu z pełną prędkością digitalWrite(AIN1, HIGH); digitalWrite(AIN2, LOW); analogWrite(PWMA, 255); delay(2000); // Zatrzymanie (wybieg) digitalWrite(AIN1, LOW); digitalWrite(AIN2, LOW); analogWrite(PWMA, 0); delay(1000);}
Tutaj ustawienie AIN1 na HIGH i AIN2 na LOW informuje wewnętrzny mostek H, aby przepychał prąd w jednym kierunku. analogWrite(PWMA, 255) stosuje maksymalną prędkość. Aby zatrzymać, ściągamy oba piny kierunkowe do LOW.
Więcej szczegółów oraz pełny kod z obsługą dwóch silników i funkcjami niestandardowymi znajdziesz w pełnym programie załadowanym poniżej artykułu.
Demonstracja / Czego się spodziewać
Po zakończeniu podłączania i wgraniu kodu powinieneś zobaczyć, jak silnik obraca się do przodu przez dwie sekundy, zatrzymuje się na jedną sekundę i powtarza cykl (jeśli dodałeś logikę odwrotną, następnie będzie obracał się wstecz). Upewnij się, że silnik poprawnie reaguje na sygnały PWM; jeśli obraca się wstecz, gdy oczekujesz ruchu do przodu, po prostu zamień przewody podłączone do A01 i A02 (na filmie w 12:30).
Typowe błędy to zapomnienie o ustawieniu pinu STBY na HIGH lub próba zasilania silników bezpośrednio z pinu 5V Arduino zamiast z dedykowanej baterii na pinie VM, co może spowodować reset Arduino pod dużym obciążeniem. Pamiętaj, aby dokładnie sprawdzić źródła zasilania i wspólne masy.
Rzeczy, których możesz potrzebować
-
Amazon
-
AmazonBuy TB6612FNG or DRV8833 motor driver board from AliExpresss.click.aliexpress.com
Zasoby i odniesienia
Brak zasobów.
Pliki📁
Karta katalogowa (pdf)
-
motor driver TB6612FNG datasheet
motor_driver_TB6612FNG_datasheet.pdf0.20 MB