tb6612 — Controlador de motor TB6612

O módulo tb6612 fornece um controlador para o driver de motor TB6612. Expõe uma classe Motor para acionar um único motor DC num de dois canais, e uma classe Stepper para acionar um motor de passo de 4 fios.

Ambas as classes utilizam pyb.Timer(4) a 1 kHz nos pinos P7 e P8 para saída de potência PWM. Os pinos de direção de Motor são P3/P2 (canal 1) e P1/P0 (canal 2). A classe Stepper utiliza os quatro pinos (P3, P2, P1, P0) mais os dois canais PWM.

Exemplo:

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)

Constrói um controlador de motor DC associado a um dos dois canais do TB6612.

  • channel: Número do canal do motor. 1 utiliza os pinos de direção P3/P2 e o pino PWM P7 (timer 4, canal 1). 2 utiliza os pinos de direção P1/P0 e o pino PWM P8 (timer 4, canal 2).

set_speed(pwm: int) None

Define a velocidade e a direção do motor.

  • pwm: Ciclo de trabalho com sinal no intervalo -100 a 100. Valores positivos acionam o motor para a frente; valores negativos acionam-no em marcha-atrás. O valor absoluto é aplicado como percentagem de ciclo de trabalho PWM ao pino de potência.

class Stepper

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

Constrói um controlador de motor de passo de 4 fios. Inicializa os pinos de direção P3, P2, P1, P0 e os dois canais PWM de potência em P7 e P8, e aplica de seguida a velocidade e a potência solicitadas.

  • stepnumber: Número de passos completos por revolução do motor de passo ligado. Utilizado em conjunto com rpms para calcular o atraso entre passos.

  • rpms: Velocidade de rotação alvo em rotações por minuto. Encaminhado para set_speed().

  • power: Percentagem de ciclo de trabalho PWM (0-100) aplicada a ambos os canais de potência. Encaminhada para set_power().

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

Gerador que produz indefinidamente o padrão de acionamento de quatro fases (1, 0, 0, 0), (0, 0, 1, 0), (0, 1, 0, 0), (0, 0, 0, 1) utilizado por step(). Cada elemento da tupla é o valor a escrever em pin1, pin2, pin3, pin4 respetivamente.

set_speed(rpms: int) None

Atualiza a velocidade de passo.

  • rpms: Velocidade de rotação alvo em rotações por minuto. O atraso por meio-passo (em microssegundos) é recalculado como 1000000 / (rpms * stepnumber) / 2.

set_power(power: int) None

Define o ciclo de trabalho PWM aplicado a ambos os canais de potência.

  • power: Percentagem de ciclo de trabalho no intervalo 0 a 100.

step(num: int) None

Avança o motor de passo em num transições de fase, aplicando a próxima fase de phase_list() e aguardando o atraso entre passos configurado (via pyb.udelay) entre transições.

  • num: Número de passos de fase a avançar. Cada chamada a step avança exatamente este número de fases; a direção é fixa (o gerador de fases subjacente apenas itera para a frente).