• 20 Aprile 2024 0:25

Corriere NET

Succede nel Mondo, accade qui!

Corso base di Arduino: i servomotori

Ott 30, 2017

banner prova1banner 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 servomotorefigura 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 esperienzafigura 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 scandagliafigura 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 esperimentofigura 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 esempiofigura 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.

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. Guarda la Policy

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close