Motore con Arduino - guida pratica su driver, PWM e alimentazione

Schema di collegamento Arduino Uno con due motori DC, alimentati da una batteria 5V, tramite un chip L293D su breadboard.

Scritto da

Ippolito Vitali

Pubblicato il

30 mag 2026

Indice

Controllare un motore con Arduino sembra semplice finché non si passa dal LED al carico reale. Nel mondo dell’arduino motor, il vero problema non è far partire il rotore, ma farlo in modo stabile, con la giusta corrente e senza stressare la scheda. Qui chiarisco quale motore scegliere, quale elettronica interporre e come scrivere un controllo pulito per piccoli progetti, robot e automazioni hobbistiche.

Le decisioni giuste sono motore, driver e alimentazione

  • Un Arduino comanda il motore, ma quasi mai lo alimenta direttamente.
  • Per un motore DC servono spesso transistor o H-bridge; per servo e stepper servono librerie e hardware diversi.
  • Sul classico UNO R3 hai 6 uscite PWM, utili per regolare la velocità.
  • analogWrite() lavora su una scala 0-255 sui board Arduino tradizionali.
  • Un driver ben scelto vale più di uno sketch complicato.

Capire quale motore ti serve davvero

Io parto sempre da una distinzione netta: un motore DC gira, un servo si posiziona, uno stepper avanza per passi. Se confondi questi tre mondi, finisci a comprare componenti sbagliati o a scrivere codice che non può funzionare come immagini. Il primo passo, quindi, non è il cablaggio: è la scelta del motore in base al movimento che vuoi ottenere.

Tipo di motore Quando conviene Punto forte Limite pratico
DC brushless o brushed, se pilotato con il driver giusto Ruote, ventole, nastri, meccanismi che devono ruotare in continuo È semplice da controllare in velocità e molto diffuso nei progetti hobbistici Da solo non ti dà la posizione; per invertire il verso serve elettronica adatta
Servo Bracci leggeri, timoni, pan/tilt, comandi angolari Si porta rapidamente a un angolo preciso, spesso in un range di 0-180° Non è pensato per rotazioni continue nei modelli standard
Stepper Assi, piccoli plotter, dispenser, posizionamento ripetibile Avanza a passi controllati e rende il movimento prevedibile Richiede hardware adeguato e, nei fatti, un po’ più di cura nell’alimentazione

Questa scelta ti evita gran parte dei problemi a valle. Se il tuo obiettivo è solo ruotare ruote o ventole, la strada è diversa da quella di un braccio robotico o di un asse lineare. Una volta chiarito il tipo di motore, il passo successivo è capire quali componenti servono davvero sul banco di lavoro.

Cosa serve per non bruciare il progetto

La regola pratica è semplice: Arduino decide, il driver eroga corrente, l’alimentazione esterna tiene in piedi il carico. Su un UNO R3 hai 14 pin digitali e 6 uscite PWM, quindi hai spazio per comandare più segnali, ma non per alimentare un motore direttamente. Il codice può essere perfetto, ma se la parte di potenza è debole il progetto resta fragile.
  • Scheda Arduino, che genera i segnali di comando.
  • Driver o transistor, che fanno da interfaccia tra microcontrollore e motore.
  • Alimentazione esterna, dimensionata sul motore e non sulla scheda.
  • Massa comune, indispensabile per far “parlare” correttamente logica e potenza.
  • Eventuali sensori, come encoder o potenziometri, se vuoi più precisione.

Un altro dettaglio utile è la scala del PWM: con analogWrite() lavori normalmente su valori da 0 a 255, quindi stai regolando il duty cycle, non inviando una tensione analogica continua. In pratica, il microcontrollore accende e spegne il segnale molto velocemente, e il motore interpreta quel ritmo come una velocità media. Quando questi elementi sono chiari, il cablaggio diventa molto più lineare.

Collegamento di un motorino DC a un Arduino 101 tramite un driver TB6612FNG su breadboard.

