tb6612 — TB6612 motordrivrutin

Modulen tb6612 tillhandahåller en drivrutin för TB6612 motordrivrutinen. Den exponerar en Motor-klass för att driva en enskild likströmsmotor på en av två kanaler och en Stepper-klass för att driva en 4-tråds stegmotor.

Båda klasserna använder pyb.Timer(4) vid 1 kHz på stiften P7 och P8 för PWM-effektutmatning. Motor-riktningsstiften är P3/P2 (kanal 1) och P1/P0 (kanal 2). Stepper använder alla fyra stiften (P3, P2, P1, P0) plus båda PWM-kanalerna.

Exempel:

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)

Skapa en likströmsmotorstyrning kopplad till en av de två TB6612-kanalerna.

  • channel: Motorkanalsnummer. 1 använder riktningsstiften P3/P2 och PWM-stiftet P7 (timer 4, kanal 1). 2 använder riktningsstiften P1/P0 och PWM-stiftet P8 (timer 4, kanal 2).

set_speed(pwm: int) None

Ställ in motorns hastighet och riktning.

  • pwm: Signerad arbetscykel i intervallet -100 till 100. Positiva värden driver motorn framåt, negativa värden driver den bakåt. Absolutvärdet tillämpas som PWM-arbetscykelns procentandel på effektstiftet.

class Stepper

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

Skapa en styrning för en 4-tråds stegmotor. Initierar riktningsstiften P3, P2, P1, P0 och de två PWM-effektkanalerna på P7 och P8, och tillämpar sedan den begärda hastigheten och effekten.

  • stepnumber: Antal hela steg per varv för den anslutna stegmotorn. Används tillsammans med rpms för att beräkna fördröjningen mellan steg.

  • rpms: Målrotationshastighet i varv per minut. Vidarebefordras till set_speed().

  • power: PWM-arbetscykelns procentandel (0-100) som tillämpas på båda effektkanalerna. Vidarebefordras till set_power().

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

Generator som oändligt ger fyrfas-drivmönstret (1, 0, 0, 0), (0, 0, 1, 0), (0, 1, 0, 0), (0, 0, 0, 1) som används av step(). Varje tupelelement är värdet som ska skrivas till pin1, pin2, pin3, respektive pin4.

set_speed(rpms: int) None

Uppdatera stegningshastigheten.

  • rpms: Målrotationshastighet i varv per minut. Fördröjningen per halvsteg (i mikrosekunder) beräknas om som 1000000 / (rpms * stepnumber) / 2.

set_power(power: int) None

Ställ in PWM-arbetscykeln som tillämpas på båda effektkanalerna.

  • power: Arbetscykelns procentandel i intervallet 0 till 100.

step(num: int) None

Flytta fram stegmotorn med num fasövergångar, genom att tillämpa nästa fas från phase_list() och vänta den konfigurerade fördröjningen mellan steg (via pyb.udelay) mellan övergångarna.

  • num: Antal fassteg att flytta fram. Varje anrop till step flyttar fram exakt så här många faser; riktningen är fast (den underliggande fasgeneratorn itererar endast framåt).