Upravljanje DC motorima pomoću TB6612FNG i Arduina
U ovom tutorijalu naučit ćemo kako kontrolisati brzinu i smjer DC motora koristeći TB6612FNG modul drajvera motora. Ova postavka će nam omogućiti da nezavisno pokrećemo dva motora, pružajući praktičan način za izgradnju robota na kotačima ili mehanizovanih projekata. Dodatno, istražit ćemo kako koristiti Pulse Width Modulation (PWM) za preciznu kontrolu brzine svakog motora, poboljšavajući mogućnosti kretanja vašeg projekta.
Tokom ovog vodiča, koristit ćemo Arduino ploču zajedno sa TB6612FNG breakout pločom i dva DC gear motora. TB6612FNG je ogromno poboljšanje u odnosu na starije bipolarne drajvere poput L298N jer koristi visokoučinkovite MOSFET-ove. Ovo je posebno korisno u aplikacijama na baterije gdje su potrebni izdržljivost i energetska efikasnost, jer ovaj drajver isporučuje više snage motorima bez pregrijavanja ili potrebe za velikim hladnjakom.
Za dodatna pojašnjenja o postavci i programiranju, svakako pogledajte povezani video na (u videu na 00:00).
Objašnjenje hardvera
Primarne komponente u ovom projektu uključuju TB6612FNG drajver motora, mikrokontroler (Arduino) i dva DC motora. TB6612FNG drajver uzima niskostrujne logičke signale sa Arduina i koristi ih za prebacivanje visokostrujne snage sa baterije na motore. Obično ima namjenske pinove za logičko napajanje, napajanje motora, kontrolu smjera (AIN1, AIN2, BIN1, BIN2) i kontrolu brzine (PWMA, PWMB).
DC motori primaju moduliranu snagu sa izlaznih pinova drajvera (A01/A02 i B01/B02) za rotaciju. Standby pin (STBY) djeluje kao glavni prekidač, pružajući brz način za isključivanje motora i dovođenje čipa u stanje niske potrošnje. Svaka komponenta igra ključnu ulogu u osiguravanju da sistem pogona radi glatko i efikasno.
Detalji iz podatkovne tablice
|
Proizvođač |
Toshiba (IC) / Razni (Modul) |
|---|---|
|
Broj dijela |
TB6612FNG |
|
Logički/IO napon |
2.7 V do 5.5 V |
|
Napon napajanja (VM) |
2.7 V do 15 V |
|
Izlazna struja (po kanalu) |
1.2 A kontinuirano |
|
Vršna struja (po kanalu) |
3.2 A |
|
Smjernice za PWM frekvenciju |
Do 100 kHz |
|
Ulazni logički pragovi |
Visok: > 2.0V, Nizak: < 0.8V (na 5V VCC) |
|
Pad napona / RDS(on) / zasićenje |
0.5 Ω (tipično) |
|
Termalna ograničenja |
Ugrađeno termalno isključivanje |
|
Paket |
SSOP24 / Breakout ploča |
|
Napomene / varijante |
Zamjenjuje L298N sa mnogo većom efikasnošću. |
-
Osigurajte odgovarajuće nivoe napona (uskladite VCC sa 5V vašeg Arduina ili 3.3V ESP32).
-
Omogućite zasebno napajanje baterije za VM (Motor Power) pin.
-
Budite oprezni da povežete sve uzemljenja (baterija, Arduino i modul) zajedno kako biste spriječili nepravilno ponašanje.
-
Testirajte veze prije uključivanja napajanja kako biste spriječili kratke spojeve.
-
Uvijek povucite STBY pin na VISOK nivo, inače motori neće raditi.
Upute za povezivanje
Započnite povezivanjem napajanja i uzemljenja za sve komponente. Povežite uzemljenje sa vašeg Arduina na negativnu šinu vaše breadboard ploče. Zatim povežite pozitivni vod vaše vanjske baterije na VM pin na drajveru motora, a 5V pin Arduina na VCC pin na drajveru.
Zatim povežite logičke ulaze: povežite AIN1 na digitalni pin 2 na Arduinu, AIN2 na digitalni pin 4, i PWMA na pin koji podržava PWM, kao što je digitalni pin 5. Za drugi motor, povežite BIN1 na 7, BIN2 na 8, i PWMB na pin 6. Obavezno povežite STBY pin na digitalni pin 9.
Za izlaz prema motorima, povežite dva terminala vašeg prvog DC motora na A01 i A02. Povežite vaš drugi DC motor na B01 i B02. Dvaput provjerite da su sva uzemljenja podijeljena na zajedničkoj šini uzemljenja.
Primjeri koda i objašnjenje
Pogledajmo neke ključne identifikatore i dijelove koda korištene u projektu. Prvi dio koda inicijalizira pinove za kontrolu smjera, brzine i standby:
const int AIN1 = 2;const int AIN2 = 4;const int PWMA = 5;const int STBY = 9;
Ovdje su AIN1 i AIN2 dodijeljeni za kontrolu smjera Motora A, dok će se PWMA koristiti za kontrolu brzine putem PWM-a. STBY omogućava Arduinu da probudi čip ili ga stavi u stanje mirovanja.
Zatim, setup funkcija konfigurira ove pinove kao izlaze i omogućava čip:
void setup() { pinMode(AIN1, OUTPUT); pinMode(AIN2, OUTPUT); pinMode(PWMA, OUTPUT); pinMode(STBY, OUTPUT); // Omogući drajver motora digitalWrite(STBY, HIGH);}
Naredbe pinMode() postavljaju pinove u izlazni način rada. Postavljanje STBY na HIGH osigurava da je TB6612FNG aktivan i spreman za primanje naredbi.
U funkciji petlje, naređujemo motoru da se vrti naprijed punom brzinom, zaustavi se, a zatim ide unazad:
void loop() { // Naprijed punom brzinom digitalWrite(AIN1, HIGH); digitalWrite(AIN2, LOW); analogWrite(PWMA, 255); delay(2000); // Zaustavi (kretanje bez kočenja) digitalWrite(AIN1, LOW); digitalWrite(AIN2, LOW); analogWrite(PWMA, 0); delay(1000);}
Ovdje, postavljanje AIN1 na HIGH i AIN2 na LOW govori unutrašnjem H-mosta da gura struju u jednom smjeru. analogWrite(PWMA, 255) primjenjuje maksimalnu brzinu. Da bismo zaustavili, povlačimo oba pina za smjer na LOW.
Za dodatne detalje i kompletan kod s upravljanjem dva motora i prilagođenim funkcijama, pogledajte puni program učitan ispod članka.
Demonstracija / Šta očekivati
Kada je ožičenje završeno i kod učitan, trebali biste vidjeti kako se motor vrti naprijed dvije sekunde, pauzira jednu sekundu, i ponavlja ciklus (ako ste dodali logiku za unazad, sljedeći put će se vrtjeti unazad). Provjerite da motor ispravno reagira na PWM signale; ako se vrti unazad kada očekujete da ide naprijed, jednostavno zamijenite žice spojene na A01 i A02 (u videu na 12:30).
Uobičajene greške uključuju zaboravljanje podizanja STBY pina na HIGH, ili pokušaj napajanja motora direktno sa Arduino 5V pina umjesto namjenske baterije na VM pinu, što može uzrokovati resetiranje Arduina pod velikim opterećenjem. Obavezno provjerite izvore napajanja i zajedničko uzemljenje.
Things you might need
-
Amazon
-
AmazonBuy TB6612FNG or DRV8833 motor driver board from AliExpresss.click.aliexpress.com
Resources & references
No resources yet.
Files📁
Datasheet (pdf)
-
motor driver TB6612FNG datasheet
motor_driver_TB6612FNG_datasheet.pdf0.20 MB