Search Code

Controlarea motoarelor DC cu TB6612FNG și Arduino

Controlarea motoarelor DC cu TB6612FNG și Arduino

În acest tutorial, vom învăța cum să controlăm viteza și direcția motoarelor de curent continuu folosind modulul driver de motor TB6612FNG. Această configurare ne va permite să acționăm două motoare independent, oferind o modalitate practică de a construi roboți pe roți sau proiecte mecanizate. În plus, vom explora cum să folosim Modulația în Lățime a Impulsurilor (PWM) pentru a controla cu precizie viteza fiecărui motor, îmbunătățind capacitățile de mișcare ale proiectului tău.

TB6612FNG_motor_driver-0

Pe parcursul acestui ghid, vom folosi o placă Arduino împreună cu placa de dezvoltare TB6612FNG și două motoare cu angrenaje de curent continuu. TB6612FNG este un upgrade masiv față de driverele bipolare mai vechi precum L298N, deoarece utilizează MOSFET-uri de înaltă eficiență. Acest lucru este deosebit de util în aplicațiile alimentate cu baterii, unde durabilitatea și eficiența energetică sunt necesare, deoarece acest driver furnizează mai multă putere motoarelor fără a se supraîncălzi sau a necesita un radiator masiv.

Pentru clarificări suplimentare privind configurarea și programarea, asigurați-vă că verificați videoclipul asociat la (în videoclip la 00:00).

Hardware Explicat

Componentele principale din acest proiect includ driverul de motor TB6612FNG, un microcontroler (Arduino) și două motoare de curent continuu. Driverul TB6612FNG preia semnale logice de curent scăzut de la Arduino și le folosește pentru a comuta curentul de mare putere de la o baterie către motoare. Acesta are de obicei pini dedicati pentru alimentarea logică, alimentarea motorului, controlul direcției (AIN1, AIN2, BIN1, BIN2) și controlul vitezei (PWMA, PWMB).

TB6612FNG_motor_driver-3

Motoarele de curent continuu primesc puterea modulată de la pinii de ieșire ai driverului (A01/A02 și B01/B02) pentru a se roti. Pinul de standby (STBY) acționează ca un întrerupător principal, oferind o modalitate rapidă de a dezactiva motoarele și de a pune cipul într-o stare de repaus cu consum redus de energie. Fiecare componentă joacă un rol crucial în asigurarea funcționării line și eficiente a sistemului de acționare.

Detalii din Fișa Tehnică

Producător

Toshiba (IC) / Diverse (Modul)

Număr de piesă

TB6612FNG

Tensiune logică/IO

2,7 V până la 5,5 V

Tensiune de alimentare (VM)

2,7 V până la 15 V

Curent de ieșire (pe canal)

1,2 A continuu

Curent de vârf (pe canal)

3,2 A

Ghid de frecvență PWM

Până la 100 kHz

Praguri logice de intrare

Nivel înalt: > 2,0V, Nivel scăzut: < 0,8V (la 5V VCC)

Cădere de tensiune / RDS(on) / saturație

0,5 Ω (tipic)

Limite termice

Circuit de oprire termică încorporat

Ambalaj

SSOP24 / Placă de dezvoltare

Note / variante

Înlocuiește L298N cu o eficiență mult mai mare.

 

  • Asigurați niveluri de tensiune adecvate (potriviți VCC cu 5V al Arduino-ului sau 3,3V al ESP32).

  • Furnizați o sursă de alimentare separată cu baterie pentru pinul VM (Alimentare Motor).

  • Fiți atenți să conectați toate împământările (baterie, Arduino și modul) împreună pentru a preveni comportamentul erratic.

  • Testați conexiunile înainte de alimentare pentru a preveni scurtcircuitele.

  • Întotdeauna trageți pinul STBY la nivel ÎNALT, altfel motoarele nu vor funcționa.

Instrucțiuni de Cablare

