Impara a usare i motori elettrici
Tutorial per programmare Arduino + schema elettrico con breadboard
“Programmare Arduino” è dedicato al Sig. Di Santi che a 60 anni ha ancora voglia di mettersi in gioco. Grazie alla sua richiesta ho cercato di rendermi utile con questo tutorial pratico che ti spiega come utilizzare i motori in continua con Arduino.
Lo scopo del tutorial è variare la velocità di un motore in continua, alimentato a 12 Volt (ma gli stessi concetti sono validi per tensioni di 5, 6, 9, 12 e 15 Volt cc) utilizzando la scheda a microprocessore Arduino UNO.
Alla fine del tutorial avrai imparato a:
- collegare la scheda Arduino ad un motore elettrico
- regolare la velocità del motore
- scrivere un programma per Arduino che esegua delle temporizzazioni
- programmare Arduino
Programmare Arduino per usare i motori elettrici: lo schema elettrico

La scheda Arduino può alimentare un piccolo motore elettrico, alimentato a 5 Volt cc (tensione e corrente continua), usando solamente i pin di cui è dotata.
Ma quanta corrente massima può fornire un pin della scheda Arduino?
Secondo il datasheet la corrente massima è di circa 40 milliAmpère (equivalenti a 0,04 Ampère). Dato che la tensione di uscita del pin di una scheda Arduino UNO è di 5 Volt, la potenza massima del motore non può essere superiore a 0,2 Watt.
Se alimentate direttamente un motore in continua con un pin di Arduino, e il motore non gira, sapete il perchè? La potenza richiesta dal motore è maggiore di quella che può fornire la sola scheda Arduino.
Per risolvere questo problema dobbiamo utilizzare un amplificatore di corrente (o anche di potenza elettrica). Non entro nel dettaglio, ma prendi per buono che il miglior dispositivo elettronico che risolve questo problema è il transistor Mosfet. Il mosfet è anche, nella maggior parte delle applicazioni, utilizzabile direttamente con un pin di Arduino.
Dobbiamo utilizzare un Mosfet di tipo N, qui ti elenco alcune sigle di Mosfet che costano poco e possono alimentare motori con una discreta potenza elettrica:
Per regolare la velocità di un motore in corrente continua, oltre ad un mosfet, ci serve un diodo di flyback. Questo diodo impedisce di rompere il mosfet per sovratensione indotta dal repentino spegnimento del circuito di commutazione, quando utilizzato con un segnale PWM.
Quando colleghi i condensatori elettrolitici ricordati di rispettarne le polarità negativa e positiva.
Schema pratico di montaggio con breadboard

Programmare Arduino con motori in continua: i comandi
Il programma completo di spiegazioni per usare il PWM
Il programma varia la velocità del motore cambiando il duty cycle del PWM che viene generato con il comando “analogWrite”.
Il valore del numero del PWM può variare tra 0 e 255, che corrispondono ad una velocità proporzionale tra 0 e 100% (velocità massima).
Cambiando il numero all’interno del comando “delay” si aumenta o diminuisce il tempo di motore spento, ed il tempo di motore acceso.
Il circuito elettrico è molto semplice, ma ha il limite di poter far girare il motore in una sola direzione. Questo programma NON può cambiare il senso di marcia del motore elettrico.
Per poter cambiare il senso di marcia bisogna necessariamente utilizzare una scheda di controllo motore, una shield, dotata di un sistema a ponte H. Cicca sul link per un tutorial che ti spiega come funziona una shield motor driver.
Copia e incolla il listato nella IDE di Arduino e poi puoi programmare Arduino UNO.
/* Genera un PWM che cambia la velocità di un motore elettrico il Gate del mosfet N è collegato al pin 9 di Arduino PROGRAMMA: Il motore rimane spento per 1 secondo. Il motore gira a metà velocità per 1 secondo. www.sciamannalucio.it */ // dichiara le variabili int OUT = 9; // collega il gate del mosfet al pin 9 // programma le impostazioni alla partenza del programma: void setup() { pinMode(OUT, OUTPUT); // imposta il pin 9 come uscita } // il ciclo loop legge all'infinito le righe di programma: void loop() { // tiene spento il motore per 1 secondo analogWrite(OUT, 0); // velocità motore 0% delay(1000); // aspetta 1 secondo // accende il motore per 1 secondo analogWrite(OUT, 127); // velocità motore 50% delay(1000); // aspetta 1 secondo }
LINK utili per programmare Arduino ed i motori elettrici
Pubblicità