tb6612 --- TB6612 电机驱动

tb6612 模块为 TB6612 电机驱动器提供驱动。它公开了用于驱动两个通道之一上单个直流电机的 Motor 类,以及用于驱动 4 线步进电机的 Stepper 类。

两个类都在引脚 P7P8 上使用 1 kHz 的 pyb.Timer(4) 进行 PWM 功率输出。Motor 的方向引脚为 P3/P2(通道 1)和 P1/P0(通道 2)。Stepper 使用全部四个引脚(P3P2P1P0)以及两个 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

class 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:带符号的占空比,范围为 -100100。正值驱动电机正转,负值驱动电机反转。其绝对值将作为 PWM 占空比百分比施加到功率引脚上。

class Stepper

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

构造一个 4 线步进电机控制器。初始化方向引脚 P3P2P1P0 以及 P7P8 上的两个 PWM 功率通道,然后应用所请求的速度和功率。

  • stepnumber:所连接步进电机每转的整步数。与 rpms 一起用于计算步间延迟。

  • rpms:目标转速(以每分钟转数为单位)。转发给 set_speed()

  • power:施加到两个功率通道的 PWM 占空比百分比(0-100)。转发给 set_power()

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

无限生成 step() 所用四相驱动模式 (1, 0, 0, 0)(0, 0, 1, 0)(0, 1, 0, 0)(0, 0, 0, 1) 的生成器。每个元组元素分别是要写入 pin1pin2pin3pin4 的值。

set_speed(rpms: int) None

更新步进速度。

  • rpms:目标转速(以每分钟转数为单位)。每半步延迟(以微秒为单位)重新计算为 1000000 / (rpms * stepnumber) / 2

set_power(power: int) None

设置施加到两个功率通道的 PWM 占空比。

  • power:占空比百分比,范围为 0100

step(num: int) None

将步进电机推进 num 个相位转换,从 phase_list() 应用下一相位,并在转换之间等待所配置的步间延迟(通过 pyb.udelay)。

  • num:要推进的相位步数。每次调用 step 恰好推进这么多相位;方向是固定的(底层相位生成器只向前迭代)。