🚀 Introduzione
I servomotori sono ideali quando è necessario raggiungere rapidamente una determinata posizione, ma quando occorre ottenere movimenti estremamente precisi, ripetibili e controllabili, il componente più utilizzato è il motore passo-passo, conosciuto anche come stepper motor.
A differenza di un normale motore DC, un motore passo-passo non ruota continuamente quando viene alimentato.
Ogni impulso inviato da Arduino corrisponde a un piccolo spostamento angolare chiamato passo.
Grazie a questa caratteristica è possibile controllare con grande precisione la posizione del motore senza utilizzare sensori aggiuntivi.
In questo progetto realizzerai il tuo primo sistema di controllo per un motore passo-passo 28BYJ-48 utilizzando Arduino UNO e il modulo driver ULN2003.
Premendo due pulsanti sarà possibile:
Il movimento sarà fluido e progressivo, costituendo la base per i progetti successivi dedicati al driver A4988 e ai sistemi CNC.
I servomotori sono ideali quando è necessario raggiungere rapidamente una determinata posizione, ma quando occorre ottenere movimenti estremamente precisi, ripetibili e controllabili, il componente più utilizzato è il motore passo-passo, conosciuto anche come stepper motor.
A differenza di un normale motore DC, un motore passo-passo non ruota continuamente quando viene alimentato.
Ogni impulso inviato da Arduino corrisponde a un piccolo spostamento angolare chiamato passo.
Grazie a questa caratteristica è possibile controllare con grande precisione la posizione del motore senza utilizzare sensori aggiuntivi.
In questo progetto realizzerai il tuo primo sistema di controllo per un motore passo-passo 28BYJ-48 utilizzando Arduino UNO e il modulo driver ULN2003.
Premendo due pulsanti sarà possibile:
- ruotare il motore in senso orario;
- ruotarlo in senso antiorario.
Il movimento sarà fluido e progressivo, costituendo la base per i progetti successivi dedicati al driver A4988 e ai sistemi CNC.
🎯 Cosa realizzerai
Con Arduino realizzerai un sistema capace di:
Con Arduino realizzerai un sistema capace di:
- ⚙️ controllare un motore passo-passo 28BYJ-48;
- 🔄 ruotare il motore nei due sensi;
- 🔘 utilizzare due pulsanti di comando;
- 💡 visualizzare lo stato tramite LED;
- 🐢 controllare la velocità di rotazione;
- 📏 muovere il motore con precisione;
- 🛑 fermare immediatamente il movimento al rilascio dei pulsanti;
- 🧠 comprendere il funzionamento degli stepper;
- ✅ utilizzare un codice completamente compatibile con Arduino UNO.
🧰 Materiale necessario
Il motore 28BYJ-48 è uno dei modelli più utilizzati per imparare a controllare gli stepper grazie al basso costo e alla semplicità di utilizzo.
- 1x Arduino UNO;
- 1x motore passo-passo 28BYJ-48;
- 1x modulo driver ULN2003;
- 2x pulsanti;
- 1x LED;
- 1x resistenza da 220 Ω;
- alimentazione 5V;
- breadboard;
- cavetti jumper;
- cavo USB.
Il motore 28BYJ-48 è uno dei modelli più utilizzati per imparare a controllare gli stepper grazie al basso costo e alla semplicità di utilizzo.
🛒 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 utilizza la libreria:
Permette di controllare facilmente piccoli motori passo-passo senza installare librerie aggiuntive.
Il progetto utilizza la libreria:
- Stepper
Permette di controllare facilmente piccoli motori passo-passo senza installare librerie aggiuntive.
🔌 Schema di collegamento
Driver ULN2003
Collega il connettore del motore direttamente al driver.
Collegamenti Arduino
Pulsante rotazione oraria
Pulsante rotazione antioraria
LED
Driver ULN2003
Collega il connettore del motore direttamente al driver.
Collegamenti Arduino
- IN1 → pin 8
- IN2 → pin 9
- IN3 → pin 10
- IN4 → pin 11
- VCC → 5V
- GND → GND
Pulsante rotazione oraria
- un terminale → pin 2
- altro terminale → GND
Pulsante rotazione antioraria
- un terminale → pin 3
- altro terminale → GND
LED
- anodo → pin 7 tramite resistenza da 220 Ω
- catodo → GND
⚠️ Alimentazione
Il motore 28BYJ-48 assorbe una corrente relativamente contenuta e può essere alimentato dal pin 5V di Arduino durante le prove.
Tuttavia, se utilizzi alimentazioni esterne o altri motori passo-passo, è consigliabile alimentare il driver separatamente.
Ricorda sempre di collegare insieme:
La massa comune è indispensabile per il corretto funzionamento del sistema.
Il motore 28BYJ-48 assorbe una corrente relativamente contenuta e può essere alimentato dal pin 5V di Arduino durante le prove.
Tuttavia, se utilizzi alimentazioni esterne o altri motori passo-passo, è consigliabile alimentare il driver separatamente.
Ricorda sempre di collegare insieme:
- GND Arduino;
- GND del driver ULN2003.
La massa comune è indispensabile per il corretto funzionamento del sistema.
💻 Codice Arduino
Il programma utilizzerà:
Il programma utilizzerà:
- la libreria Stepper;
- due pulsanti;
- controllo della direzione;
- regolazione della velocità;
- LED di movimento.
⚙️ Come funziona
Il motore passo-passo viene comandato inviando una sequenza precisa di impulsi alle quattro bobine interne.
La libreria Stepper si occupa automaticamente di generare questa sequenza.
Quando viene premuto il pulsante di rotazione oraria, Arduino fa avanzare il motore di alcuni passi in senso orario.
Quando viene premuto il secondo pulsante, il motore ruota nella direzione opposta.
Il LED rimane acceso durante il movimento e si spegne quando il motore è fermo.
Poiché il programma esegue piccoli gruppi di passi alla volta, il motore risponde immediatamente quando il pulsante viene rilasciato.
Il motore passo-passo viene comandato inviando una sequenza precisa di impulsi alle quattro bobine interne.
La libreria Stepper si occupa automaticamente di generare questa sequenza.
Quando viene premuto il pulsante di rotazione oraria, Arduino fa avanzare il motore di alcuni passi in senso orario.
Quando viene premuto il secondo pulsante, il motore ruota nella direzione opposta.
Il LED rimane acceso durante il movimento e si spegne quando il motore è fermo.
Poiché il programma esegue piccoli gruppi di passi alla volta, il motore risponde immediatamente quando il pulsante viene rilasciato.
⚙️ Cos'è un passo
Un motore passo-passo non ruota liberamente come un normale motore DC.
Ogni comando corrisponde ad un piccolo movimento angolare.
Nel caso del motore 28BYJ-48, l'albero di uscita richiede circa 2048 passi per completare un giro completo, grazie al riduttore interno.
Questo permette di ottenere movimenti molto precisi.
Un motore passo-passo non ruota liberamente come un normale motore DC.
Ogni comando corrisponde ad un piccolo movimento angolare.
Nel caso del motore 28BYJ-48, l'albero di uscita richiede circa 2048 passi per completare un giro completo, grazie al riduttore interno.
Questo permette di ottenere movimenti molto precisi.
🎚️ Regolazione della velocità
La velocità viene impostata nel programma tramite la funzione:
stepper.setSpeed(10);
Il valore rappresenta i giri al minuto (RPM).
Velocità troppo elevate possono provocare:
Per iniziare è consigliabile utilizzare valori compresi tra 8 e 15 RPM.
La velocità viene impostata nel programma tramite la funzione:
stepper.setSpeed(10);
Il valore rappresenta i giri al minuto (RPM).
Velocità troppo elevate possono provocare:
- perdita di passi;
- vibrazioni;
- blocchi del motore.
Per iniziare è consigliabile utilizzare valori compresi tra 8 e 15 RPM.
💡 Suggerimenti pratici
- Non forzare manualmente l'albero del motore.
- Collega sempre il connettore del motore correttamente al driver.
- Evita di scollegare il motore mentre è alimentato.
- Inizia con basse velocità.
- Utilizza supporti rigidi se colleghi pulegge o ingranaggi.
- Evita carichi eccessivi sull'albero.
- Se il motore vibra ma non gira, controlla il cablaggio.
⚠️ Errori comuni
Il motore vibra ma non ruota
Controlla:
Il motore gira nel verso opposto
È sufficiente invertire il numero di passi nel codice oppure scambiare i pulsanti.
Il motore perde passi
Generalmente la velocità è troppo elevata.
Riduci il valore impostato nella funzione setSpeed().
Il motore diventa caldo
Un leggero riscaldamento è normale.
Se diventa molto caldo:
Il LED resta sempre acceso
Verifica che i pulsanti siano collegati correttamente e che utilizzino la modalità INPUT_PULLUP.
Il motore vibra ma non ruota
Controlla:
- collegamento del connettore;
- alimentazione;
- ordine dei pin nel programma.
Il motore gira nel verso opposto
È sufficiente invertire il numero di passi nel codice oppure scambiare i pulsanti.
Il motore perde passi
Generalmente la velocità è troppo elevata.
Riduci il valore impostato nella funzione setSpeed().
Il motore diventa caldo
Un leggero riscaldamento è normale.
Se diventa molto caldo:
- verifica l'alimentazione;
- riduci il tempo di funzionamento continuo;
- controlla che non sia bloccato meccanicamente.
Il LED resta sempre acceso
Verifica che i pulsanti siano collegati correttamente e che utilizzino la modalità INPUT_PULLUP.
🔄 Varianti possibili
Vuoi migliorare il progetto?
Vuoi migliorare il progetto?
- 🎛️ regola la velocità con un potenziometro;
- 📟 visualizza i passi su display LCD;
- 🔢 aggiungi un contatore dei giri;
- 🕹️ controlla il motore con un joystick;
- 📱 utilizza il Bluetooth;
- 🌐 aggiungi il controllo Wi-Fi;
- 💾 salva la posizione nella EEPROM;
- ⏱️ esegui rotazioni automatiche temporizzate;
- ⚙️ collega una puleggia;
- 🏭 prepara il sistema per un asse CNC.