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.1utiliza os pinos de direçãoP3/P2e o pino PWMP7(timer 4, canal 1).2utiliza os pinos de direçãoP1/P0e o pino PWMP8(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-100a100. 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,P0e os dois canais PWM de potência emP7eP8, 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 comrpmspara calcular o atraso entre passos.rpms: Velocidade de rotação alvo em rotações por minuto. Encaminhado paraset_speed().power: Percentagem de ciclo de trabalho PWM (0-100) aplicada a ambos os canais de potência. Encaminhada paraset_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 porstep(). Cada elemento da tupla é o valor a escrever empin1,pin2,pin3,pin4respetivamente.
- 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 como1000000 / (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 intervalo0a100.
- step(num: int) None¶
Avança o motor de passo em
numtransições de fase, aplicando a próxima fase dephase_list()e aguardando o atraso entre passos configurado (viapyb.udelay) entre transições.num: Número de passos de fase a avançar. Cada chamada astepavança exatamente este número de fases; a direção é fixa (o gerador de fases subjacente apenas itera para a frente).