tb6612 — TB6612-Motortreiber

Das tb6612-Modul stellt einen Treiber für den TB6612-Motortreiber bereit. Es bietet eine Motor-Klasse zum Ansteuern eines einzelnen DC-Motors auf einem von zwei Kanälen sowie eine Stepper-Klasse zum Ansteuern eines 4-adrigen Schrittmotors.

Beide Klassen verwenden pyb.Timer(4) bei 1 kHz an den Pins P7 und P8 für die PWM-Leistungsausgabe. Die Richtungspins von Motor sind P3/P2 (Kanal 1) und P1/P0 (Kanal 2). Stepper verwendet alle vier Pins (P3, P2, P1, P0) sowie beide PWM-Kanäle.

Beispiel:

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)

Erstellt eine DC-Motorsteuerung, die an einen der beiden TB6612-Kanäle gebunden ist.

  • channel: Motorkanalnummer. 1 verwendet die Richtungspins P3/P2 und den PWM-Pin P7 (Timer 4, Kanal 1). 2 verwendet die Richtungspins P1/P0 und den PWM-Pin P8 (Timer 4, Kanal 2).

set_speed(pwm: int) None

Stellt Geschwindigkeit und Richtung des Motors ein.

  • pwm: Vorzeichenbehaftetes Tastverhältnis im Bereich -100 bis 100. Positive Werte treiben den Motor vorwärts, negative Werte rückwärts an. Der Absolutwert wird als prozentuales PWM-Tastverhältnis auf den Leistungspin angewendet.

class Stepper

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

Erstellt eine Steuerung für einen 4-adrigen Schrittmotor. Initialisiert die Richtungspins P3, P2, P1, P0 und die beiden PWM-Leistungskanäle an P7 und P8 und wendet dann die angeforderte Geschwindigkeit und Leistung an.

  • stepnumber: Anzahl der Vollschritte pro Umdrehung des angeschlossenen Schrittmotors. Wird zusammen mit rpms verwendet, um die Verzögerung zwischen den Schritten zu berechnen.

  • rpms: Ziel-Drehgeschwindigkeit in Umdrehungen pro Minute. Wird an set_speed() weitergeleitet.

  • power: Prozentuales PWM-Tastverhältnis (0-100), das auf beide Leistungskanäle angewendet wird. Wird an set_power() weitergeleitet.

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

Generator, der endlos das Vierphasen-Ansteuerungsmuster (1, 0, 0, 0), (0, 0, 1, 0), (0, 1, 0, 0), (0, 0, 0, 1) liefert, das von step() verwendet wird. Jedes Tupelelement ist der Wert, der jeweils auf pin1, pin2, pin3, pin4 geschrieben wird.

set_speed(rpms: int) None

Aktualisiert die Schrittgeschwindigkeit.

  • rpms: Ziel-Drehgeschwindigkeit in Umdrehungen pro Minute. Die Verzögerung pro Halbschritt (in Mikrosekunden) wird neu berechnet als 1000000 / (rpms * stepnumber) / 2.

set_power(power: int) None

Stellt das PWM-Tastverhältnis ein, das auf beide Leistungskanäle angewendet wird.

  • power: Prozentuales Tastverhältnis im Bereich 0 bis 100.

step(num: int) None

Bewegt den Schrittmotor um num Phasenübergänge weiter, wobei die nächste Phase aus phase_list() angewendet und zwischen den Übergängen die konfigurierte Verzögerung zwischen den Schritten (über pyb.udelay) abgewartet wird.

  • num: Anzahl der weiterzuschaltenden Phasenschritte. Jeder Aufruf von step schaltet genau diese Anzahl an Phasen weiter; die Richtung ist fest (der zugrunde liegende Phasengenerator iteriert nur vorwärts).