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