tb6612 — Driver per motori TB6612¶
Il modulo tb6612 fornisce un driver per il driver per motori TB6612. Espone una classe Motor per pilotare un singolo motore DC su uno di due canali e una classe Stepper per pilotare un motore passo-passo a 4 fili.
Entrambe le classi utilizzano pyb.Timer(4) a 1 kHz sui pin P7 e P8 per l’uscita di potenza PWM. I pin di direzione di Motor sono P3/P2 (canale 1) e P1/P0 (canale 2). Stepper utilizza tutti e quattro i pin (P3, P2, P1, P0) più entrambi i canali PWM.
Esempio:
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)¶
Costruisce un controller per motore DC associato a uno dei due canali del TB6612.
channel: Numero del canale del motore.1utilizza i pin di direzioneP3/P2e il pin PWMP7(timer 4, canale 1).2utilizza i pin di direzioneP1/P0e il pin PWMP8(timer 4, canale 2).
- set_speed(pwm: int) None¶
Imposta la velocità e la direzione del motore.
pwm: Duty cycle con segno nell’intervallo da-100a100. I valori positivi fanno avanzare il motore, i valori negativi lo fanno indietreggiare. Il valore assoluto viene applicato come percentuale di duty cycle PWM al pin di potenza.
class Stepper¶
- class tb6612.Stepper(stepnumber: int = 200, rpms: int = 2, power: int = 50)¶
Costruisce un controller per motore passo-passo a 4 fili. Inizializza i pin di direzione
P3,P2,P1,P0e i due canali di potenza PWM suP7eP8, quindi applica la velocità e la potenza richieste.stepnumber: Numero di passi completi per giro del motore passo-passo collegato. Utilizzato insieme arpmsper calcolare il ritardo tra i passi.rpms: Velocità di rotazione target in giri al minuto. Inoltrato aset_speed().power: Percentuale di duty cycle PWM (0-100) applicata a entrambi i canali di potenza. Inoltrato aset_power().
- phase_list() Generator[tuple[int, int, int, int], None, None]¶
Generatore che produce all’infinito il pattern di pilotaggio a quattro fasi
(1, 0, 0, 0),(0, 0, 1, 0),(0, 1, 0, 0),(0, 0, 0, 1)utilizzato dastep(). Ogni elemento della tupla è il valore da scrivere rispettivamente supin1,pin2,pin3,pin4.
- set_speed(rpms: int) None¶
Aggiorna la velocità di avanzamento dei passi.
rpms: Velocità di rotazione target in giri al minuto. Il ritardo per mezzo passo (in microsecondi) viene ricalcolato come1000000 / (rpms * stepnumber) / 2.
- set_power(power: int) None¶
Imposta il duty cycle PWM applicato a entrambi i canali di potenza.
power: Percentuale di duty cycle nell’intervallo da0a100.
- step(num: int) None¶
Fa avanzare il motore passo-passo di
numtransizioni di fase, applicando la fase successiva daphase_list()e attendendo il ritardo tra i passi configurato (tramitepyb.udelay) tra le transizioni.num: Numero di passi di fase da avanzare. Ogni chiamata astepfa avanzare esattamente di questo numero di fasi; la direzione è fissa (il generatore di fasi sottostante itera solo in avanti).