tb6612 --- TB6612 馬達驅動程式

tb6612 模組為 TB6612 馬達驅動器提供驅動程式。它提供一個 Motor 類別用於在兩個通道之一上驅動單一直流馬達,以及一個 Stepper 類別用於驅動 4 線步進馬達。

兩個類別皆在接腳 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 恰好前進這麼多相位;方向是固定的(底層相位產生器僅向前迭代)。