Search Code

Sterowanie silnikami DC za pomocą TB6612FNG i Arduino

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.

TB6612FNG_motor_driver-0

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).

TB6612FNG_motor_driver-3

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.

TB6612FNG_motor_driver-1

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.

Obrazy

TB6612FNG_motor_driver-4
TB6612FNG_motor_driver-4
TB6612FNG_motor_driver-3
TB6612FNG_motor_driver-3
TB6612FNG_motor_driver-2
TB6612FNG_motor_driver-2
TB6612FNG_motor_driver-1
TB6612FNG_motor_driver-1
TB6612FNG_motor_driver-0
TB6612FNG_motor_driver-0
Brak załączonego kodu.

Rzeczy, których możesz potrzebować

Zasoby i odniesienia

Brak zasobów.

Pliki📁

Karta katalogowa (pdf)