tb6612 — Controlador de motor TB6612

El módulo tb6612 proporciona un controlador para el controlador de motor TB6612. Expone una clase Motor para accionar un único motor de CC en uno de dos canales y una clase Stepper para accionar un motor paso a paso de 4 hilos.

Ambas clases utilizan pyb.Timer(4) a 1 kHz en los pines P7 y P8 para la salida de potencia PWM. Los pines de dirección de Motor son P3/P2 (canal 1) y P1/P0 (canal 2). El Stepper utiliza los cuatro pines (P3, P2, P1, P0) más ambos canales PWM.

Ejemplo:

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

clase Motor

class tb6612.Motor(channel: int)

Construye un controlador de motor de CC vinculado a uno de los dos canales del TB6612.

  • channel: Número de canal del motor. 1 usa los pines de dirección P3/P2 y el pin PWM P7 (temporizador 4, canal 1). 2 usa los pines de dirección P1/P0 y el pin PWM P8 (temporizador 4, canal 2).

set_speed(pwm: int) None

Establece la velocidad y la dirección del motor.

  • pwm: Ciclo de trabajo con signo en el rango de -100 a 100. Los valores positivos accionan el motor hacia adelante, los valores negativos lo accionan en reversa. El valor absoluto se aplica como porcentaje del ciclo de trabajo PWM al pin de potencia.

clase Stepper

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

Construye un controlador de motor paso a paso de 4 hilos. Inicializa los pines de dirección P3, P2, P1, P0 y los dos canales de potencia PWM en P7 y P8, y luego aplica la velocidad y la potencia solicitadas.

  • stepnumber: Número de pasos completos por revolución del motor paso a paso conectado. Se utiliza junto con rpms para calcular el retardo entre pasos.

  • rpms: Velocidad de rotación objetivo en revoluciones por minuto. Se reenvía a set_speed().

  • power: Porcentaje del ciclo de trabajo PWM (0-100) aplicado a ambos canales de potencia. Se reenvía a set_power().

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

Generador que produce indefinidamente el patrón de accionamiento de cuatro fases (1, 0, 0, 0), (0, 0, 1, 0), (0, 1, 0, 0), (0, 0, 0, 1) utilizado por step(). Cada elemento de la tupla es el valor que se escribe en pin1, pin2, pin3, pin4 respectivamente.

set_speed(rpms: int) None

Actualiza la velocidad de avance por pasos.

  • rpms: Velocidad de rotación objetivo en revoluciones por minuto. El retardo por medio paso (en microsegundos) se recalcula como 1000000 / (rpms * stepnumber) / 2.

set_power(power: int) None

Establece el ciclo de trabajo PWM aplicado a ambos canales de potencia.

  • power: Porcentaje del ciclo de trabajo en el rango de 0 a 100.

step(num: int) None

Avanza el motor paso a paso en num transiciones de fase, aplicando la siguiente fase de phase_list() y esperando el retardo entre pasos configurado (mediante pyb.udelay) entre transiciones.

  • num: Número de pasos de fase a avanzar. Cada llamada a step avanza exactamente este número de fases; la dirección es fija (el generador de fases subyacente solo itera hacia adelante).