tb6612 --- TB6612 馬達驅動程式¶
tb6612 模組為 TB6612 馬達驅動器提供驅動程式。它提供一個 Motor 類別用於在兩個通道之一上驅動單一直流馬達,以及一個 Stepper 類別用於驅動 4 線步進馬達。
兩個類別皆在接腳 P7 與 P8 上以 1 kHz 使用 pyb.Timer(4) 進行 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
class Motor¶
class Stepper¶
- class tb6612.Stepper(stepnumber: int = 200, rpms: int = 2, power: int = 50)¶
建構一個 4 線步進馬達控制器。初始化方向接腳
P3、P2、P1、P0以及P7與P8上的兩個 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)。每個元組元素分別為要寫入pin1、pin2、pin3、pin4的值。
- set_speed(rpms: int) None¶
更新步進速度。
rpms:目標旋轉速度(以每分鐘轉數為單位)。每半步延遲(以微秒為單位)會重新計算為1000000 / (rpms * stepnumber) / 2。
- step(num: int) None¶
使步進馬達前進
num個相位轉換,套用來自phase_list()的下一個相位,並在轉換之間等待所設定的步間延遲(透過pyb.udelay)。num:要前進的相位步數。每次呼叫step恰好前進這麼多相位;方向是固定的(底層相位產生器僅向前迭代)。