tb6612 — Pilote de moteur TB6612

Le module tb6612 fournit un pilote pour le pilote de moteur TB6612. Il expose une classe Motor pour piloter un seul moteur à courant continu sur l’un des deux canaux, et une classe Stepper pour piloter un moteur pas à pas à 4 fils.

Les deux classes utilisent pyb.Timer(4) à 1 kHz sur les broches P7 et P8 pour la sortie de puissance PWM. Les broches de direction de Motor sont P3/P2 (canal 1) et P1/P0 (canal 2). La classe Stepper utilise les quatre broches (P3, P2, P1, P0) ainsi que les deux canaux PWM.

Exemple

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)

Construit un contrôleur de moteur à courant continu lié à l’un des deux canaux du TB6612.

  • channel : Numéro de canal du moteur. 1 utilise les broches de direction P3/P2 et la broche PWM P7 (minuteur 4, canal 1). 2 utilise les broches de direction P1/P0 et la broche PWM P8 (minuteur 4, canal 2).

set_speed(pwm: int) None

Règle la vitesse et le sens du moteur.

  • pwm : Rapport cyclique signé compris entre -100 et 100. Les valeurs positives font tourner le moteur vers l’avant, les valeurs négatives le font tourner en sens inverse. La valeur absolue est appliquée comme pourcentage de rapport cyclique PWM à la broche de puissance.

class Stepper

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

Construit un contrôleur de moteur pas à pas à 4 fils. Initialise les broches de direction P3, P2, P1, P0 et les deux canaux de puissance PWM sur P7 et P8, puis applique la vitesse et la puissance demandées.

  • stepnumber : Nombre de pas complets par tour du moteur pas à pas connecté. Utilisé conjointement avec rpms pour calculer le délai inter-pas.

  • rpms : Vitesse de rotation cible en tours par minute. Transmise à set_speed().

  • power : Pourcentage de rapport cyclique PWM (0-100) appliqué aux deux canaux de puissance. Transmis à set_power().

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

Générateur qui produit indéfiniment le motif de pilotage à quatre phases (1, 0, 0, 0), (0, 0, 1, 0), (0, 1, 0, 0), (0, 0, 0, 1) utilisé par step(). Chaque élément du tuple est la valeur à écrire respectivement sur pin1, pin2, pin3, pin4.

set_speed(rpms: int) None

Met à jour la vitesse de progression des pas.

  • rpms : Vitesse de rotation cible en tours par minute. Le délai par demi-pas (en microsecondes) est recalculé comme 1000000 / (rpms * stepnumber) / 2.

set_power(power: int) None

Règle le rapport cyclique PWM appliqué aux deux canaux de puissance.

  • power : Pourcentage de rapport cyclique compris entre 0 et 100.

step(num: int) None

Fait avancer le moteur pas à pas de num transitions de phase, en appliquant la phase suivante issue de phase_list() et en attendant le délai inter-pas configuré (via pyb.udelay) entre les transitions.

  • num : Nombre de pas de phase à avancer. Chaque appel à step avance exactement de ce nombre de phases ; le sens est fixe (le générateur de phases sous-jacent n’itère que vers l’avant).