Questo Stepper motor driver tipo A4988 ( originale Allegro) permette di comandare un motore passo-passo (stepper motor) tramite una scheda Arduino o altri microcontrollori.
Può essere montato per esempio su uno CNC SHIELD V3 per A4988/ DRV8825 Controller.
La scheda, disponibile a seconda dei lotti con circuito stampato ROSSO o VERDE, necessita di alimentazione di 5Vdc per la logica e una tensione da 8 e 35Vdc per il motore.
L’uscita può pilotare motori fino a 2A con dissipatore o ventilazione e gestisce il pilotaggio di stepper in micropasso.
Il micro passo (passo intero, 1/2, 1/4, 1/8 o 1/16 di passo) è impostabile tramite gli appositi ingressi siglati “MS1-MS2-MS3” ( consultare il datasheet del Chip).
E’ possibile la regolazione della corrente di uscita tramite un potenziometro a vite. Dotata di shutdown termico a temperatura eccessiva e blocco sotto tensione.
La scheda analizzata misura: 20×15 mm, per un peso di soli 4 gr.
Indice
Schema tipico di applicazione
Sotto è riportato lo schema applicativo minimo dell’integrato A4988 riportato nel datasheet.
Sotto è riportato lo schema minimo di applicazione dello Stepper motor driver A4988
Foto del modulo
Dove trovare il modulo
Il driver A4988 può essere acquistato presso:
- Il sito di Futura elettronica codice 7350-3DDRIVER
Compatibilità del modulo
La scheda stepper motor driver tipo A4988 è compatibile pin to pin con la scheda basata sul motor driver DRV8825
Installazione dissipatore di calore
Per permettere al chip di trasferire il massimo valore di corrente è necessario istallare sul chip stesso una piccola aletta dissipatrice in alluminio.
L’istallazione è molto semplice in quanto è sufficiente togliere la carta protettiva presente sul biadesivo e applicare l’aletta sul corpo dell’integrato facendo una leggera pressione.
Taratura del driver
Come abbiamo visto sulla scheda è presente un trimmer che serve per la taratura del valore di VREF degli stepper driver, valore che varia a seconda del motore a cui è collegato.
Se si utilizzano degli stepper tipo Nema 17 che si trovano per esempio nelle stampanti, questi lavorano con correnti di 1, 75 A, in questo caso ne calcoleremo il 70% che risulta essere di circa 1,2 A .
Per la taratura saranno necessari un multimetro e un cacciavite di piccole dimensioni possibilmente ceramico per evitare di creare un cortocircuito che distruggerebbe il driver.

Multimetro digitale

