Driver motore passo passo (Lezione 5)

Introduzione

Il motore passo passo, è ampiamente utilizzato in molte applicazioni, la sua diffusione è dovuta alla semplicità d’uso, al costo relativamente basso, alla precisone e accuratezza dei movimenti. Nei seguenti articoli: motore passo passo e ponte ad H ,   ho descritto il principio di funzionamento del motore passo passo e del ponte  H (se non l’aveste fatto ancora vi consiglio di leggerli prima di questo articolo).

Il ponte ad H  consente la rotazione del motore in entrambi sensi,  esso è collegato  ad ogni fase del motore, in questo modo,  possiamo  cambiare il senso di percorrenza della corrente e di conseguenza le polarità del campo magnetico prodotto dalle fasi.

Per aumentare la risoluzione di rotazione del motore è possibile pilotarlo facendogli eseguire dei micro passi (frazione del passo intero).

La micro rotazione del motore è ottenuta proporzionando in modo opportuno le correnti nelle fasi, i campi magnetici prodotti dalle fasi, generano delle  forze risultanti in modo da orientare il motore nella posizione desiderata. 

La modulazione delle correnti può essere ottenuta  con un segnale PWM che può essere generato da un microcontrollore o un driver hardware dedicato per i motori passo passo.

Dalla descrizione fatta nella prima parte dell’introduzione, il neofita potrebbe scoraggiarsi per la difficoltà con il quale bisogna gestire un motore passo passo, ma non bisogna abbattersi, poiché in commercio sono disponibili dei driver hardware, che svolgono tutte le funzioni  sopra descritte e il nostro compito è limitato alla sola attivazione dei comandi.

Vi voglio proporre il circuito integrato A4988, è un dispositivo che ha tutte le funzioni integrate per gestire appieno il motore,  l’implementazione software del suo driver è molto semplice, ed è  molto diffuso, soprattutto, nell’ambito makers, esistono in commercio già delle boards pronte all’uso ed in ultimo  è anche economico.

Informazioni  sul driver A4988

Le caratteristiche principali del circuito integrato A4988,  sono le seguenti:

Operating Voltage8 V
Maximum operating voltage35 V
Continuous current per phase2 A
Minimum logic voltage3 V
Maximum logic voltage5.5 V
Microstep resolutionfull, 1/2, 1/4, 1/8 and 1/16
Reverse voltage protectionNo
Tabella 1

Il range di tensione di lavoro del circuito integrato A4988 è 8 –  35V, con una corrente massima di 2A, è chiaro che nella selezione del motore, dobbiamo tenere conto di questi valori, onde evitare di  provocare dei danni irreversibili al motore e/o  al circuito integrato.

Il dispositivo, come accennato nell’introduzione, integra  due ponte ad  H, pertanto questo circuito integrato può gestire solo motori a due fasi, inoltre, i MOSFET  sui due rami del ponte ad H , hanno un basso valore di resistenza quando sono  nello stato di conduzione, questa caratterista ha un duplice vantaggio, ridurre al minimo la dissipazione sui dispositivi attivi e quindi una minore produzione di calore e una minore perdita d’energia.

Figura 1 Estratta dal datasheet del componente

Selezione dei micro passi

Il circuito integrato A4988  integra un generatore PWM, il quale è gestito da una logica interna  configurabile tramite gli ingressi MS1, MS2  e MS3 (Vedi Figura 1). Nella Tabella 2,  è indicata la tabella di verità sulla risoluzione che il driver attua in funzione degli ingressi MSx.

Tabella 2 Estratta dal datasheet del componente

Limitazione di corrente

Inoltre, il circuito ha un sistema retroazionato per impostare la corrente massima che deve circolare nelle due fasi del motore, ed è configurabile tramite i resistori Rs1 e Rs2.

Reset

Per mantenere in posizione un motore passo passo,  le fasi devono essere sempre alimentate,  in caso contrario, non ci sarà più forza di attrazione tra rotore e fasi perché non c’è il campo magnetico prodotto dalle correnti, pertanto, anche quando il motore è fermo, il circuito integrato alimenta le fasi. In alcuni casi, potrebbe essere inutile mantenere in posizione il motore, per questo motivo, il circuito integrato A4988  ha l’ingresso di RESET che disabilita la conduzione dei MOSFET del ponte ad H  con lo scopo di  annullare la circolazione di corrente nelle fasi per ridurre:  la dissipazione di corrente , di calore e d’energia.  Una funzione simile  può essere attivata anche dall’ingresso SLEEP, in questo caso, oltre a disattivare le uscite, l’intero circuito è configurato nello stato di standby.

Ingresso attivazione passo (STEP)

Ad ogni transizione dell’ingresso, da basso ad alto, si genera il timing  per far  ruotare il motore di un passo o micro passo, in funzione degli ingressi MSx.

Figura 2 Estratta dal datasheet del componente

Ingresso direzione rotazione (DIR)

Con questo ingresso, come è facile intuire, si può cambiare il senso di rotazione del motore. 

