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 просуває рівно на стільки фаз; напрямок фіксований (базовий генератор фаз ітерується лише вперед).