tb6612 — Driver de motor TB6612

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

Ambas as classes usam pyb.Timer(4) a 1 kHz nos pinos P7 e P8 para a saída de potência PWM. Os pinos de direção da classe Motor são P3/P2 (canal 1) e P1/P0 (canal 2). A classe Stepper usa todos os quatro pinos (P3, P2, P1, P0) mais ambos os 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 vinculado a um dos dois canais do TB6612.

  • channel: Número do canal do motor. 1 usa os pinos de direção P3/P2 e o pino PWM P7 (timer 4, canal 1). 2 usa 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 na faixa de -100 a 100. Valores positivos acionam o motor para frente, valores negativos o acionam em sentido reverso. O valor absoluto é aplicado como a porcentagem 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 de potência PWM em P7 e P8, e em seguida aplica a velocidade e a potência solicitadas.

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

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

  • power: Porcentagem de ciclo de trabalho PWM (0-100) aplicada a ambos os canais de potência. Encaminhado 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) usado por step(). Cada elemento da tupla é o valor a ser escrito em pin1, pin2, pin3, pin4, respectivamente.

set_speed(rpms: int) None

Atualiza a velocidade de passo.

  • rpms: Velocidade de rotação alvo em revoluçõ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: Porcentagem de ciclo de trabalho na faixa de 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 as transições.

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