Servo Motori e Arduino

Servo Motori e Arduino

Avrai sicuramente sentito parlare di braccia robotiche, robottini che camminano, sistemi di apertura porte o rotazione. Ecco per poter sviluppare alcuni di questi sistemi può essere fondamentale l’utilizzo di servomotori.

Ne esistono di diversi tipi e dimensioni. Grazie ad una serie di ingranaggi e ad una elettronica interna riescono a pilotare il perno in modo da garantirne una rotazione di precisione generalmente tra 0° e 180°.



In questo articolo andremo a descrivere il funzionamento di uno dei servomotori più comuni abbinato ad Arduino.

Il Micro Servo 9g SG90 è un servomotore dalle contenute dimensioni, generalmente con un case in plastica trasparente blu utile per i progetti casalinghi come i nostri. Io ad esempio lo ho usato sulla macchinina telecomandata per ruotare il sensore ad ultrasuoni a piacimento, oppure per ruotare la telecamera collegata al Raspberry Pi.

Viene venduto generalmente con le due viti di fissaggio, alcune alette da montare sopra l’albero a seconda dell’utilizzo e una vite per fissare l’aletta scelta all’albero.



Come cavetteria è fornito di 3 cavi per gestire il meccanismo. Il cavo marrone è per il polo negativo (GND), quello rosso è per il positivo (VCC 5V) e quello arancio è per il segnale(PWM) che viene convertito in rotazione.

Ma passiamo ad Arduino e vediamo come pilotare questo servomotore.

Apriamo la IDE e creiamo un nuovo sketch che chiameremo Servo_test.ino (lo trovate su github).

Come prima cosa andremo ad includere la libreria Servo.h che ci consentirà di utilizzare il servomotore in maniera semplice.

#include <Servo.h>

Diamo quindi un nome al nostro Pin che piloterà il servomotore, nel mio caso il Pin Digitale 9.

#define PIN_SERVO 9 // Arduino PIN9

Dichiariamo una variabile di tipo Servo che inizializzerà il servomotore.

Servo servo; 

Nel Setup inizializziamo il nostro servo con la attach, passando come input il nostro pin. Questo servirà a creare la connessione tra il pin fisico di Arduino ed il nostro oggetto di tipo Servo.

void setup() {
  // attaches the servo on pin 9 to the servo object
  servo.attach(PIN_SERVO);  
}

Ora possiamo definire il nostro loop. In questo caso andremo semplicemente a modificare la posizione del nostro servomotore a intervalli regolari di 1 sec.

void loop() {
  // move to pos 0
  servo.write(0); 
  // wait 1 sec
  delay(1000); 
  // move to pos 45
  servo.write(45); 
  // wait 1 sec
  delay(1000);
  // move to pos 90
  servo.write(90); 
  // wait 1 sec
  delay(1000);
  // move to pos 180
  servo.write(180); 
  // wait 1 sec
  delay(1000);                         
}

Questo sketch è quanto basta per capire il funzionamento base del servomotore.

Ora che abbiamo capito come è semplice il funzionamento di questo utilissimo componente, possiamo sbizzarrirci nell’utilizzarlo nei nostri progetti.

 

Nessun commento

Aggiungi il tuo commento