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.
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.
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.
In figura 4 può essere osservato, in una GIF animata, il lavoro che compie il servo grazie al firmware appena preparato.
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.
La figura 6, invece, riporta lo sketch completo. Il principiante, sulla base di questo esempio, può realizzare dei progetti ancora più complessi.
Per chi inizia ora e voglia dotarsi di tutto l’occorrente, Arduino Uno si trova facilmente a un prezzo abbordabile.