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та PWM-вивідP7(таймер 4, канал 1).2використовує виводи напрямкуP1/P0та PWM-вивідP8(таймер 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просуває рівно на стільки фаз; напрямок фіксований (базовий генератор фаз ітерується лише вперед).