Search Code

Управување со DC мотори со TB6612FNG и Arduino

Управување со DC мотори со TB6612FNG и Arduino

Во ова упатство, ќе научиме како да ја контролираме брзината и насоката на DC моторите користејќи го модулот за мотор-драјвер TB6612FNG. Оваа поставка ќе ни овозможи да управуваме со два мотори независно, обезбедувајќи практичен начин за изградба на роботи на тркала или механизирани проекти. Дополнително, ќе истражиме како да користиме Пуленско-ширинска модулација (PWM) за прецизно контролирање на брзината на секој мотор, подобрувајќи ги можностите за движење на вашиот проект.

TB6612FNG_motor_driver-0

Низ ова упатство, ќе користиме Arduino плоча заедно со TB6612FNG breakout плоча и два DC запченички мотори. TB6612FNG е огромна надградба во однос на постарите биполарни драјвери како L298N, бидејќи користи високоефикасни MOSFET транзистори. Ова е особено корисно во апликации напојувани со батерии каде што се потребни издржливост и енергетска ефикасност, бидејќи овој драјвер испорачува повеќе енергија на моторите без прегревање или потреба од голем ладилник.

За дополнително разјаснување на поставката и програмирањето, задолжително проверете го придружното видео на (во видеото на 00:00).

Објаснување на хардверот

Примарните компоненти во овој проект вклучуваат мотор-драјвер TB6612FNG, микроконтролер (Arduino) и два DC мотори. Драјверот TB6612FNG зема логички сигнали со низок напон од Arduino и ги користи за да префрла енергија со висок напон од батеријата до моторите. Обично има посветени пинови за логичко напојување, напојување на моторот, контрола на насоката (AIN1, AIN2, BIN1, BIN2) и контрола на брзината (PWMA, PWMB).

TB6612FNG_motor_driver-3

DC моторите ја примаат модулираната енергија од излезните пинови на драјверот (A01/A02 и B01/B02) за да ротираат. Пинот за мирување (STBY) дејствува како главен прекинувач, обезбедувајќи брз начин за исклучување на моторите и ставање на чипот во состојба на мирување со ниска потрошувачка. Секоја компонента игра клучна улога во обезбедувањето дека системот за погон работи непречено и ефикасно.

Детали од податочната листа

Производител

Toshiba (IC) / Различни (Модул)

Број на дел

TB6612FNG

Логички/IO напон

2.7 V до 5.5 V

Напон на напојување (VM)

2.7 V до 15 V

Излезна струја (по канал)

1.2 A континуирано

Врвна струја (по канал)

3.2 A

Насоки за PWM фреквенција

До 100 kHz

Прагови на влезна логика

Високо: > 2.0V, Ниско: < 0.8V (при 5V VCC)

Пад на напон / RDS(on) / заситување

0.5 Ω (типично)

Термички ограничувања

Вградено термичко исклучување

Пакет

SSOP24 / Breakout плоча

Белешки / варијанти

Го заменува L298N со многу поголема ефикасност.

 

  • Осигурете соодветни нивоа на напон (усогласете го VCC со 5V на вашиот Arduino или 3.3V на ESP32).

  • Обезбедете посебно напојување од батерија за пинот VM (Напојување на моторот).

  • Бидете внимателни да ги поврзете сите земји (батерија, Arduino и модул) заедно за да спречите неправилно однесување.

  • Тестирајте ги врските пред вклучување за да спречите кратки споеви.

  • Секогаш повлечете го пинот STBY на HIGH, инаку моторите нема да работат.

Инструкции за жици

Започнете со поврзување на напојувањето и земјата за сите компоненти. Поврзете ја земјата од вашиот Arduino со негативната шина на вашата breadboard плоча. Потоа, поврзете го позитивниот кабел од вашата надворешна батерија на пинот VM на мотор-драјверот, и пинот 5V од Arduino на пинот VCC на драјверот.

Следно, поврзете ги логичките влезови: поврзете го AIN1 на дигиталниот пин 2 на Arduino, AIN2 на дигиталниот пин 4, и PWMA на пин способен за PWM, како што е дигиталниот пин 5. За вториот мотор, поврзете го BIN1 на 7, BIN2 на 8, и PWMB на пинот 6. Погрижете се да го поврзете пинот STBY на дигиталниот пин 9.

За излезот кон моторите, поврзете ги двата терминали на вашиот прв DC мотор на A01 и A02. Поврзете го вашиот втор DC мотор на B01 и B02. Проверете двапати дека сите земји се споделени на заедничката шина за земја.

TB6612FNG_motor_driver-1

Примери на код и објаснување

Ајде да погледнеме некои клучни идентификатори и фрагменти од код користени во проектот. Првиот дел од кодот ги иницијализира пиновите за контрола на насоката, брзината и мирувањето:

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

Овде, AIN1 и AIN2 се доделени за контрола на насоката на Моторот A, додека PWMA ќе се користи за контрола на брзината преку PWM. STBY му овозможува на Arduino да го разбуди чипот или да го стави во мирување.

Следно, функцијата setup ги конфигурира овие пинови како излези и го овозможува чипот:

void setup() {  pinMode(AIN1, OUTPUT);  pinMode(AIN2, OUTPUT);  pinMode(PWMA, OUTPUT);  pinMode(STBY, OUTPUT);    // Овозможи го моторниот драјвер  digitalWrite(STBY, HIGH);}

Командите pinMode() ги поставуваат пиновите во излезен режим. Поставувањето на STBY на HIGH осигурува дека TB6612FNG е активен и подготвен да прима команди.

Во функцијата loop, му даваме команда на моторот да се врти напред со полна брзина, да запре, а потоа да се врти во обратна насока:

void loop() {  // Напред со полна брзина  digitalWrite(AIN1, HIGH);  digitalWrite(AIN2, LOW);  analogWrite(PWMA, 255);  delay(2000);  // Стоп (Coast)  digitalWrite(AIN1, LOW);  digitalWrite(AIN2, LOW);  analogWrite(PWMA, 0);  delay(1000);}

Овде, поставувањето на AIN1 на HIGH и AIN2 на LOW му кажува на внатрешниот H-мост да турка струја во една насока. analogWrite(PWMA, 255) применува максимална брзина. За да запреме, ги повлекуваме двата пинови за насока на LOW.

За повеќе детали и целосниот код со контрола на два мотори и сопствени функции, ве молиме погледнете ја целосната програма вчитана под статијата.

Демонстрација / Што да очекувате

Откако жиците се поврзани и кодот е поставен, треба да видите како моторот се врти напред две секунди, паузира една секунда и го повторува циклусот (ако сте ја додале логиката за обратна насока, следно ќе се врти наназад). Осигурете се дека моторот правилно одговара на PWM сигналите; ако се врти наназад кога очекувате да оди напред, едноставно заменете ги жиците поврзани на A01 и A02 (во видеото на 12:30).

Вообичаени грешки вклучуваат заборавање да го повлечете пинот STBY на HIGH, или обид да ги напојувате моторите директно од 5V пинот на Arduino наместо од посветена батерија на пинот VM, што може да предизвика ресетирање на Arduino под тежок товар. Бидете сигурни дека ги проверувате вашите извори на напојување и заедничките земји.

Images

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
No code attached.

Resources & references

No resources yet.

Files📁

Datasheet (pdf)