PROGETTI ARDUINO

  • HOME
  • 200 Progetti
  • Progetti e Tutorial
  • Reti
    • Impara le reti
    • internet fibra
    • wifi mesh
    • modem router
    • diagnostica reti
    • ethernet lan
    • sicurezza configurazione
  • Elettronica
  • Recensioni
  • Manuale
  • Contatti
  • HOME
  • 200 Progetti
  • Progetti e Tutorial
  • Reti
    • Impara le reti
    • internet fibra
    • wifi mesh
    • modem router
    • diagnostica reti
    • ethernet lan
    • sicurezza configurazione
  • Elettronica
  • Recensioni
  • Manuale
  • Contatti

Progetto 157
​Controllo di un motore passo-passo con Arduino

🚀 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:
  • 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:
  • ⚙️ 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
​
  • 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
​

📚 Librerie necessarie
​

Il progetto utilizza la libreria:
  • Stepper
Questa libreria è già inclusa nell'Arduino IDE.
​
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
  • IN1 → pin 8
  • IN2 → pin 9
  • IN3 → pin 10
  • IN4 → pin 11
Alimentazione
  • VCC → 5V
  • GND → GND

Pulsante rotazione oraria
  • un terminale → pin 2
  • altro terminale → GND

Pulsante rotazione antioraria
  • un terminale → pin 3
  • altro terminale → GND
Entrambi utilizzano INPUT_PULLUP.

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:
  • GND Arduino;
  • GND del driver ULN2003.
​
La massa comune è indispensabile per il corretto funzionamento del sistema.
Foto

💻 Codice Arduino
​
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.

⚙️ 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.

🎚️ 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:
  • 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:
  • 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?
  • 🎛️ 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.

Foto
Foto

© ProgettiArduino.com 2026 - Fancello Salvatore
​ Layout, immagini e testi sono di esclusiva proprietà di www.progettiarduino.com 
Privacy Policy