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.1utilizează pinii de direcțieP3/P2și pinul PWMP7(timer 4, canal 1).2utilizează pinii de direcțieP1/P0și pinul PWMP8(timer 4, canal 2).
- set_speed(pwm: int) None¶
Setează viteza și direcția motorului.
pwm: Ciclu de funcționare cu semn în intervalul-100la100. 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 peP7șiP8, 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ă curpmspentru a calcula întârzierea dintre pași.rpms: Viteza de rotație țintă în rotații pe minut. Transmisă cătreset_speed().power: Procentajul ciclului de funcționare PWM (0-100) aplicat ambelor canale de putere. Transmis cătreset_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 destep(). Fiecare element al tuplului este valoarea de scris lapin1,pin2,pin3, respectivpin4.
- 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ă ca1000000 / (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 intervalul0la100.
- step(num: int) None¶
Avansează motorul pas cu pas cu
numtranziții de fază, aplicând faza următoare dinphase_list()și așteptând întârzierea configurată dintre pași (prinpyb.udelay) între tranziții.num: Numărul de pași de fază de avansat. Fiecare apel lastepavansează exact acest număr de faze; direcția este fixă (generatorul de faze subiacent iterează doar înainte).