Pilotare un Micro Servo SG90 con Arduino

Pilotare un Micro Servo SG90 con Arduino

Il controllo di un Servomotore è alla base di molti progetti robotici implementabili con Arduino e Raspberry. In questo post vedremo come Pilotare un Micro Servo SG90 con Arduino Nano ruotando un potenziometro. Nei prossimi post vedremo come utilizzarlo per creare progetti molto più interessanti.


Pilotare un Micro Servo SG90 con Arduino

Materiale occorrente

Pilotare un Micro Servo SG90 con Arduino materiale occorrente

Ecco l’elenco dei materiali e componenti utilizzati per la realizzazione di questo progetto:

Micro Servo SG90

Il Micro Servo SG90 si presenta di dimensioni ridotte ed è abbastanza leggero. Le sue caratteristiche e il basso costo lo rendono ideale per molti progetti di robotica ed automazione, non solo con Arduino.

Pilotare un Micro Servo SG90 con Arduino dettaglio microservo

Queste sono le caratteristiche principali del Servo SG90:

  • Tensione operativa: 4.8V DC
  • Temperatura operativa: 0 ℃ ~ 55 ℃
  • Frequenza operativa: 1μs
  • Coppia 4.8V: 1.2 kg-cm
  • Velocità 4.8V: 0.12 sec/60°
  • Dimensioni: 30 x 12 x 22 mm
  • Peso: 13g

Per maggiori informazioni sul Micro Servo SG90 vi rimando al datasheet a questo link.

Potenziometro 10 Kohm

Il potenziometro non è altro che una resistenza variabile. Normalmente, come quella utilizzata in questo test, il Potenziometro ha 3 piedini.

Pilotare un Micro Servo SG90 con Arduino dettaglio potenziometro

Misurando la resistenza con il tester collegato sui piedini più esterni si ha la resistenza massima (10 Kohm in questo caso). Misurando la resistenza, sempre con il multimetro, tra uno dei piedini esterni e il piedino centrare, si ha un valore che varia in base alla posizione del cursore rispetto al piedino più esterno preso di riferimento.
Questo è lo schema elettrico che lo rappresenta:

Pilotare un Micro Servo SG90 con Arduino simbolo elettronico potenziometro

Per maggiori informazioni sul Potenziometro vi rimando a questo link

La libreria Servo

La complessità di pilotare un Servo consiste nel fatto che bisogna utilizzare un Duty-Cycle per impartire i comandi di rotazione. La board Arduino, in base al modello, dispone di diversi Pin digitali PWM in grado di generare un duty-cycle. Fortunatamente ci viene in aiuto la libreria Servo, già presente di default tra le librerie dell’IDE, che ci evita di addentrarci in calcoli per generare il Duty-Cycle.

Questi sono i Metodi messi a disposizione dalla libreria Servo:

  • attach(): imposta il PIN su cui è connesso il Servo
  • attached(): controlla se un Servo è collegato al PIN
  • detach(): elimina il collegamento del Servo dal PIN
  • read(): legge la posizione del Servo
  • write(): invia al Servo la posizione da raggiungere da 0° a 180°
  • writeMicroseconds(): imposta la velocità di rotazione del Servo

N.B.: nei Servo a rotazione continua la funzione write() imposta la velocità di rotazione: 0 = velocità massima in un senso, 90 = fermo, 180 = velocità massima nella direzione opposta

Per maggiori informazioni sulla libreria Servo vi rimando a questo link


Pilotare un Micro Servo SG90 con Arduino

Collegamenti

Per realizzare il nostro circuito colleghiamo il Micro Servo SG90 e il Potenziometro come indicato nella tabella seguente

COLLEGAMENTO PIEDINI
Micro Servo SG90 Potenziometro Arduino Nano Jumper Wire
     Rosso Piedino Destro (3) 3V3      Rosso
     Nero Piedino Sinistro (1) GND      Nero
     Arancione D7      Arancione
Piedino centrale (2) A0      Verde

Questo il circuito realizzato con Fritzing

Pilotare un Micro Servo SG90 con Arduino circuito fritzing

E questo il circuito reale

Pilotare un Micro Servo SG90 con Arduino circuito reale

Sketch Arduino

Questo è lo sketch che andremo a caricare sulla nostra board

Lo sketch è molto semplice.
Per prima cosa includiamo la libreria Servo per creare l’oggetto myServo e dichiariamo due variabili: potPin su cui verrà collegato il piedino centrale del potenziometro; potVal che conterrà il valore letto dal potenziometro

Nella funzione setup() viene collegato il Pin D7 di Arduino Nano al Jumper arancione del Micro Servo. Il valore inviato al servo, tramite il Pin D7, imposterà la posizione che dovrà assumere.

Nella funzione loop() viene letto il valore del potenziometro e inviato al Micro Servo per indicare la posizione da raggiungere.
Da notare la funzione map() utilizzata per mappare, in modo proporzionale, il valore letto dal potenziometro (che va da 0 a 1023) ai valori che vanno da 0 a 180 (angolazioni raggiungibili dal Micro Servo).
Il delay(100) prima della fine del loop è utilizzato per dare il tempo, al servo, di raggiungere la posizione ricevuta prima di riceverne una nuova.

Caricamento e test dello sketch

Una volta terminati i collegamenti del circuito e visto lo sketch non ci resta che testarlo.
Per prima cosa colleghiamo, tramite il cavo USB, la board Arduino Nano al nostro PC e avviamo l’ambiente di sviluppo Arduino IDE.
Da Arduino IDE creiamo un nuovo file cliccando su File -> Nuovo

Arduino IDE nuovo file

Impostiamo i parametri relativi alla nostra board dalla tab Strumenti

  • Scheda -> Arduino Nano
  • Processore -> ATmega328P
  • Porta -> COM3 (N.B. la porta potrebbe essere differente)

setup scheda su Arduino IDE

Copiamo lo sketch, che abbiamo visto prima, e incolliamolo nell’IDE. Una volta incollato carichiamolo sul micro controllore cliccando sul pulsante Carica (contrassegnato da una freccia rivolta verso destra). Se non ci vengono visualizzati messaggi di errore lo sketch è stato caricato correttamente

carica Sketch su board Arduino Nano

Ora, se proviamo a ruotare il Potenziometro vedremo ruotare il Micro Servo SG90

test rotazione micro servo con potenziometro

Bene, è tutto. A presto 😉

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *