tb6612 — Driver de motor TB6612

Modulul tb6612 oferă un driver pentru driverul de motor TB6612. Acesta expune o clasă Motor pentru acționarea unui singur motor DC pe unul dintre cele două canale și o clasă Stepper pentru acționarea unui motor pas cu pas cu 4 fire.

Ambele clase utilizează pyb.Timer(4) la 1 kHz pe pinii P7 și P8 pentru ieșirea de putere PWM. Pinii de direcție ai Motor sunt P3/P2 (canalul 1) și P1/P0 (canalul 2). Stepper utilizează toți cei patru pini (P3, P2, P1, P0) plus ambele canale PWM.

Exemplu:

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)

Construiește un controler de motor DC legat la unul dintre cele două canale TB6612.

  • channel: Numărul canalului motorului. 1 utilizează pinii de direcție P3/P2 și pinul PWM P7 (timer 4, canal 1). 2 utilizează pinii de direcție P1/P0 și pinul PWM P8 (timer 4, canal 2).

set_speed(pwm: int) None

Setează viteza și direcția motorului.

  • pwm: Ciclu de funcționare cu semn în intervalul -100 la 100. Valorile pozitive acționează motorul înainte, valorile negative îl acționează în sens invers. Valoarea absolută se aplică drept procentaj al ciclului de funcționare PWM la pinul de putere.

class Stepper

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

Construiește un controler de motor pas cu pas cu 4 fire. Inițializează pinii de direcție P3, P2, P1, P0 și cele două canale de putere PWM pe P7 și P8, apoi aplică viteza și puterea solicitate.

  • stepnumber: Numărul de pași compleți pe rotație ai motorului pas cu pas conectat. Utilizat împreună cu rpms pentru a calcula întârzierea dintre pași.

  • rpms: Viteza de rotație țintă în rotații pe minut. Transmisă către set_speed().

  • power: Procentajul ciclului de funcționare PWM (0-100) aplicat ambelor canale de putere. Transmis către set_power().

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

Generator care produce la nesfârșit modelul de acționare în patru faze (1, 0, 0, 0), (0, 0, 1, 0), (0, 1, 0, 0), (0, 0, 0, 1) utilizat de step(). Fiecare element al tuplului este valoarea de scris la pin1, pin2, pin3, respectiv pin4.

set_speed(rpms: int) None

Actualizează viteza de pășire.

  • rpms: Viteza de rotație țintă în rotații pe minut. Întârzierea pe jumătate de pas (în microsecunde) este recalculată ca 1000000 / (rpms * stepnumber) / 2.

set_power(power: int) None

Setează ciclul de funcționare PWM aplicat ambelor canale de putere.

  • power: Procentajul ciclului de funcționare în intervalul 0 la 100.

step(num: int) None

Avansează motorul pas cu pas cu num tranziții de fază, aplicând faza următoare din phase_list() și așteptând întârzierea configurată dintre pași (prin pyb.udelay) între tranziții.

  • num: Numărul de pași de fază de avansat. Fiecare apel la step avansează exact acest număr de faze; direcția este fixă (generatorul de faze subiacent iterează doar înainte).