Riadenie jednosmerných motorov s TB6612FNG a Arduinom
V tomto návode sa naučíme, ako ovládať rýchlosť a smer jednosmerných motorov pomocou modulu motorového ovládača TB6612FNG. Toto zapojenie nám umožní nezávisle riadiť dva motory, čo poskytuje praktický spôsob stavby kolesových robotov alebo mechanizovaných projektov. Okrem toho preskúmame, ako použiť pulznú šírkovú moduláciu (PWM) na presné riadenie rýchlosti každého motora, čím zvýšime pohybové schopnosti vášho projektu.
V celom tomto sprievodcovi budeme používať dosku Arduino spolu s breakout doskou TB6612FNG a dvoma jednosmernými prevodovými motormi. TB6612FNG je obrovské vylepšenie oproti starším bipolárnym ovládačom, ako je L298N, pretože používa vysokoúčinné MOSFETy. To je obzvlášť užitočné v aplikáciách napájaných batériami, kde sa vyžaduje odolnosť a energetická účinnosť, pretože tento ovládač dodáva motorom viac energie bez prehrievania alebo potreby veľkého chladiča.
Pre ďalšie objasnenie zapojenia a programovania si určite pozrite súvisiace video (vo videu v čase 00:00).
Vysvetlenie hardvéru
Medzi hlavné komponenty tohto projektu patria motorový ovládač TB6612FNG, mikrokontrolér (Arduino) a dva jednosmerné motory. Ovládač TB6612FNG prijíma nízkoprúdové logické signály z Arduina a používa ich na prepínanie vysokoprúdového napájania z batérie do motorov. Zvyčajne má vyhradené piny pre logické napájanie, napájanie motorov, riadenie smeru (AIN1, AIN2, BIN1, BIN2) a riadenie rýchlosti (PWMA, PWMB).
Jednosmerné motory prijímajú modulované napájanie z výstupných pinov ovládača (A01/A02 a B01/B02), aby sa otáčali. Pin pohotovostného režimu (STBY) funguje ako hlavný vypínač a poskytuje rýchly spôsob deaktivácie motorov a uvedenia čipu do nízkopríkonového spiaceho stavu. Každý komponent zohráva kľúčovú úlohu pri zabezpečení plynulého a efektívneho fungovania pohonného systému.
Podrobnosti z datasheetu
|
Výrobca |
Toshiba (IC) / Rôzni (Modul) |
|---|---|
|
Označenie súčiastky |
TB6612FNG |
|
Logické/IO napätie |
2,7 V až 5,5 V |
|
Napájacie napätie (VM) |
2,7 V až 15 V |
|
Výstupný prúd (na kanál) |
1,2 A trvalý |
|
Špičkový prúd (na kanál) |
3,2 A |
|
Odporúčaná frekvencia PWM |
Až do 100 kHz |
|
Vstupné logické prahy |
Vysoká: > 2,0 V, Nízka: < 0,8 V (pri 5 V VCC) |
|
Pokles napätia / RDS(on) / saturácia |
0,5 Ω (typicky) |
|
Tepelné limity |
Vstavaná tepelná ochrana s vypnutím |
|
Puzdro |
SSOP24 / Breakout doska |
|
Poznámky / varianty |
Nahrádza L298N s oveľa vyššou účinnosťou. |
-
Zabezpečte správne úrovne napätia (prispôsobte VCC 5 V vášho Arduina alebo 3,3 V ESP32).
-
Zabezpečte samostatné napájanie z batérie pre pin VM (napájanie motorov).
-
Buďte opatrní a spojte všetky uzemnenia (batéria, Arduino a modul) dohromady, aby ste predišli nepravidelnému správaniu.
-
Pred zapnutím otestujte pripojenia, aby ste predišli skratom.
-
Vždy nastavte pin STBY na HIGH, inak sa motory nespustia.
Pokyny na zapojenie
Začnite pripojením napájania a uzemnenia pre všetky komponenty. Pripojte uzemnenie z Arduina na zápornú lištu vašej breadboard dosky. Potom pripojte kladný vodič externej batérie na pin VM motorového ovládača a pin 5V z Arduina na pin VCC ovládača.
Ďalej zapojte logické vstupy: pripojte AIN1 na digitálny pin 2 na Arduine, AIN2 na digitálny pin 4 a PWMA na pin podporujúci PWM, napríklad digitálny pin 5. Pre druhý motor pripojte BIN1 na 7, BIN2 na 8 a PWMB na pin 6. Uistite sa, že pin STBY pripojíte na digitálny pin 9.
Pre výstup k motorom pripojte dva terminály vášho prvého jednosmerného motora na A01 a A02. Pripojte váš druhý jednosmerný motor na B01 a B02. Dvakrát skontrolujte, či sú všetky uzemnenia zdieľané na spoločnej uzemňovacej lište.
Príklady kódu a vysvetlenie
Pozrime sa na niektoré kľúčové identifikátory a úryvky kódu použité v projekte. Prvá časť kódu inicializuje piny pre riadenie smeru, rýchlosti a pohotovostného režimu:
const int AIN1 = 2;const int AIN2 = 4;const int PWMA = 5;const int STBY = 9;
Tu sú AIN1 a AIN2 priradené na riadenie smeru motora A, zatiaľ čo PWMA sa použije na riadenie rýchlosti pomocou PWM. STBY umožňuje Arduinu prebudiť čip alebo ho uviesť do spiaceho režimu.
Ďalej funkcia setup nakonfiguruje tieto piny ako výstupy a aktivuje čip:
void setup() { pinMode(AIN1, OUTPUT); pinMode(AIN2, OUTPUT); pinMode(PWMA, OUTPUT); pinMode(STBY, OUTPUT); // Povolenie motorového ovládača digitalWrite(STBY, HIGH);}
Príkazy pinMode() nastavia piny do výstupného režimu. Nastavenie STBY na HIGH zabezpečí, že TB6612FNG je aktívny a pripravený prijímať príkazy.
Vo funkcii loop dáme motoru príkaz, aby sa otáčal dopredu plnou rýchlosťou, zastavil sa a potom sa otáčal dozadu:
void loop() { // Dopredu plnou rýchlosťou digitalWrite(AIN1, HIGH); digitalWrite(AIN2, LOW); analogWrite(PWMA, 255); delay(2000); // Zastavenie (dojazd) digitalWrite(AIN1, LOW); digitalWrite(AIN2, LOW); analogWrite(PWMA, 0); delay(1000);}
Tu nastavenie AIN1 na HIGH a AIN2 na LOW povie vnútornému H-mosťu, aby tlačil prúd jedným smerom. analogWrite(PWMA, 255) aplikuje maximálnu rýchlosť. Na zastavenie stiahneme oba smerové piny na LOW.
Pre ďalšie podrobnosti a kompletný kód s ovládaním dvoch motorov a vlastnými funkciami si pozrite celý program načítaný pod článkom.
Ukážka / Čo očakávať
Po dokončení zapojenia a nahraní kódu by ste mali vidieť, ako sa motor otáča dopredu dve sekundy, zastaví sa na jednu sekundu a cyklus sa opakuje (ak ste pridali logiku pre spätný chod, nabudúce sa bude otáčať dozadu). Uistite sa, že motor správne reaguje na PWM signály; ak sa otáča dozadu, keď očakávate dopredu, jednoducho vymeňte vodiče pripojené k A01 a A02 (vo videu o 12:30).
Medzi časté chyby patrí zabudnutie nastaviť pin STBY na HIGH alebo pokus napájať motory priamo z 5V pinu Arduina namiesto samostatnej batérie na pine VM, čo môže spôsobiť reset Arduina pri veľkom zaťažení. Nezabudnite skontrolovať zdroje napájania a spoločné uzemnenie.
Veci, ktoré by ste mohli potrebovať
-
Amazon
-
AmazonBuy TB6612FNG or DRV8833 motor driver board from AliExpresss.click.aliexpress.com
Zdroje a referencie
Zatiaľ žiadne zdroje.
Súbory📁
Datasheet (pdf)
-
motor driver TB6612FNG datasheet
motor_driver_TB6612FNG_datasheet.pdf0.20 MB