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. 1 utilizza i pin di direzione P3/P2 e il pin PWM P7 (timer 4, canale 1). 2 utilizza i pin di direzione P1/P0 e il pin PWM P8 (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 -100 a 100. 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, P0 e i due canali di potenza PWM su P7 e P8, quindi applica la velocità e la potenza richieste.

  • stepnumber: Numero di passi completi per giro del motore passo-passo collegato. Utilizzato insieme a rpms per calcolare il ritardo tra i passi.

  • rpms: Velocità di rotazione target in giri al minuto. Inoltrato a set_speed().

  • power: Percentuale di duty cycle PWM (0-100) applicata a entrambi i canali di potenza. Inoltrato a set_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 da step(). Ogni elemento della tupla è il valore da scrivere rispettivamente su pin1, 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 come 1000000 / (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 da 0 a 100.

step(num: int) None#

Fa avanzare il motore passo-passo di num transizioni di fase, applicando la fase successiva da phase_list() e attendendo il ritardo tra i passi configurato (tramite pyb.udelay) tra le transizioni.

  • num: Numero di passi di fase da avanzare. Ogni chiamata a step fa avanzare esattamente di questo numero di fasi; la direzione è fissa (il generatore di fasi sottostante itera solo in avanti).