🚀 Introduzione
Dopo aver controllato un piccolo motore passo-passo 28BYJ-48 con il driver ULN2003, è il momento di passare a una soluzione più potente e precisa.
In questo progetto utilizzerai Arduino UNO insieme al driver A4988, uno dei moduli più diffusi per il controllo di motori stepper bipolari.
L’A4988 viene utilizzato in:
A differenza del driver ULN2003, l’A4988 controlla il motore tramite due segnali principali:
Ogni impulso inviato al pin STEP fa avanzare il motore di un passo o di una frazione di passo, in base alla modalità selezionata.
Con due pulsanti potrai ruotare il motore nei due sensi, mentre un potenziometro permetterà di regolare la velocità.
Un LED segnalerà quando il motore è in movimento.
👉 Questo progetto introduce la logica tipica dei sistemi CNC e prepara il terreno ai progetti successivi dedicati al posizionamento preciso.
Dopo aver controllato un piccolo motore passo-passo 28BYJ-48 con il driver ULN2003, è il momento di passare a una soluzione più potente e precisa.
In questo progetto utilizzerai Arduino UNO insieme al driver A4988, uno dei moduli più diffusi per il controllo di motori stepper bipolari.
L’A4988 viene utilizzato in:
- stampanti 3D;
- macchine CNC;
- plotter;
- sistemi di posizionamento;
- piccoli robot;
- assi lineari automatizzati.
A differenza del driver ULN2003, l’A4988 controlla il motore tramite due segnali principali:
- STEP, che genera i passi;
- DIR, che stabilisce la direzione.
Ogni impulso inviato al pin STEP fa avanzare il motore di un passo o di una frazione di passo, in base alla modalità selezionata.
Con due pulsanti potrai ruotare il motore nei due sensi, mentre un potenziometro permetterà di regolare la velocità.
Un LED segnalerà quando il motore è in movimento.
👉 Questo progetto introduce la logica tipica dei sistemi CNC e prepara il terreno ai progetti successivi dedicati al posizionamento preciso.
🎯 Cosa realizzerai
Con Arduino creerai un sistema capace di:
Con Arduino creerai un sistema capace di:
- ⚙️ controllare un motore stepper bipolare;
- 🔌 utilizzare il driver A4988;
- ↔️ scegliere la direzione di rotazione;
- 🔘 comandare il motore con due pulsanti;
- 🎛️ regolare la velocità tramite potenziometro;
- 💡 indicare il movimento con un LED;
- 🛑 fermare il motore al rilascio dei pulsanti;
- 📏 generare impulsi STEP precisi;
- 🧠 comprendere la differenza tra STEP e DIR;
- ✅ utilizzare codice compatibile con Arduino UNO.
🧰 Materiale necessario
Il motore deve essere compatibile con la corrente massima gestibile dal driver A4988.
- 1x Arduino UNO;
- 1x motore passo-passo bipolare, ad esempio NEMA 17;
- 1x modulo driver A4988;
- 1x condensatore elettrolitico da almeno 100 µF;
- 2x pulsanti;
- 1x potenziometro lineare da 10 kΩ;
- 1x LED;
- 1x resistenza da 220 Ω;
- 1x alimentatore esterno adatto al motore;
- 1x breadboard o basetta di supporto;
- cavetti jumper;
- cavo USB.
Il motore deve essere compatibile con la corrente massima gestibile dal driver A4988.
🛒 Non hai ancora i componenti?
Molti dei progetti presenti su progettiarduino.com utilizzano componenti elettronici di base come LED, resistenze, sensori e breadboard.
Se stai iniziando con Arduino, il modo più semplice è utilizzare un kit completo per principianti, che include quasi tutti i componenti necessari per realizzare molti dei progetti presenti sul sito.
👉 Kit Arduino consigliato:
ℹ️ Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
https://amzn.to/4b3dxjW
📘 Vuoi imparare Arduino passo dopo passo?
Se vuoi approfondire e realizzare progetti più completi, puoi dare un'occhiata anche ai miei libri dedicati ad Arduino.
All'interno troverai spiegazioni semplici, schemi chiari e molti progetti pratici pensati per chi parte da zero.
👉 Scopri i miei libri su Arduino:
ℹ️ Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
https://amzn.to/4rfzjXE
Molti dei progetti presenti su progettiarduino.com utilizzano componenti elettronici di base come LED, resistenze, sensori e breadboard.
Se stai iniziando con Arduino, il modo più semplice è utilizzare un kit completo per principianti, che include quasi tutti i componenti necessari per realizzare molti dei progetti presenti sul sito.
👉 Kit Arduino consigliato:
ℹ️ Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
https://amzn.to/4b3dxjW
📘 Vuoi imparare Arduino passo dopo passo?
Se vuoi approfondire e realizzare progetti più completi, puoi dare un'occhiata anche ai miei libri dedicati ad Arduino.
All'interno troverai spiegazioni semplici, schemi chiari e molti progetti pratici pensati per chi parte da zero.
👉 Scopri i miei libri su Arduino:
ℹ️ Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
https://amzn.to/4rfzjXE
📚 Librerie necessarie
Il progetto non richiede librerie esterne.
Arduino controllerà direttamente il driver A4988 tramite:
Il progetto non richiede librerie esterne.
Arduino controllerà direttamente il driver A4988 tramite:
- digitalWrite() per il segnale di direzione;
- impulsi sul pin STEP;
- analogRead() per leggere il potenziometro;
- micros() per regolare la velocità senza bloccare il programma.
🔌 Schema di collegamento
Driver A4988 – Lato logico
Driver A4988 – Alimentazione motore
Rispetta la polarità del condensatore.
Motore stepper bipolare
Prima di collegarlo, identifica le due bobine con un multimetro.
Pulsante rotazione oraria
Pulsante rotazione antioraria
Potenziometro velocità
LED di movimento
Driver A4988 – Lato logico
- VDD → 5V di Arduino;
- GND logico → GND di Arduino;
- STEP → pin digitale 9;
- DIR → pin digitale 8;
- ENABLE → pin digitale 7;
- RESET → collegato a SLEEP;
- SLEEP → 5V;
- MS1 → GND;
- MS2 → GND;
- MS3 → GND.
Driver A4988 – Alimentazione motore
- VMOT → positivo dell’alimentatore esterno;
- GND motore → negativo dell’alimentatore esterno.
Rispetta la polarità del condensatore.
Motore stepper bipolare
- una bobina → uscite 1A e 1B;
- seconda bobina → uscite 2A e 2B.
Prima di collegarlo, identifica le due bobine con un multimetro.
Pulsante rotazione oraria
- un terminale → pin digitale 2;
- terminale opposto → GND.
Pulsante rotazione antioraria
- un terminale → pin digitale 3;
- terminale opposto → GND.
Potenziometro velocità
- terminale laterale → 5V;
- terminale centrale → A0;
- terminale laterale opposto → GND.
LED di movimento
- anodo → pin digitale 6 tramite resistenza da 220 Ω;
- catodo → GND.
⚠️ Alimentazione
Il motore non deve essere alimentato dal pin 5V di Arduino.
L’A4988 utilizza due alimentazioni separate:
Il motore deve essere alimentato con una sorgente esterna adeguata.
Collega insieme:
Non collegare o scollegare il motore mentre il driver è alimentato.
Questa operazione può danneggiare immediatamente il modulo A4988.
Il condensatore tra VMOT e GND è molto importante perché aiuta a proteggere il driver dai picchi di tensione generati dal motore.
Il motore non deve essere alimentato dal pin 5V di Arduino.
L’A4988 utilizza due alimentazioni separate:
- VDD per la logica;
- VMOT per il motore.
Il motore deve essere alimentato con una sorgente esterna adeguata.
Collega insieme:
- GND di Arduino;
- GND logico dell’A4988;
- GND dell’alimentatore del motore.
Non collegare o scollegare il motore mentre il driver è alimentato.
Questa operazione può danneggiare immediatamente il modulo A4988.
Il condensatore tra VMOT e GND è molto importante perché aiuta a proteggere il driver dai picchi di tensione generati dal motore.
⚠️ Regolazione della corrente
Prima di utilizzare il motore è necessario regolare il limite di corrente del driver A4988.
Il modulo contiene un piccolo trimmer che stabilisce la corrente massima fornita alle bobine.
Una regolazione errata può causare:
La regolazione deve essere eseguita in base:
La formula esatta può variare leggermente tra i diversi moduli.
Per questo motivo è importante consultare la documentazione del driver specifico utilizzato.
Durante la regolazione:
Prima di utilizzare il motore è necessario regolare il limite di corrente del driver A4988.
Il modulo contiene un piccolo trimmer che stabilisce la corrente massima fornita alle bobine.
Una regolazione errata può causare:
- motore debole;
- perdita di passi;
- surriscaldamento;
- danneggiamento del driver;
- danneggiamento del motore.
La regolazione deve essere eseguita in base:
- al modello del modulo A4988;
- al valore delle resistenze di misura;
- alla corrente nominale del motore.
La formula esatta può variare leggermente tra i diversi moduli.
Per questo motivo è importante consultare la documentazione del driver specifico utilizzato.
Durante la regolazione:
- utilizza un cacciavite isolato;
- evita cortocircuiti;
- non toccare i componenti metallici;
- misura la tensione di riferimento con attenzione;
- applica un dissipatore al driver.
💻 Codice Arduino
Il programma gestirà:
Il programma gestirà:
- lettura dei due pulsanti;
- scelta della direzione;
- lettura del potenziometro;
- generazione degli impulsi STEP;
- regolazione della velocità;
- controllo del pin ENABLE;
- LED di movimento;
- arresto quando nessun pulsante è premuto.
⚙️ Come funziona
Quando Arduino viene acceso, il driver rimane disabilitato.
Il motore non riceve impulsi e resta fermo.
Premendo il pulsante di rotazione oraria:
Premendo il pulsante antiorario, il livello del pin DIR viene invertito e il motore ruota nella direzione opposta.
Quando entrambi i pulsanti vengono rilasciati:
Se i due pulsanti vengono premuti contemporaneamente, il motore rimane fermo per evitare comandi contrari.
Quando Arduino viene acceso, il driver rimane disabilitato.
Il motore non riceve impulsi e resta fermo.
Premendo il pulsante di rotazione oraria:
- Arduino imposta il pin DIR;
- abilita il driver;
- genera impulsi sul pin STEP;
- accende il LED.
Premendo il pulsante antiorario, il livello del pin DIR viene invertito e il motore ruota nella direzione opposta.
Quando entrambi i pulsanti vengono rilasciati:
- gli impulsi STEP si interrompono;
- il driver viene disabilitato;
- il LED si spegne.
Se i due pulsanti vengono premuti contemporaneamente, il motore rimane fermo per evitare comandi contrari.
📏 Segnale STEP
Il pin STEP riceve una sequenza di impulsi.
Ogni impulso corrisponde a:
Nel progetto base verrà utilizzato il passo intero.
Con un motore da 200 passi per giro:
Il valore reale dipende dal motore e da eventuali riduzioni meccaniche.
Il pin STEP riceve una sequenza di impulsi.
Ogni impulso corrisponde a:
- un passo intero;
- mezzo passo;
- un quarto di passo;
- un ottavo di passo;
- un sedicesimo di passo.
Nel progetto base verrà utilizzato il passo intero.
Con un motore da 200 passi per giro:
- 200 impulsi corrispondono a circa un giro completo;
- 100 impulsi corrispondono a circa mezzo giro;
- 50 impulsi corrispondono a circa un quarto di giro.
Il valore reale dipende dal motore e da eventuali riduzioni meccaniche.
↔️ Segnale DIR
Il pin DIR stabilisce il verso di rotazione.
In genere:
Se il motore ruota al contrario, puoi:
Non scambiare casualmente i fili tra bobine diverse.
Il pin DIR stabilisce il verso di rotazione.
In genere:
- HIGH → una direzione;
- LOW → direzione opposta.
Se il motore ruota al contrario, puoi:
- invertire il livello DIR nel codice;
- scambiare i due fili di una sola bobina;
- rinominare i pulsanti.
Non scambiare casualmente i fili tra bobine diverse.
🎛️ Regolazione della velocità
Il potenziometro restituisce un valore compreso tra 0 e 1023.
Arduino converte questo valore in un intervallo di tempo tra due impulsi STEP.
Più piccolo è l’intervallo:
Più grande è l’intervallo:
La velocità massima deve essere limitata per evitare la perdita di passi.
Il potenziometro restituisce un valore compreso tra 0 e 1023.
Arduino converte questo valore in un intervallo di tempo tra due impulsi STEP.
Più piccolo è l’intervallo:
- più rapidamente vengono inviati gli impulsi;
- maggiore è la velocità del motore.
Più grande è l’intervallo:
- minore è la frequenza degli impulsi;
- più lento è il movimento.
La velocità massima deve essere limitata per evitare la perdita di passi.
🔌 Pin ENABLE
Il pin ENABLE dell’A4988 è attivo a livello basso.
Questo significa:
Quando il motore è fermo, disabilitare il driver permette di:
Quando il driver è disabilitato, l’albero può essere mosso più facilmente a mano.
Se invece è necessario mantenere la posizione, il driver può rimanere abilitato.
Il pin ENABLE dell’A4988 è attivo a livello basso.
Questo significa:
- LOW → driver abilitato;
- HIGH → driver disabilitato.
Quando il motore è fermo, disabilitare il driver permette di:
- ridurre il consumo;
- diminuire il riscaldamento;
- togliere coppia alle bobine.
Quando il driver è disabilitato, l’albero può essere mosso più facilmente a mano.
Se invece è necessario mantenere la posizione, il driver può rimanere abilitato.
💡 Suggerimenti pratici
- Regola il limite di corrente prima di collegare un carico.
- Utilizza sempre il condensatore su VMOT.
- Applica un dissipatore al driver.
- Non scollegare il motore mentre il sistema è acceso.
- Identifica correttamente le bobine.
- Inizia con una velocità bassa.
- Prova il motore senza carico.
- Utilizza cavi corti tra driver e motore.
- Fissa il motore a una struttura stabile.
- Evita di toccare il driver durante il funzionamento.
- Controlla frequentemente la temperatura.
- Non superare la tensione massima del modulo.
- Disabilita il sistema prima di modificare i collegamenti.
- Verifica che RESET e SLEEP siano collegati correttamente.
- Utilizza una breadboard solo per prove a bassa corrente.
⚠️ Errori comuni
Il motore vibra ma non gira
Le bobine sono probabilmente collegate in modo errato.
Identifica nuovamente le coppie con un multimetro.
Il motore perde passi
Le cause più comuni sono:
Il driver diventa molto caldo
Un certo riscaldamento è normale.
Se il modulo diventa eccessivamente caldo:
Il motore non mantiene la posizione
Se il pin ENABLE viene portato a HIGH, il driver disattiva le bobine.
Per mantenere la posizione è necessario lasciare il driver abilitato.
Il potenziometro non cambia la velocità
Controlla:
Il motore gira nel verso sbagliato
Puoi:
Arduino si riavvia
Il motore potrebbe essere alimentato in modo errato oppure i disturbi elettrici stanno raggiungendo la logica.
Verifica:
Il driver si danneggia all’accensione
Le cause più frequenti sono:
Il motore vibra ma non gira
Le bobine sono probabilmente collegate in modo errato.
Identifica nuovamente le coppie con un multimetro.
Il motore perde passi
Le cause più comuni sono:
- velocità troppo elevata;
- accelerazione troppo brusca;
- corrente insufficiente;
- carico eccessivo;
- alimentazione inadeguata.
Il driver diventa molto caldo
Un certo riscaldamento è normale.
Se il modulo diventa eccessivamente caldo:
- interrompi l’alimentazione;
- riduci il limite di corrente;
- aggiungi un dissipatore;
- migliora la ventilazione;
- riduci il carico;
- controlla che il motore non sia bloccato.
Il motore non mantiene la posizione
Se il pin ENABLE viene portato a HIGH, il driver disattiva le bobine.
Per mantenere la posizione è necessario lasciare il driver abilitato.
Il potenziometro non cambia la velocità
Controlla:
- terminale centrale collegato ad A0;
- terminali laterali collegati a 5V e GND;
- massa comune;
- valore letto nel programma.
Il motore gira nel verso sbagliato
Puoi:
- invertire la logica del pin DIR;
- scambiare i due fili di una bobina;
- scambiare le funzioni dei pulsanti.
Arduino si riavvia
Il motore potrebbe essere alimentato in modo errato oppure i disturbi elettrici stanno raggiungendo la logica.
Verifica:
- alimentazione separata;
- massa comune;
- condensatore;
- cablaggi;
- corrente del driver.
Il driver si danneggia all’accensione
Le cause più frequenti sono:
- condensatore assente;
- polarità invertita;
- motore scollegato mentre era alimentato;
- cortocircuito;
- tensione eccessiva;
- regolazione errata della corrente.
🔄 Varianti possibili
Vuoi migliorare il progetto?
Vuoi migliorare il progetto?
- 🔢 aggiungi un numero preciso di passi;
- 📟 visualizza la velocità su un display LCD;
- 🧭 controlla la posizione con un encoder;
- 🛑 aggiungi due finecorsa;
- 🎛️ regola anche il numero di passi con un potenziometro;
- 🕹️ utilizza un joystick;
- 🔘 aggiungi un pulsante di arresto;
- 💾 salva la posizione nella EEPROM;
- 🧰 utilizza la libreria AccelStepper;
- 📱 aggiungi il controllo Bluetooth;
- 🌐 aggiungi il controllo Wi-Fi;
- ⚙️ attiva il microstepping;
- 🏭 realizza un asse lineare;
- 🖨️ costruisci un piccolo plotter;
- 🛠️ prepara il sistema per una mini CNC.