Esistono numerosi tipi di attuatori, ma tra questi i motori rappresentano i meccanismi necessari per ottenere il movimento. Esistono molti tipi di motori, tra quelli elettrici, suddivisi tra motori a corrente continua e corrente alternata. I principali motori elettrici a corrente continua sono:
  • motori DC (Direct Current motors);
  • servomotori (servo motor);
  • motori passo-passo (stepper motor).

I primi (DC Motors) possono soltanto procedere in una direzione oppure nella direzione opposta. I secondi (servo motor) sono molto precisi ma assai poco potenti, i terzi invece (stepper motor) sono più potenti dei primi oltre a essere anch’essi molto precisi nel movimento. Sia i motorini servo che passo-passo, viste le esigue potenze realizzabili in pratica, vengono utilizzati per movimenti di precisione all’interno di stampanti o bracci robotizzati per lo spostamento di piccoli oggetti.

Arduino e i motori in corrente continua
I motori in corrente continua (DC motors) si trovano sulle macchine radiocomandate, nei vecchi videoregistratori, nei lettori DVD, nei Floppy Disk ecc. Essi invertono il senso di marcia a seconda della polarità dell’alimentazione, come possiamo notare dalle figure seguenti.
 
Per comandarne l’arresto possiamo utilizzare due interruttori come nella seguente figura:
 
 
 
 
 
Abbiamo che se l’interruttore A è 1 allora il motore gira in senso antiorario, mentre se A è 0 è spento. La stessa cosa per l’interruttore B, se è 1 il motore gira in senso orario mentre se B è 0 il motore è spento. Se combiniamo i due circuiti in uno otteniamo un circuito in grado di effettuare quattro operazioni sullo stesso motore:
  • farlo girare in senso orario;
  • farlo girare in senso antiorario;
  • accenderlo;
  • spegnerlo.

Quello che si ottiene è il circuito di figura, con quattro interruttori disposti a formare una lettera H: il nome del circuito con questa configurazione viene infatti detto a ponte H.

Vediamo i possibili comportamenti del motore in ragione dei quattro valori logici applicati agli ingressi degli interruttori A, B, C e D.
 
Interruttori    Stato del motore
A B C D
1 0 0 1 Senso orario
0 1 1 0 Senso antiorario
1 1 0 0 Fermo
0 0 1 1 Fermo
 
Dalla tabella si deduce che quando si attivano coppie di ingressi incrociate, come ad esempio A e D, si realizza una situazione di movimento: con A e D si ottiene il movimento del motore in senso orario e con B e C in senso antiorario. Quando invece si attivano le coppie di ingressi allineati, quindi ad esempio A con B oppure C con D, si ottiene il fermo del motore in quanto rimane scollegato dall’alimentazione o dalla massa. Per gestire i motori in corrente continua con Arduino possiamo utilizzare il circuito a ponte H fornito con il kit di sviluppo chiamato L293NE. Viene anche chiamato driver ed è formato da 2 ponti H, quindi può comandare due diversi motori in corrente continua.
 
Esistono anche delle configurazioni impossibili, con gli interruttori A e C contemporaneamente accesi, oppure con B e D contemporaneamente accesi: in entrambi i casi si otterrebbe un cortocircuito. Per evitare questo modifichiamo lo schema nel modo seguente, con l’aggiunta di una porta NOT, in grado di garantire che gli ingressi degli interruttori posti sullo stesso lato abbiano sempre e solo valori opposti. In tal modo quando A vale 1 sarà 1 anche l’ingresso dell’interruttore in alto ma non quello dell’interruttore posto in basso, che sarà invece pari alla negazione di tale valore, cioè 0.
 
 
Nell’utilizzo dei motori con la scheda Arduino è necessario spesso utilizzare due componenti elettronici nuovi:
  • diodo
  • transistor MOSFET

Un diodo è un componente che consente alla corrente di fluire solo in un verso, cioè dall’anodo al catodo e non viceversa. Come possiamo notare dal-la figura qui accanto, il diodo possiede una striscia grigia su una estremità, questo indica il polo negati-vo, cioè il catodo, quindi l’unico flusso di corrente ammesso è da sinistra a destra e non viceversa.

 

I transistor MOSFET (Metal Oxide Semiconductor Field Effect Transistor) sono componenti che consentono il controllo di al-ti carichi di corrente e di tensione mediante il piedino di uscita della scheda Arduino. Possiedono tre piedini chiamati rispettivamente Gate, Drain e Source. Si basano su di un principio di funzionamento molto semplice, possiamo pensare a un transistor come a un interruttore, fornendo tensione al piedino Gate, viene chiuso il circuito tra il i piedini Drain e Source, viceversa togliendo tensione al piedino Gate il circuito tra Drain e Source si apre.

ESEMPI

Motore in corrente continua senza ponte H

In questo esempio vogliamo pilotare un motorino in corrente continua senza ponte H. Utilizziamo un micro switch per pilotare un motore DC: tenendo premuto il pulsante il motore deve essere azionato e lasciando il pulsante lo stesso deve fermarsi. Per fare questo abbiamo collocato un pulsante (micro switch) collegato all’alimentazione (+5 V) e al pin2 della scheda Arduino. Inoltre è stato anche collegato a massa (GND) tramite una resistenza da 10 kΩ per evitare il rimbalzo, in tal modo dal pin2 dell’Arduino leggeremo un valore HIGH ogni volta che il pulsante viene premuto. In questo circuito abbiamo anche utilizzato il transistor MOSFET IRF520, in dotazione nello starter kit Arduino UNO. Abbiamo collegato il piedino Gate direttamente al pin9 della scheda Arduino. Quando lo sketch invia un valore HIGH sul piedino 9 otterremo l’apertura del circuito Drain-Source del transistor e di conseguenza l’attivazione del motore. Viceversa un valore LOW sul pin9 manterrà il motore fermo. I due capi del motore (+ e –) sono stati collegati all’alimentazione (+5 V) e al piedino Source del transistor. Inoltre il pin (–) del motorino è stato anche collegato all’anodo del diodo di protezione del circuito. Abbiamo aggiunto un diodo polarizzato apparentemente al contrario, collegando cioè il catodo con il polo positivo: questo serve per prevenire eventuali controtensioni (generate cioè nella direzione opposta alla tensione fornita) generate dal motore che possano rientrare nel circuito.
La realizzazione del circuito con la scheda Arduino e la breadboard è la seguente: Il codice dello sketch è assai semplice, innanzi tutto vengono programmati i piedini digitali 2 e 9 dell’Arduino, il primo in ingresso e il secondo in uscita. Quindi nel ciclo loop() dopo aver letto lo stato del piedino 2 (quello collegato al pulsante), viene controllato il suo valore: se è HIGH allora significa che il pulsante è premuto e pertanto deve essere acceso il motore, se invece è LOW significa che il pulsante non è premuto e quindi il motore deve essere spento. L’accensione e lo spegnimento del motore avviene scrivendo HIGH oppure LOW al pin9.

int stato = 0;
void setup()
{
pinMode(9, OUTPUT);
pinMode(2, INPUT);
}
void loop()
{
stato = digitalRead(2);
if (stato == HIGH)
digitalWrite(9, HIGH);
else
digitalWrite(9, LOW);
} 

 Regolazione della luminosità di un led e della velocità di un motore con un  potenziometro.

 Motore in corrente continua con ponte H