tb6612 — Драйвер двигателя TB6612

Модуль tb6612 предоставляет драйвер для драйвера двигателя TB6612. Он предоставляет класс Motor для управления одним двигателем постоянного тока на одном из двух каналов и класс Stepper для управления 4-проводным шаговым двигателем.

Оба класса используют pyb.Timer(4) на частоте 1 кГц на выводах P7 и P8 для PWM-управления мощностью. Выводы направления MotorP3/P2 (канал 1) и P1/P0 (канал 2). Stepper использует все четыре вывода (P3, P2, P1, P0) плюс оба канала PWM.

Пример:

from tb6612 import Motor, Stepper

m = Motor(1)
m.set_speed(50)      # 50% duty forward

s = Stepper(stepnumber=200, rpms=2, power=50)
s.step(100)          # advance 100 steps

класс Motor

class tb6612.Motor(channel: int)

Создаёт контроллер двигателя постоянного тока, привязанный к одному из двух каналов TB6612.

  • channel: Номер канала двигателя. 1 использует выводы направления P3/P2 и вывод PWM P7 (таймер 4, канал 1). 2 использует выводы направления P1/P0 и вывод PWM P8 (таймер 4, канал 2).

set_speed(pwm: int) None

Устанавливает скорость и направление двигателя.

  • pwm: Знаковая скважность в диапазоне от -100 до 100. Положительные значения вращают двигатель вперёд, отрицательные – в обратном направлении. Абсолютное значение применяется как процент скважности PWM к выводу мощности.

класс Stepper

class tb6612.Stepper(stepnumber: int = 200, rpms: int = 2, power: int = 50)

Создаёт контроллер 4-проводного шагового двигателя. Инициализирует выводы направления P3, P2, P1, P0 и два канала PWM-питания на P7 и P8, затем применяет запрошенную скорость и мощность.

  • stepnumber: Количество полных шагов на оборот подключённого шагового двигателя. Используется вместе с rpms для вычисления задержки между шагами.

  • rpms: Целевая скорость вращения в оборотах в минуту. Передаётся в set_speed().

  • power: Процент скважности PWM (0-100), применяемый к обоим каналам питания. Передаётся в set_power().

phase_list() Generator[tuple[int, int, int, int], None, None]

Генератор, который бесконечно выдаёт четырёхфазный шаблон управления (1, 0, 0, 0), (0, 0, 1, 0), (0, 1, 0, 0), (0, 0, 0, 1), используемый методом step(). Каждый элемент кортежа – это значение для записи в pin1, pin2, pin3, pin4 соответственно.

set_speed(rpms: int) None

Обновляет скорость шагания.

  • rpms: Целевая скорость вращения в оборотах в минуту. Задержка на полушаг (в микросекундах) пересчитывается как 1000000 / (rpms * stepnumber) / 2.

set_power(power: int) None

Устанавливает скважность PWM, применяемую к обоим каналам питания.

  • power: Процент скважности в диапазоне от 0 до 100.

step(num: int) None

Продвигает шаговый двигатель на num фазовых переходов, применяя следующую фазу из phase_list() и ожидая настроенную задержку между шагами (через pyb.udelay) между переходами.

  • num: Количество фазовых шагов для продвижения. Каждый вызов step продвигает ровно столько фаз; направление фиксировано (базовый генератор фаз итерирует только вперёд).