tb6612 — Драйвер двигателя TB6612¶
Модуль tb6612 предоставляет драйвер для драйвера двигателя TB6612. Он предоставляет класс Motor для управления одним двигателем постоянного тока на одном из двух каналов и класс Stepper для управления 4-проводным шаговым двигателем.
Оба класса используют pyb.Timer(4) на частоте 1 кГц на выводах P7 и P8 для PWM-управления мощностью. Выводы направления Motor – P3/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и вывод PWMP7(таймер 4, канал 1).2использует выводы направленияP1/P0и вывод PWMP8(таймер 4, канал 2).
класс 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продвигает ровно столько фаз; направление фиксировано (базовый генератор фаз итерирует только вперёд).