tb6612 — TB6612 모터 드라이버

tb6612 모듈은 TB6612 모터 드라이버용 드라이버를 제공합니다. 두 채널 중 하나에서 단일 DC 모터를 구동하는 Motor 클래스와 4선식 스테퍼 모터를 구동하는 Stepper 클래스를 노출합니다.

두 클래스 모두 PWM 전력 출력을 위해 핀 P7P8에서 1 kHz로 pyb.Timer(4)를 사용합니다. 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 tb6612.Motor(channel: int)

두 TB6612 채널 중 하나에 바인딩된 DC 모터 컨트롤러를 생성합니다.

  • channel: 모터 채널 번호입니다. 1은 방향 핀 P3/P2와 PWM 핀 P7 (타이머 4, 채널 1)을 사용합니다. 2는 방향 핀 P1/P0와 PWM 핀 P8 (타이머 4, 채널 2)을 사용합니다.

set_speed(pwm: int) None

모터 속도와 방향을 설정합니다.

  • pwm: -100부터 100까지 범위의 부호 있는 듀티 사이클. 양수 값은 모터를 정방향으로, 음수 값은 역방향으로 구동합니다. 절댓값이 PWM 듀티 사이클 백분율로 전력 핀에 적용됩니다.

class Stepper

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

4선식 스테퍼 모터 컨트롤러를 생성합니다. 방향 핀 P3, P2, P1, P0P7P8의 두 PWM 전력 채널을 초기화한 다음 요청된 속도와 전력을 적용합니다.

  • stepnumber: 연결된 스테퍼 모터의 회전당 전체 스텝 수. rpms와 함께 사용하여 스텝 간 지연을 계산합니다.

  • rpms: 분당 회전수(RPM) 단위의 목표 회전 속도. set_speed()로 전달됩니다.

  • power: 두 전력 채널 모두에 적용되는 PWM 듀티 사이클 백분율(0-100). set_power()로 전달됩니다.

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

step()에서 사용하는 4상 구동 패턴 (1, 0, 0, 0), (0, 0, 1, 0), (0, 1, 0, 0), (0, 0, 0, 1)을 끝없이 yield하는 제너레이터입니다. 각 튜플 요소는 각각 pin1, pin2, pin3, pin4에 기록할 값입니다.

set_speed(rpms: int) None

스텝 속도를 갱신합니다.

  • rpms: 분당 회전수(RPM) 단위의 목표 회전 속도. 하프 스텝당 지연(마이크로초 단위)은 1000000 / (rpms * stepnumber) / 2로 재계산됩니다.

set_power(power: int) None

두 전력 채널 모두에 적용되는 PWM 듀티 사이클을 설정합니다.

  • power: 0부터 100까지 범위의 듀티 사이클 백분율.

step(num: int) None

스테퍼를 num 상 전환만큼 진행시키며, phase_list()의 다음 상을 적용하고 전환 사이에 구성된 스텝 간 지연(pyb.udelay를 통해)만큼 대기합니다.

  • num: 진행할 상 스텝 수. step을 호출할 때마다 정확히 이 만큼의 상이 진행되며, 방향은 고정되어 있습니다(기반 상 제너레이터는 정방향으로만 반복함).