Arduino i sterowanie silnikiem DC
obsługa dwukanałowego mostka H TB6612
1. Sterownik silników TB6612 - moduł
Dwukanałowy driver pozwala kontrolować dwa silniki DC. Prąd ciągły jednego silnika nie może przekraczać 1A, chwilowy 3A. Maksymalne napięcie zasilania to 12V. Parametry te pozwalają na obsługę np. mikro silników Pololu lub HL149.
Moduł posiada niezbędne kondensatory filtrujące zasilanie oraz zabezpieczenie przeciw odwrotnemu podłączeniu zasilania.
W celu ułatwienia montażu moduł został wyposażony w standardowe wyprowadzenia goldpin (raster 2,54mm). Układ można zamontować w prototypowej płytce stykowej lub połączyć z Arduino za pomocą przewodów.
2. Podłączenie modułu
Zasilanie
VCC - zasilanie części logicznej
VMOT - zasilanie silników
GND - masa - należy pamiętać, ze wszystkie "masy" musza być ze sobą połączone
STBY - stan niski powoduje przejście w stan wstrzymania czyli niskiego poboru mocy (stand-by), aby mostek był załączony należy podać stan wysoki
Wyjścia - wyprowadzenia do których należy podłączyć silniki
AO1, AO2 - wyjścia kanału A - wyprowadzenia, do których należy podłączyć pierwszy silnik
BO1, BO2 - wyjścia kanału B - wyprowadzenia, do których należy podłączyć drugi silnik
Sterowanie silnikami
PWMA - sygnał PWM kanału A - służy do regulacji prędkości obrotowej silnika podłączonego do kanału A
AIN1 AIN2 - wyprowadzenia służące do ustalanie kierunku obrotów silnika podłączonego do wyjść kanału A
PWMB - sygnał PWM kanału B - służy do regulacji prędkości obrotowej silnika podłączonego do kanału B
BIN1, BIN2 - wyprowadzenia służące do ustalanie kierunku obrotów silnika podłączonego do wyjść kanału B
Tabela - obsługa mostka TB6612 (x - oznacza odpowiedni kanał A lub B)
x IN1 |
x IN2 |
PWM x |
STBY |
Wyjście kanału x |
niski | wysoki | pwm | wysoki | Silnik kręci się z maksymalną prędkością zadaną poprzez pwm (różną od 0) zgodnie ze wskazówkami zegara. |
wysoki | niski | pwm | wysoki | Silnik kręci się z maksymalną prędkością zadaną poprzez pwm (różną od 0) przeciwnie do ruchu wskazówek zegara. |
dowolny | dowolny | niski | wysoki | Gwałtowne hamowanie (tzw. hard-stop). |
niski | niski | dowolny | wysoki | Delikatne hamowanie. |
wysoki | wysoki | dowolny | wysoki | Delikatne hamowanie. |
dowolny | dowolny | dowolny | niski | Mostek jest w stanie wstrzymania - niskiego poboru energii. |
Rysunek przedstawia przykładowe podłączenie sterownika z modułem Arduino Uno.
3. Przykładowy program
Przykładowy program obsługujący moduł TB6612. Układ należy połączyć zgodnie z rysunkiem:
Efektem działania programu będzie obracający się wał silnika. Po dwóch sekundach nastąpi zmiana kierunku obrotów. Po kolejny dwóch silnik się zatrzyma.
Program:
int pwmMotorA=5; int InMotorA1=4; int InMotorA2=3; void setup() { //Wyjście PWM kanału A pinMode(pwmMotorA, OUTPUT); //Wyjście cyfrowe AIN1 pinMode(InMotorA1, OUTPUT); //Wyjście cyfrowe AIN2 pinMode(InMotorA2, OUTPUT); } // Nieskonczona pętla void loop() { //Kanał A //Ustawienie kierunku obrotów digitalWrite(InMotorA1, LOW); digitalWrite(InMotorA2, HIGH); //Ustawienie prędkości obrotowej na 50% (zakres PWM: 8bitów czyli 0-255) analogWrite(pwmMotorA,128); //Opóźnienie 2s delay(2000); //Zmiana kierunku obrotów digitalWrite(InMotorA1, HIGH); digitalWrite(InMotorA2, LOW); //Opóźnienie 2s delay(2000); //Zatrzymanie silnika - poprzez ustawianie wspołczynnika wypelnienia PWM na wartość 0 analogWrite(pwmMotorA,0); //Opóźnienie 2s delay(2000); }