Începeți prin conectarea alimentării și a împământării pentru toate componentele. Conectați împământarea de la Arduino la șina negativă a breadboard-ului. Apoi, conectați firul pozitiv al bateriei externe la pinul VM de pe driverul de motor și pinul de 5V al Arduino-ului la pinul VCC de pe driver.

Apoi, cablați intrările logice: conectați AIN1 la pinul digital 2 de pe Arduino, AIN2 la pinul digital 4 și PWMA la un pin capabil de PWM, cum ar fi pinul digital 5. Pentru al doilea motor, conectați BIN1 la 7, BIN2 la 8 și PWMB la pinul 6. Asigurați-vă că conectați pinul STBY la pinul digital 9.

Pentru ieșirea către motoare, conectați cele două borne ale primului motor de curent continuu la A01 și A02. Conectați al doilea motor de curent continuu la B01 și B02. Verificați de două ori că toate împământările sunt partajate pe șina comună de împământare.

TB6612FNG_motor_driver-1

Exemple de Cod & Explicații

Să aruncăm o privire la câțiva identificatori cheie și fragmente de cod folosite în proiect. Prima parte a codului inițializează pinii pentru controlul direcției, viteză și standby:

const int AIN1 = 2;const int AIN2 = 4;const int PWMA = 5;const int STBY = 9;

Aici, AIN1 și AIN2 sunt atribuiți pentru a controla direcția Motorului A, în timp ce PWMA va fi folosit pentru controlul vitezei prin PWM. STBY permite Arduino-ului să trezească cipul sau să îl pună în repaus.

Apoi, funcția de configurare configurează acești pini ca ieșiri și activează cipul:

void setup() {  pinMode(AIN1, OUTPUT);  pinMode(AIN2, OUTPUT);  pinMode(PWMA, OUTPUT);  pinMode(STBY, OUTPUT);    // Activează driverul motorului  digitalWrite(STBY, HIGH);}

comenzile pinMode() setează pinii în modul de ieșire. Setarea STBY la HIGH asigură că TB6612FNG este activ și gata să primească comenzi.

În funcția loop, comandăm motorul să se rotească înainte la viteză maximă, să se oprească și apoi să meargă înapoi:

void loop() {  // Înainte la viteză maximă  digitalWrite(AIN1, HIGH);  digitalWrite(AIN2, LOW);  analogWrite(PWMA, 255);  delay(2000);  // Oprire (deplasare liberă)  digitalWrite(AIN1, LOW);  digitalWrite(AIN2, LOW);  analogWrite(PWMA, 0);  delay(1000);}

Aici, setarea AIN1 la HIGH și AIN2 la LOW spune punții H interne să împingă curentul într-o direcție. analogWrite(PWMA, 255) aplică viteza maximă. Pentru a opri, tragem ambii pini de direcție la LOW.

Pentru mai multe detalii și codul complet cu control dual al motorului și funcții personalizate, vă rugăm să consultați programul complet încărcat mai jos în articol.

Demonstrație / Ce să vă așteptați

Odată ce cablarea este completă și codul este încărcat, ar trebui să vedeți motorul rotindu-se înainte timp de două secunde, oprindu-se o secundă și repetând ciclul (dacă ați adăugat logica de inversare, se va roti înapoi în continuare). Asigurați-vă că motorul răspunde corect la semnalele PWM; dacă se rotește înapoi când vă așteptați să meargă înainte, schimbați pur și simplu firele conectate la A01 și A02 (în videoclip la 12:30).

Capcanele comune includ uitarea de a trage pinul STBY la HIGH sau încercarea de a alimenta motoarele direct de la pinul de 5V al Arduino în loc de o baterie dedicată pe pinul VM, ceea ce poate cauza resetarea Arduino sub sarcină grea. Asigurați-vă să verificați de două ori sursele de alimentare și împământările comune.

Imagini

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
Nu există cod atașat.

Lucruri de care ai putea avea nevoie

Resurse și referințe

Încă nu sunt resurse.

Fișiere📁

Fișă tehnică (pdf)