Questa piccola board permette l’utilizzo dei moduli driver per motori passo-passo tipo: A4988, DRV8825 o altri con piedinatura identica. Dispone di zoccolo per l’inserimento del driver, un dip-switch per l’impostazione dei numero di step, tre connettori: uno con pin di controllo, uno di alimentazione e uno per il collegatore di un motore passo-passo a 4 pin.
Citazione dell’articolo nelle sezioni Articoli, Robotica del blog di Elettronica In
Indice
Foto della board driver A4988 DRV8825
Sotto sono riportate le foto dei due lati della scheda su cui possono essere istallati vari modelli di driver.
Ai lati sono presenti il pin-strip/connettori la cui funzione sarà trattata in dettaglio più avanti nell’articolo.
Specifiche tecniche
- Tensione di alimentazione logica: 3,3 V – 5 V
- Tensione di alimentazione motore passo-passo: fino a 30 V
- Dimensioni: 43 x 35 mm
- Peso: 9 grammi
Scheda compatibile
In rete si trova anche una scheda simile con le stesse caratteristiche:
- Morsettiera di alimentazione del tipo a vite;
- Presenza di due pin-strip 1 3 pin per l’alimentazione della logica
- Un led che segnala la presenza della tensione
- Dimensioni leggermente maggiori – 42x42x15mm
Schema elettrico Board driver A4988 DRV8825
Lo schema elettrico della Board driver A4988 DRV8825 sotto riportato è stato ricavato dal PCB, in quanto non è disponibile in rete.
Il componente principale è rappresentato dal modulo U1 che può essere un driver DRV8825 e A4988 o altro equivalente. Il modulo semplifica molto il circuito in quanto il circuito sarebbe molto più complesso
Schema elettrico del modulo A4988
Sono poi presenti due pin-strip J1 e J2, un connettore per il motore CN e un DIP switch.
J1 – Pin-strip controllo motore
É la pin-strip che permette la gestione della rotazione del motore, sono presenti 3 pin, sotto la tabella con la loro funzione
Sigla | Funzione | Descrizione |
---|---|---|
E | Enable | Pin di abilitazione del driver, ma questo risulta sempre collegato a terra tramite un resistore da 4,7 kΩ. Per questo motivo il modulo è sempre abilitato, per cui non occorre collegarlo ad Arduino |
D | Direction | Pin che controlla la direzione di rotazione del motore. Portandolo a livello HIGH fa girare il motore in senso orario, mentre portandolo a livello LOW farà girare in motore in senso antiorario. Se la direzione di rotazione è fissa si può collegare direttamente a +5V o GND. |
S | Step | Pin che controlla i microsteps del motore. Ogni impulso ALTO inviato a questo pin aziona il motore in base al numero di microsteps determinato dai pin di selezione dei microsteps. Maggiore è la frequenza degli impulsi, più velocemente girerà il motore. |
J2 – Pin-strip alimentazione
A questo connettore si devono collegare i cavi di alimentazione. Sia quello per alimentare la logica (+5V e GND) sia per l’alimentazione del motore. Per il motore il valore indicato pari a 9V è solo indicativo.
Sfortunatamente, almeno per quelli relativi al motore, non son previsti dei connettori a viti che garantirebbero una migliore stabilità del collegamento.
Sul circuito del motore è presente un condensatore C1 elettrolitico da 100µF, la sua funzione è quella di fornire la corrente di spunto al momento di partenza del motore. La sua tensione di lavoro è di 35 V, e questa è la massima tensione che potrà essere fornita al motore.
Impostazione Step
Il DIP switch permette di variare la risoluzione degli step per ogni rotazione, di default, sono in posizione OFF – FULL STEP. Sotto le tabelle che riportano la configurazione per ottenere il numero di step richiesto
TABELLA PER A4988
DIP1 | DIP2 | DIP3 | Risoluzione |
---|---|---|---|
OFF | OFF | OFF | Full Step |
ON | OFF | OFF | 1/2 Step |
OFF | ON | OFF | 1/4 Step |
ON | ON | OFF | 1/8 Step |
ON | ON | ON | 1/16 Step |
TABELLA PER DRV8825
DIP1 | DIP2 | DIP3 | Riloluzione |
---|---|---|---|
OFF | OFF | OFF | Full Step |
ON | OFF | OFF | 1/2 Step |
OFF | ON | OFF | 1/4 Step |
ON | ON | OFF | 1/8 Step |
OFF | OFF | ON | 1/16 Step |
ON | OFF | ON | 1/32 Step |
OFF | ON | ON | 1/32 Step |
ON | ON | ON | 1/32 Step |
Connettore motore
Il connettore motore è di tipo JST XH passo 2,5mm, 4 pin polarizzato. Il motore passo-passo dovrebbe avere lo stesso connettore. Può essere utilizzato anche un connettore tipo DUPONT 4 pin femmina passo 2.5 mm.
In quest’ultimo caso se notate che il motore ruota in senso opposto a quello voluto, basterà invertire il connettore.
Dove trovare la Board per driver A4988-DRV8825
La Board per driver A4988-DRV8825 può essere acquistata presso il sito di Futura elettronica codice 2846-DRIVERBOARD. Il suo costo al momento della pubblicazione di questo articolo è di 4 €.
Qualche informazione sul modulo A4988
Lo stepper motor driver tipo A4988 ( originale Allegro) permette di comandare un motore passo-passo tramite una scheda Arduino o altri microcontrollori.
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 misura: 20×15 mm, per un peso di soli 4 gr.
Per altre informazioni vedere l’articolo Stepper motor driver A4988 – Esempio applicativo
Dove trovare il modulo A4988
Il driver A4988 può essere acquistato presso:
- Il sito Homotix codice HMT4988
- Il sito di Futura elettronica codice 7350-3DDRIVER
Qualche informazione sul modulo DRV8825
Il driver è compatibile con il modello A4988, capace di controllare un motore passo-passo bipolare, può fornire fino a 1.5A per fase senza necessità di dissipatori, mentre se è dotato di dissipatore può raggiungere i 2.2A per bobina
La scheda deve essere alimentata con una tensione operativa compresa nel range 8.2V~45V.
Fornisce una limitazione di corrente selezionabile, protezione contro sovracorrente e surriscaldamento ed inoltre fornisce 6 risoluzioni di microstepping impostabile tramite gli appositi ingressi siglati “M0-M1-M2” (consultare il datasheet del Chip).
Per altre informazioni vedere l’articolo Stepper motor driver DRV8825 – Esempio applicativo
Dove trovare il modulo DRV8825
Il driver DRV8825 può essere acquistato presso :
- Il sito Homotix, codice HMT8825
- Il sito di Futura elettronica codice 8218-DRV8825.
Quali sono le differenze tra A4988 e DRV8825
Sotto sono riportate alcune differenze tra i moduli A4988 e DRV8825, tra l’altro sono di diverso colore: l’A4988 è verde o rosso, mentre il DRV8825 è di colore viola.
Alimentazione e corrente
- Tensione di alimentazione – Il DRV8825 ha una tensione di alimentazione massima più elevata rispetto all’A4988 (45 V contro 35 V), il che significa che il DRV8825 può essere utilizzato in modo più sicuro a tensioni più elevate ed è meno suscettibile ai danni causati dai picchi di tensione;
- Corrente fornita – Il DRV8825 può fornire una corrente più elevata all’A4988 senza alcun raffreddamento aggiuntivo;
- Posizione trimmer – Il trimmer per la regolazione del limite di corrente si trova in una posizione diversa;
- Pin alimentazione motore- Il DRV8825 utilizza una convenzione di denominazione diversa per le uscite del motore passo-passo, ma sono funzionalmente uguali ai pin corrispondenti sul supporto A4988 , quindi le stesse connessioni a entrambi i driver determinano lo stesso comportamento del motore passo-passo.
A4988 |
DRV8825 |
- Pin di alimentazione logica – Il pin utilizzato per fornire la tensione logica all’A4988 viene utilizzato come uscita FAULT del DRV8825. Il DRV8825 non richiede un’alimentazione logica mentre l’A4988 non ha un’uscita di errore. Non vi sono problemi comunque se si collega il pin FAULT direttamente a un’alimentazione logica in quanto è presente un resistore da 1,5k tra l’uscita IC e il pin per proteggerlo;
- Pin SLEEP – Il pin SLEEP sul DRV8825 non è attivato per impostazione predefinita come sull’A4988;
- Impostazione del limite di corrente – La relazione tra l’impostazione del limite di corrente e la tensione del pin di riferimento è diversa.
Gestione degli step
- Regolazione micro stepping – Il DRV8825 offre micro stepping da 1/32 passi ; l’ A4988 offre solo sino a 1/16 di passo ;
- Pin per impostazione micro stepping – Gli ingressi del pin di selezione della modalità corrispondenti a 1/16 di passo sull’A4988 si traducono in un micro stepping di 1/32 di passo sul DRV8825;
- Temporizzazione degli impulsi – I requisiti di temporizzazione per le durate minime degli impulsi sul pin STEP sono diversi per i due driver. Con il DRV8825, gli impulsi STEP alto e basso devono essere ciascuno di almeno 1,9 us; mentre possono essere brevi fino a 1 us quando si utilizza l’ A4988.
Limitazione di corrente
Prima del collegamento, è necessario regolare la corrente del driver in base alla corrente del motore passo-passo che si collegherà.
Come calcolare la corrente per il driver A4988 leggi qui, per il driver DRV8825 leggi qui .
E’ inoltre, se necessario, installare un dissipatore di calore per raffreddare il driver.
Collega il motore passo-passo NEMA17 . Nell’esempio, non userò il pin EN, collegherò STEP al pin 3 su Arduino e DIR al pin 2 su Arduino. Resta da collegare l’alimentazione, 5V al pin 5V su Arduino e 9V alla fonte di alimentazione, nel mio caso 12V, non dimenticate di collegare la terra.
Schema base di cablaggio per Arduino
Prima di tutto occorre installare il driver A4988 ( DRV8825) nei connettori presenti su PCB.
Far riferimento alla serigrafia riportata.
Per il collegamento, oltre alla Board per driver A4988-DRV8825 si sono utilizzati:
- La scheda di controllo Keyestudio PLUS (codice KS0486 ) compatibile con la Arduino UNO, è prodotta dalla Keyestudio ed è completamente compatibile con l’ambiente di sviluppo Arduino IDE.
Vedere articolo Scheda Keyestudio PLUS KS0486 - Un convertitore DC/DC step-down in grado di convertire una tensione continua d’ingresso compresa tra 5 e 23 volt, in una tensione continua di uscita da 0 a 16,5 volt, con una corrente massima di 2 A (3 A di picco). Vedere articolo MP2307 Convertitore DC-DC Step-Down regolabile
- Piccolo motore passo-passo NEMA-11 che genera 600 g-cm di coppia di mantenimento a 0,67 A. La versione provata è fornito con l’albero posteriore esposto, quindi è possibile montare un encoder o un accoppiatore dell’albero. Il motore ha una velocità massima di circa 426 RPM.
Caratteristiche del motore 28STH32 NEMA-11
Schema dei collegamenti
Sotto lo schema utilizzato, come detto nell’articolo, non è necessario collegare il pin Enable in quanto questo risulta già collegato a massa, per cui il modulo è già abilitato.
Controllo rotazione del motore passo-passo
Sotto è riportato il codice che fa effettuare al motore una rotazione completa dell’albero, prima in un senso e poi in senso opposto. Il primo in senso orario e poi antiorario. Nel caso non fosse così probabilmente il connettore è inserito in moto errato, provate ad invertirlo.
Il valore inserito per la variabile stepsPerRevolution pari a 200 deriva dal fatto che il motore utilizzato ha un angolo per passo intero pari a 1,8 °, per cui 360 / 1,8= 200 numero di passi per giro
Angolo del passo intero | Numero di divisioni del giro |
7,5° | 48 |
3,6° | 100 |
1,8° | 200 |
0,9° | 400 |
Il valore di 200 è valido per il passo intero, se si modifica l’impostazione del DIP switch occorre modificare il valore inserito per avere una rotazione completa
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 |
//Definizione dei pin const int stepPin = 8; const int dirPin = 9; const int stepsPerRevolution = 200; //200 = 1 rotazione completa const int step = 300; void setup() { // Dichiara i pin come uscite pinMode(stepPin, OUTPUT); pinMode(dirPin, OUTPUT); } void loop() { // Imposta la direzione del motore in senso orario digitalWrite(dirPin, HIGH); for (int x = 0; x < stepsPerRevolution; x++) { digitalWrite(stepPin, HIGH); delayMicroseconds(step); digitalWrite(stepPin, LOW); delayMicroseconds(step); } delay(1000); // attende un secondo // Imposta la direzione del motore in senso antiorario digitalWrite(dirPin, LOW); for (int x = 0; x < stepsPerRevolution; x++) { digitalWrite(stepPin, HIGH); delayMicroseconds(step); digitalWrite(stepPin, LOW); delayMicroseconds(step); } delay(1000); // attende un secondo } |
Rotazione del motore passo-passo utilizzando la libreria AccelStepper
Lo schizzo seguente aggiungerà accelerazione e decelerazione ai movimenti del motore passo-passo.
Per funzionare occorrerà scaricare la libreria chiamata “AccelStepper“, per informazioni sulla libreria vedere il link.
Per altre informazioni su come installare le librerie vedete l’articolo Arduino – Tutorial, come installare una libreria.
Il motore funzionerà avanti e indietro con una velocità di 200 passi al secondo e un’accelerazione di 30 passi al secondo.
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 |
//inclusione della libreria AccelStepper #include <AccelStepper.h> //Definisce i pin e inl tipo di interfacia motore #define dirPin 9 #define stepPin 8 #define motorInterfaceType 1 // Crea una nuova istanza della classe AccelStepper: AccelStepper stepper = AccelStepper(motorInterfaceType, stepPin, dirPin); void setup() { // Impostare la velocità massima e l'accelerazione: stepper.setMaxSpeed(400); stepper.setAcceleration(20); } void loop() { // Imposta la posizione di destinazione: stepper.moveTo(600); // ruota l'albero verso la posizione target con // velocità e accelerazione/decelerazione impostate: stepper.runToPosition(); delay(1000); // Ruota verso la posizione iniziale stepper.moveTo(0); stepper.runToPosition(); delay(1000); } |
Controllo rotazione con potenziometro
La velocità di rotazione può essere controllata anche tramite un potenziometro. In questo caso il variare della tensione letta dal pin analogico varierà il valore utilizzato come ritardo.
La funzione utilizzata e il comando map con la seguente sintassi
map(variabile,daMin,daMax,aMin,aMax)
La funzione map richiede in input i seguenti parametri:
- La variabile che conterrà il valore “mappato”.
- l minimo valore dell’intervallo da cui si vuole partire. Nel nostro caso 0
- Il massimo valore dell’intervallo da cui si vuole partire. Nel nostro caso 1023
- Il minimo valore dell’intervallo in cui si vuole convertire. Nel nostro caso il valore minimo degli step
- Il massimo valore dell’intervallo in cui si vuole convertire. Nel nostro caso il valore massimo degli step
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 |
// Definisce i pin utilizzati const int stepPin = 8; //Controllo step const int pot = A0; //Lettura potenziometro int customDelay, customDelayMapped; // Definisce le variabili void setup() { // Imposta il pin come uscita pinMode(stepPin, OUTPUT); } void loop() { customDelayMapped = speedUp(); // Ottiene valori di ritardo personalizzati dalla funzione speedUp // inserisci il volre di ritardo in base alla posizione del potenziometro digitalWrite(stepPin, HIGH); delayMicroseconds(customDelayMapped); digitalWrite(stepPin, LOW); delayMicroseconds(customDelayMapped); } // Funzione per la lettura del potenziometro int speedUp() { int customDelay = analogRead(pot); // Legge il potenziometro int newCustom = map(customDelay, 0, 1023, 300, 5000); // Converte i valori letti del potenziometro da 0 a 1023 // nei valori di ritardo desiderati (da 300 a 5000) return newCustom; } |
Altra scheda per controllo motori stepper
Sotto è visibile la scheda CNC SHIELD V3 per A4988/ DRV8825 Controller, si tratta di uno shield per Arduino compatibile con i driver controller tipo A4988 o DRV8825.
Viene utilizzata di solito per realizzare piccole macchine CNC o 3D printer.
Per informazioni vedere l’articolo CNC SHIELD V3 per A4988/ DRV8825 Controller