Collegare un motore DC con transistor o driver H-bridge

Per un piccolo motore DC ci sono due strade comuni. Se ti basta accensione, spegnimento e una sola direzione, un transistor usato come interruttore può bastare; se vuoi anche inversione di marcia, serve un H-bridge o una scheda motori. La differenza pratica è questa: il transistor semplifica, l’H-bridge rende il controllo più completo.

  1. Alimenta il motore o il driver con una sorgente esterna adatta al carico.
  2. Collega la massa dell’alimentatore e quella di Arduino in comune.
  3. Usa un pin PWM per la velocità, se il driver lo supporta.
  4. Usa due pin logici per stabilire il verso di rotazione, quando lavori con un H-bridge.
  5. Fai il primo test a duty cycle basso, non a potenza piena.

Se vuoi una soluzione più pronta, l’Arduino Motor Shield Rev3 è comodo perché si basa su un L298, un dual full-bridge driver pensato per carichi induttivi. In pratica permette di pilotare due motori DC in modo indipendente e offre anche la lettura dell’assorbimento di corrente, che nei prototipi è più utile di quanto sembri. Io lo considero valido quando voglio ridurre il tempo di montaggio e avere un controllo più ordinato del cablaggio.

Con il cablaggio impostato, il codice diventa il pezzo più pulito del progetto.

Gestire velocità e direzione con il PWM

Il PWM è la parte che spesso crea confusione, ma in realtà è solo un segnale acceso-spento molto veloce con un rapporto di duty cycle variabile. analogWrite() usa una risoluzione a 8 bit sui board classici, quindi i valori vanno da 0 a 255. Su alcune schede più recenti la risoluzione si può modificare, ma per la maggior parte dei progetti con Arduino la scala 0-255 resta il riferimento più immediato.
const int ENA = 5;   // PWM
const int IN1 = 8;
const int IN2 = 9;

