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. 1 używa pinów kierunku P3/P2 i pinu PWM P7 (timer 4, kanał 1). 2 używa pinów kierunku P1/P0 i pinu PWM P8 (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 -100 do 100. 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, P0 oraz dwa kanały mocy PWM na pinach P7 i P8, 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 z rpms do obliczenia opóźnienia między krokami.

  • rpms: Docelowa prędkość obrotowa w obrotach na minutę. Przekazywana do set_speed().

  • power: Procentowy współczynnik wypełnienia PWM (0-100) stosowany do obu kanałów mocy. Przekazywany do set_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 przez step(). Każdy element krotki to wartość zapisywana odpowiednio do pin1, 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 jako 1000000 / (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 od 0 do 100.

step(num: int) None

Przesuwa silnik krokowy o num przejść fazowych, stosując kolejną fazę z phase_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łanie step przesuwa dokładnie o tę liczbę faz; kierunek jest stały (bazowy generator faz iteruje tylko do przodu).