Per terminare il discorso legato  alle micro rotazione, ho riportato di seguito, in Figura 3, in cui è rappresentato il grafico delle correnti nelle due fasi, quando pilotiamo il motore facendogli eseguire dei micro passi. Possiamo osservare che, ogni fase ha una corrente in modulo diversa, in questo modo,  la forza risultante che incide sul rotore determinano l’angolo di rotazione del motore, funzione delle singole componenti  forza, prodotte dai campi magnetici delle due fasi.

Figura 3 Estratta dal datasheet del componente

Schema elettrico

Per questo progetto ho selezionato il motore passo passo Nema 17,  e’ un modello di fascia bassa, anch’esso  molto utilizzato nell’ambiente makers, ed e’ di facile reperibilità. Come accennato nell’introduzione, useremo una scheda gia’ pronta all’uso dove sono montati: il circuito integrato A4988,  i condensatori di filtro dell’alimentazione, un trimmer, sulla linea di retroazione,  per la regolazione della corrente massima d’uscita, oltre ad avere dei comodi reofori  per connettere i cablaggi o sulla mille fori.

Figura 4

In Figura 4, ho riportato lo schema di collegamento del motore con la board A4988, possiamo osservare, che ho inserito un ulteriore condensatore di filtro sull’alimentazione, del valore di almeno 47uF, non è stato integrato sulla scheda perché le dimensioni, per quel valore di capacità, non sono trascurabili, rispetto alla superfice utile della board.

Il codice

Nel  listato riportato di seguito, facciamo ruotare il motore, a ciclo continuo, in entrambe le direzioni, con velocità diversa.

// codice per il controllo di un motore passo passo  con il driver A4988, senza usare una libreria

// definiamo gli pin di connessione tra arduino e driver
#define DIR 2
#define PASSO 3

#define rivoluzione 200


void setup() {
  // dichiariamo i pin come uscite 
  pinMode(DIR, OUTPUT);
  pinMode(PASSO, OUTPUT);
  
}

void loop() {
  // settiamo la direzione di rotazione in senso orario
  digitalWrite(DIR, HIGH);
 
 

  // facciamo ruotare il motore lentamente:
  for (int i = 0; i < rivoluzione; i++) {
    // un passo:
    digitalWrite(PASSO, HIGH);
    delayMicroseconds(300);
    digitalWrite(PASSO, LOW);
    delayMicroseconds(300);
  }

  delay(1000);

  // settiamo la direzione di rotazione in senso antiorario:
  digitalWrite(DIR, LOW);

  // facciamo ruotare il motore più velocemente:
  
  for (int i = 0; i < rivoluzione; i++) {
    // un passo:
    digitalWrite(DIR, HIGH);
    delayMicroseconds(100);
    digitalWrite(DIR, LOW);
    delayMicroseconds(100);
  }

  delay(1000);

  // settiamo la direzione di rotazione in senso orario
  digitalWrite(DIR, HIGH);

  
  for (int i = 0; i < 5 * rivoluzione; i++) {
    
    digitalWrite(PASSO, HIGH);
    delayMicroseconds(300);
    digitalWrite(PASSO, LOW);
    delayMicroseconds(300);
  }

  delay(1000);

  // settiamo la direzione di rotazione in senso antiorario:
  digitalWrite(DIR, LOW);

  // facciamo ruotare il motore più veloce
  for (int i = 0; i < 5 * rivoluzione; i++) {
    // These four lines result in 1 step:
    digitalWrite(PASSO, HIGH);
    delayMicroseconds(100);
    digitalWrite(PASSO, LOW);
    delayMicroseconds(100);
  }

  delay(1000);
}

Nella prima parte, riga 2 e 3, definiamo con dei nomi mnemonici i pin d’uscita che di Arduino che devono pilotare il circuito integrato A4988. Per gestire il motore, con  le funzioni di base  che so talaltro quelle più utilizzate nella maggior parte dei progetti, sono necessari solo due segnali. Abbiamo tralasciato la configurazione dei micro step, perché basta solo configurare gli ingressi MSx  indicati nella tabella di verità XXXX., pertanto, il motore eseguirà passi interi  con un angolo di ampiezza 1.8°, perché il motore, NEMA17 , esegue 200 passi per angolo giro.

Analizziamo il codice dalla riga 24 alla 29, in cui c’è un ciclo “for”  che si ripete per 200 volte ( per una rotazione di un angolo giro)  ed ogni passo è intervallo di tempo di 300 + 300 ms,   che determina la velocità di rotazione del motore e la frequenza di ripetizione degli impulsi.

Mentre nella parte di codice compresa tra le righe 39 e 44, c’è lo stesso codice descritto pocanzi, ma in questo caso l’intervallo la frequenza di ripetizione degli impulsi è maggiore, perché l’intervallo di tempo è 100 +100 ms.

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ti sei iscritto alla newsletter

There was an error while trying to send your request. Please try again.

Quattrodispositivi utilizzerà le informazioni fornite in questo modulo per restare in contatto con te e fornire aggiornamenti del sito