void setup() {
  pinMode(ENA, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
}

void loop() {
  // Avanti
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  analogWrite(ENA, 180);   // circa 70% su scala 0-255
  delay(2000);

  // Stop
  analogWrite(ENA, 0);
  delay(1000);

  // Indietro
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  analogWrite(ENA, 180);
  delay(2000);

  analogWrite(ENA, 0);
  delay(1000);
}

In questo schema il pin PWM regola la velocità, mentre i due pin direzionali decidono il verso. Se il tuo driver usa solo un transistor, la parte di inversione scompare e lo sketch si semplifica ancora di più. Se invece il motore deve lavorare in modo reversibile, questa logica è la base corretta da cui partire. Quando hai chiaro il comando in PWM, il confronto con servo e stepper diventa molto più semplice.

Servo e stepper non sono la stessa cosa

Qui vedo spesso il primo equivoco: si cerca di comandare un servo come se fosse un DC, oppure uno stepper come se bastasse un semplice segnale PWM. La realtà è diversa. Il servo standard è nato per un posizionamento angolare rapido, mentre lo stepper è pensato per muoversi per passi e conservare una logica di posizione molto più precisa.

Motore Quando lo scelgo Libreria o supporto utile Attenzione pratica
Servo Quando mi serve un angolo preciso e limitato Servo Library Nei modelli standard il range tipico è intorno a 0-180°
Stepper Quando mi serve un movimento ripetibile e controllato Stepper library o driver dedicato Serve l’hardware appropriato e una cura maggiore nella potenza disponibile

La Servo Library è la scelta naturale per il servo standard, mentre la libreria Stepper gestisce motori unipolari o bipolari, ma richiede comunque il supporto elettrico giusto. In pratica, se devi far ruotare un braccio di pochi gradi, il servo è spesso la soluzione più pulita; se devi posizionare un carrello, uno stepper ti dà più controllo. Capito questo, restano gli errori che fanno perdere più tempo di tutti.

Gli errori che vedo più spesso nei primi prototipi

Quando un motore “non va”, quasi mai il problema è il codice in sé. Molto più spesso c’è un errore di architettura: alimentazione sbagliata, cablaggio incompleto o aspettative irrealistiche sul carico. Io controllo sempre questi punti prima di cercare il colpevole nello sketch.

  • Alimentare il motore dal 5V di Arduino: è una scorciatoia che regge solo esperimenti molto piccoli, non un progetto serio.
  • Dimenticare la massa comune: senza riferimento condiviso, il segnale di comando perde affidabilità.
  • Usare il driver sbagliato: un semplice transistor non sostituisce un H-bridge quando serve l’inversione di marcia.
  • Ignorare la corrente di spunto: il momento più duro non è sempre il funzionamento continuo, ma l’avvio sotto carico.
  • Testare solo a vuoto: un motore che gira bene senza carico può crollare appena incontra resistenza.
  • Sottovalutare il calore: driver, cavi e alimentatore vanno verificati anche dopo alcuni minuti di lavoro.

Se hai un shield che misura l’assorbimento, sfruttalo: è una delle informazioni più utili per capire se il motore sta lavorando entro limiti sani. A quel punto la scelta non è più solo tecnica, ma anche di architettura del progetto.

Il dettaglio che separa un prototipo curioso da un sistema affidabile

Io partirei sempre dalla potenza, non dal codice. Se il motore è piccolo e il comportamento è semplice, un driver elementare basta; se servono coppia, inversione o precisione, conviene investire subito nella parte di potenza giusta. Separare alimentazione logica e alimentazione motore, poi, è una scelta che paga quasi sempre, perché rende il sistema più leggibile e meno instabile.

Per un primo test serio, uso un solo motore, duty cycle basso, cavi corti e una verifica del riscaldamento dopo pochi minuti. Se tutto resta pulito, solo allora aggiungo sensori, encoder o controllo remoto. È questo approccio che trasforma un semplice esperimento in un progetto davvero replicabile.

Domande frequenti

Per rotazioni continue e controllo semplice della velocità, il motore DC è la scelta più naturale. Se ti serve un angolo preciso, il servo è più adatto; se invece vuoi movimenti ripetibili per passi, meglio uno stepper.

Arduino genera i segnali, ma il carico va gestito da un driver o da un transistor e da un'alimentazione esterna dimensionata sul motore. Serve anche la massa comune tra alimentatore e scheda; senza questo riferimento il comando diventa poco affidabile.

analogWrite() usa una scala da 0 a 255 e modula il duty cycle, non una tensione analogica continua. Su un UNO R3 hai 6 uscite PWM, quindi puoi regolare la velocità in modo semplice e ripetibile.

Il transistor basta se devi solo accendere, spegnere o gestire una sola direzione. Se vuoi invertire il verso di rotazione, serve un H-bridge o una scheda motori, perché è lui a gestire correttamente il cambio di polarità.

Valuta l'articolo

Valutazione: 0.00 Numero di voti: 0

Tag:

pwm motore dc servo stepper ponte h

Condividi post

Ippolito Vitali

Ippolito Vitali

Mi chiamo Ippolito Vitali e ho accumulato 8 anni di esperienza nel campo della tecnologia, dei hobby e del tempo libero. La mia passione per questi argomenti è nata da un interesse personale che si è trasformato in una vera e propria missione: aiutare gli altri a esplorare e comprendere le meraviglie del mondo tecnologico. Scrivo di tutto, dalle ultime innovazioni alle tecniche per ottimizzare il tempo libero, cercando sempre di semplificare concetti complessi e rendere le informazioni accessibili. Nel mio lavoro, mi impegno a controllare le fonti e a confrontare le informazioni per garantire contenuti utili, accurati e aggiornati. Seguo le tendenze del settore con attenzione, organizzando le mie conoscenze in modo chiaro e comprensibile. Credo che la tecnologia e il tempo libero possano migliorare la qualità della vita, e mi piace condividere queste idee con i lettori, offrendo spunti pratici e riflessioni stimolanti.

Scrivi un commento