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).