tb6612 — Sterownik silników TB6612¶
Moduł tb6612 udostępnia sterownik dla układu sterowania silnikami TB6612. Udostępnia klasę Motor do sterowania pojedynczym silnikiem DC na jednym z dwóch kanałów oraz klasę Stepper do sterowania 4-przewodowym silnikiem krokowym.
Obie klasy używają pyb.Timer(4) o częstotliwości 1 kHz na pinach P7 i P8 do wyjścia mocy PWM. Piny kierunku klasy Motor to P3/P2 (kanał 1) oraz P1/P0 (kanał 2). Klasa Stepper używa wszystkich czterech pinów (P3, P2, P1, P0) oraz obu kanałów PWM.
Przykład:
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
klasa Motor¶
- class tb6612.Motor(channel: int)¶
Tworzy sterownik silnika DC przypisany do jednego z dwóch kanałów TB6612.
channel: Numer kanału silnika.1używa pinów kierunkuP3/P2i pinu PWMP7(timer 4, kanał 1).2używa pinów kierunkuP1/P0i pinu PWMP8(timer 4, kanał 2).
- set_speed(pwm: int) None¶
Ustawia prędkość i kierunek silnika.
pwm: Współczynnik wypełnienia ze znakiem w zakresie od-100do100. Wartości dodatnie napędzają silnik do przodu, wartości ujemne – do tyłu. Wartość bezwzględna jest stosowana jako procentowy współczynnik wypełnienia PWM dla pinu zasilania.
klasa Stepper¶
- class tb6612.Stepper(stepnumber: int = 200, rpms: int = 2, power: int = 50)¶
Tworzy sterownik 4-przewodowego silnika krokowego. Inicjalizuje piny kierunku
P3,P2,P1,P0oraz dwa kanały mocy PWM na pinachP7iP8, a następnie stosuje żądaną prędkość i moc.stepnumber: Liczba pełnych kroków na obrót podłączonego silnika krokowego. Używana razem zrpmsdo obliczenia opóźnienia między krokami.rpms: Docelowa prędkość obrotowa w obrotach na minutę. Przekazywana doset_speed().power: Procentowy współczynnik wypełnienia PWM (0-100) stosowany do obu kanałów mocy. Przekazywany doset_power().
- phase_list() Generator[tuple[int, int, int, int], None, None]¶
Generator, który nieskończenie zwraca czterofazowy wzorzec sterowania
(1, 0, 0, 0),(0, 0, 1, 0),(0, 1, 0, 0),(0, 0, 0, 1)używany przezstep(). Każdy element krotki to wartość zapisywana odpowiednio dopin1,pin2,pin3,pin4.
- set_speed(rpms: int) None¶
Aktualizuje prędkość krokowania.
rpms: Docelowa prędkość obrotowa w obrotach na minutę. Opóźnienie na pół-krok (w mikrosekundach) jest przeliczane jako1000000 / (rpms * stepnumber) / 2.
- set_power(power: int) None¶
Ustawia współczynnik wypełnienia PWM stosowany do obu kanałów mocy.
power: Procentowy współczynnik wypełnienia w zakresie od0do100.
- step(num: int) None¶
Przesuwa silnik krokowy o
numprzejść fazowych, stosując kolejną fazę zphase_list()i odczekując skonfigurowane opóźnienie między krokami (za pomocąpyb.udelay) pomiędzy przejściami.num: Liczba kroków fazowych do wykonania. Każde wywołaniestepprzesuwa dokładnie o tę liczbę faz; kierunek jest stały (bazowy generator faz iteruje tylko do przodu).