Corso base di Arduino: i servomotori

Arduino dispone di una libreria per la gestione dei servomotori. Essi possono essere controllati con estrema precisione e posizionati con diverse inclinazioni.

Avatar di Elettronica Open Source

a cura di Elettronica Open Source

banner prova1

Chi si occupa di robotica, ormai, non può fare a meno di utilizzare i servomotori. In teoria sarebbe possibile gestirli anche con dei circuiti composti da componenti discreti, ma per la difficoltà e l'enorme tempo speso per la logica è molto più conveniente adottare le soluzioni con MCU.

Il servomotore

Un servomotore è controllato tramite l'invio di impulsi di larghezza temporale variabile. Tipicamente il periodo contenente un impulso ha una durata di 20 ms. Se l'impulso ha una durata di 1 ms l'albero si muove in una direzione, se ha una durata di 2 ms si muove nella direzione opposta. Tale modulazione è definita PPM (Pulse Position Modulation). Esso ha tre fili elettrici: il filo rosso che costituisce l'alimentazione del motore (5V), quello nero va collegato alla massa comune del circuito (GND) e (solitamente) quello giallo, di controllo, su cui transitano i segnali per il pilotaggio e va collegato ad una porta digitale di Arduino. Se il servo ha una potenza considerevole è consigliabile collegarlo ad una fonte maggiore di energia, in termini di corrente. In figura 1 è possibile osservare un generico servo.

figura 1 servomotore
Figura 1: servomotore

La libreria

La gestione di un servo motore potrebbe risultare un tantino difficoltosa e critica, in termini di scrittura di software. Per ovviare al problema esiste una libreria già pronta da utilizzare e da implementare con Arduino. Essa si avvale della classe "Servo" e dispone di alcuni metodi, dei quali utilizzeremo solo:

  • attach(): specifica il pin dei dati del servo;
  • write(): imposta l'angolo di posizionamento del servo.

Una luce che scandaglia da destra a sinistra

Per servo non particolarmente potenti lo schema di cablaggio da adottare può essere quello visibile in figura 2.

figura 2 cablaggio prima esperienza
Figura 2: cablaggio per la prima esperienza

La prima esperienza riguarda un servo, sormontato ipoteticamente da un faro, da un raggio laser o da una luce direzionale, che "guarda" da sinistra a destra a passi di 30 gradi. Ad ogni passo compiuto il motore si ferma per 1 secondo (tempo che, ovviamente, può essere modificato a piacere). Lo sketch, illustrato in figura 3, è estremamente semplice e si commenta da solo.

figura 3 sketch luce scandaglia
Figura 3: sketch della luce che scandaglia da destra a sinistra

In figura 4 può essere osservato, in una GIF animata, il lavoro che compie il servo grazie al firmware appena preparato.

Figura 4 animazione scandaglio luce

Servo motore comandato da due pulsanti

La seconda esperienza è molto utile. Si tratta di un dispositivo formato da due pulsanti n/a e da un servomotore. Se viene premuto il primo pulsante, il servo ruoterà verso destra. Se viene premuto il secondo pulsante, ovviamente, la rotazione avverrà verso sinistra. Il controllo dei pulsanti attiva l'incremento e il decremento dell'angolo, contenuto in una variabile di tipo intero. Con la strutturazione adottata è impossibile che tale valore vada in overflow o belowflow. Il cablaggio dei collegamenti e lo schema elettrico sono mostrati in figura 5.

figura 5 cablaggio e schema secondo esperimento
figura 5 cablaggio e schema secondo esperimento

La figura 6, invece, riporta lo sketch completo. Il principiante, sulla base di questo esempio, può realizzare dei progetti ancora più complessi.

figura 6 sketch secondo esempio
figura 6 sketch secondo esempio

Tom's Consiglia

Per chi inizia ora e voglia dotarsi di tutto l'occorrente, Arduino Uno si trova facilmente a un prezzo abbordabile.