Щит Motor

Щит Motor керує двома двигунами постійного струму від OpenMV Cam за допомогою подвійного H-моста TB6612FNG з лінійним стабілізатором NCP1117 на 5 В, який живить і камеру, і двигуни від єдиного акумулятора 6,5–18 В.

Motor Shield

Повну документацію, фотографії та інформацію про замовлення дивіться на сторінці продукту Motor Shield.

Особливості

  • Два незалежних канали керування двигунами з регулюванням швидкості через PWM

  • Струм керування до 2 А на канал

  • Також підтримує керування біполярним кроковим двигуном

  • Стекується з щитом Servo

Розпіновка

Motor Shield Pinout

Довідник виводів

Вивід

Функція

P0

DIR B1 (напрямок двигуна B)

P1

DIR B0 (напрямок двигуна B)

P2

DIR A1 (напрямок двигуна A)

P3

DIR A0 (напрямок двигуна A)

P6

STANDBY мікросхеми TB6612FNG — активний за замовчуванням; встановіть низький рівень для переходу в режим малого споживання

P7

Вхід PWM для швидкості двигуна A

P8

Вхід PWM для швидкості двигуна B

VBAT вхід

Вхід акумулятора 6,5–18 В на гвинтовій клемі (обмеження NCP1117)

VIN вихід

5 В від вбудованого стабілізатора NCP1117 (живить камеру)

Шина 3.3В

Живить логіку TB6612FNG

Шина GND

Загальна земля

Примітка

P6 за замовчуванням керує входом STANDBY мікросхеми TB6612. Перережте паяну перемичку на зворотній стороні щита, щоб від’єднати P6, якщо ви хочете використати цей вивід для іншого (тоді драйвер залишається ввімкненим).

Примітка

Мікросхема TB6612FNG керує кожним двигуном через таблицю істинності з двома входами плюс сигнал дозволу PWM. Для двигуна A (при STBY у високому рівні та PWMA з ненульовим робочим циклом):

  • (P3, P2) = (H, L) → вперед

  • (P3, P2) = (L, H) → назад

  • (P3, P2) = (L, L) → ковзання (виходи Hi-Z)

  • (P3, P2) = (H, H) → гальмування (обидва виходи низькі)

Встановлення низького рівня на PWMA примусово вмикає гальмування незалежно від входів напрямку — робочий цикл 0 % гальмує двигун. Двигун B використовує ту саму таблицю на (P1, P0) з PWM на P8.

Використання

Цикл двигуна A через режими вперед → гальмування → назад → ковзання при фіксованому робочому циклі PWM:

from machine import Pin, PWM
import time

a0 = Pin("P3", Pin.OUT)  # AIN1
a1 = Pin("P2", Pin.OUT)  # AIN2
pwma = PWM(Pin("P7"), freq=1_000, duty_u16=40_000)  # ~60%


def drive(in1, in2):
    a0.value(in1)
    a1.value(in2)


while True:
    drive(1, 0)         # forward
    time.sleep(2)
    drive(1, 1)         # brake
    time.sleep_ms(500)
    drive(0, 1)         # reverse
    time.sleep(2)
    drive(0, 0)         # coast
    time.sleep_ms(500)

Для керування змінною швидкістю утримуйте входи напрямку постійними та плавно змінюйте PWMA. Цикл нижче плавно збільшує оберти двигуна A від ковзання до повного ходу вперед і назад:

from machine import Pin, PWM
import time

Pin("P3", Pin.OUT, value=1)  # AIN1=H
Pin("P2", Pin.OUT, value=0)  # AIN2=L → forward direction
pwma = PWM(Pin("P7"), freq=1_000, duty_u16=0)

while True:
    for duty in range(0, 65_536, 1024):
        pwma.duty_u16(duty)
        time.sleep_ms(10)
    for duty in range(65_535, -1, -1024):
        pwma.duty_u16(duty)
        time.sleep_ms(10)

Два H-мости мікросхеми TB6612 також можуть керувати біполярним кроковим двигуном у режимі хвильового збудження — активуйте одну котушку за раз, проходячи через чотири фази. Утримуйте обидва канали PWM на потрібному рівні струму і викликайте step(), щоб перейти на одну повну послідовність у будь-якому напрямку:

from machine import Pin, PWM
import time

a0 = Pin("P3", Pin.OUT)
a1 = Pin("P2", Pin.OUT)
b0 = Pin("P1", Pin.OUT)
b1 = Pin("P0", Pin.OUT)
PWM(Pin("P7"), freq=1_000, duty_u16=32_768)  # 50% drive on A
PWM(Pin("P8"), freq=1_000, duty_u16=32_768)  # 50% drive on B

SEQUENCE = [(1, 0, 0, 0), (0, 0, 1, 0), (0, 1, 0, 0), (0, 0, 0, 1)]


def step(forward=True):
    for s in SEQUENCE if forward else reversed(SEQUENCE):
        a0.value(s[0])
        a1.value(s[1])
        b0.value(s[2])
        b1.value(s[3])
        time.sleep_ms(5)


while True:
    for _ in range(50):  # ~1 revolution forward (200 phases)
        step()
    for _ in range(50):  # ~1 revolution backward
        step(forward=False)

Лінія STANDBY на платі за замовчуванням має високий рівень (драйвер увімкнений). Встановіть низький рівень на P6, щоб перевести TB6612 у режим сну:

from machine import Pin
Pin("P6", Pin.OUT).value(0)  # standby