Cacciavite per taratura
Regolazione amperometrica diretta
Questa prima modalità consiste nel collegarsi, ad elettronica disalimentata, con il multimetro in serie alle bobine dei motore in modo da misurare il valore della corrente passante, e per fare ciò il multimetro deve essere messo nella modalità amperometrica con lo shunt, per esempio sul valore di 10A.
Provvederemo quindi a regolare la corrente ruotando il trimmer dei driver, a motore fermo, fino a quando muovendosi non assorba la corrente di 1,2 A, una volta tarati si potrà rimuovere il multimetro, sempre ad elettronica disalimentata.
Regolazione indiretta tramite il VREF
Utilizzando questo metodo dovremmo collegare il tester in serie ma calcoleremo il VREF che ci permetterà di regolare il driver per fargli erogare la corrente che vogliamo.
Come abbiamo visto il driver A4988 opera con una tensione operativa che deve essere compresa nel range 8V – 35V ed è in grado di fornire fino a 2A per bobina se opportunamente dissipato.
Nella versione a 2 layer è sconsigliato erogare più di 1.5A perché surriscaldano molto e si fa fatica a dissiparli, mentre per quelli a 4 layer con il dissipatore si potranno raggiungere i 2 A teorici.
Prenderemo la corrente a cui faremo lavorare i nostri motori, che nel nostro esempio è 1,2 A e applicando la formula sottostante ci calcoleremo il valore di VREF
VREF = Corrente/2, 5 = 1,2/2,5 = 0,48 V
Questo valore vale per le versioni che possono erogare fino a 2 A, nel caso dei cloni a due layer che sono limitati a 1, 5 A, il valore al divisore non sarà 2,5 ma 1,6.
Quindi con il multimetro impostato in corrente continua, si misurerà ad elettronica alimentata ma con motore fermo, la tensione tra il centro del trimmer ed il terminale GND, successivamente ruoteremo il trimmer fino ad ottenere la tensione calcolata. A questo punto il driver risulterà tarato.
Filmato illustrativo
Riporto sotto un interessante filmato che mostra come effettuare la taratura dei driver e altre importanti informazioni sui driver
Programma di esempio
Per il test del modulo A4898, lo si inserirà per esempio su una CNC shield, a sua volta montata su una scheda Arduino UNO originale o clone, e si collegherà un motore passo passo.
Occorre poi collegare alla morsettiera di alimentazione motore, una fonte in grado di fornire una tensione minima di 12V-2A (verificare in base al proprio stepper)
Lo sketch farà compiere al motore un determinato numero di passi, seguiti da una pausa.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #define EN 8 //Direction pin #define X_DIR 5 #define Y_DIR 6 #define Z_DIR 7 //Step pin #define X_STP 2 #define Y_STP 3 #define Z_STP 4 int steps = 50; // Passi da effettuare void setup() { // Impostazione di pin pinMode(X_DIR, OUTPUT); pinMode(X_STP, OUTPUT); pinMode(Y_DIR, OUTPUT); pinMode(Y_STP, OUTPUT); pinMode(Z_DIR, OUTPUT); pinMode(Z_STP, OUTPUT); pinMode(EN, OUTPUT); digitalWrite(EN, LOW); } void loop() { for (int i = 0; i < steps; i++) { digitalWrite(Y_DIR, HIGH); // rotazione oraria digitalWrite(Y_STP, HIGH); delay(1); digitalWrite(Y_STP, LOW); delay(1); } delay (2000); } |
Quello che segue è un programma più completo che utilizza tutti e tre i driver per pilotare tre motori.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | // The following is a simple stepper motor control procedures, # define EN 8 // stepper motor enable , active low # define X_DIR 5 // X -axis stepper motor direction control # define Y_DIR 6 // y -axis stepper motor direction control # define Z_DIR 7 // z axis stepper motor direction control # define X_STP 2 // x -axis stepper control # define Y_STP 3 // y -axis stepper control # define Z_STP 4 // z -axis stepper control /* // Function : step . function: to control the direction of the stepper motor , the number of steps . // Parameters : dir direction control , dirPin corresponding stepper motor DIR pin , stepperPin corresponding stepper motor ” step ” pin , Step number of step of no return value. */ void step (boolean dir, byte dirPin, byte stepperPin, int steps) { digitalWrite (dirPin, dir); delay (50); for (int i = 0; i< steps; i++) { digitalWrite (stepperPin, HIGH); delayMicroseconds (5); digitalWrite (stepperPin, LOW); delayMicroseconds (5); } } void setup () {// The stepper motor used in the IO pin is set to output pinMode (X_DIR, OUTPUT); pinMode (X_STP, OUTPUT); pinMode (Y_DIR, OUTPUT); pinMode (Y_STP, OUTPUT); pinMode (Z_DIR, OUTPUT); pinMode (Z_STP, OUTPUT); pinMode (EN, OUTPUT); digitalWrite (EN, LOW); } void loop () { step (false, X_DIR, X_STP, 200); // X axis motor reverse 1 ring, the 200 step is a circle. step (false, Y_DIR, Y_STP, 200); // y axis motor reverse 1 ring, the 200 step is a circle. step (false, Z_DIR, Z_STP, 200); // z axis motor reverse 1 ring, the 200 step is a circle. delay (5); step (true, X_DIR, X_STP, 200); // X axis motor forward 1 laps, the 200 step is a circle. step (true, Y_DIR, Y_STP, 200); // y axis motor forward 1 laps, the 200 step is a circle. step (true, Z_DIR, Z_STP, 200); // z axis motor forward 1 laps, the 200 step is a circle. delay (5); } |
Scheda per utilizzo del Stepper motor driver A4988
E’ possibile utilizzare il modulo utilizzando la Board per driver A4988 e DRV8825.
Vedere descrizione e programmi di esempio nell’articolo Board per driver A4988-DRV8825