Servomotori Arduino

I servomotori sono ottimi dispositivi che possono girare in una posizione specificata.

Di solito, hanno un braccio servo che può ruotare di 180 gradi. Usando Arduino, possiamo dire a un servo di andare in una posizione specifica e andrà lì. Così semplice!

I servomotori sono stati utilizzati per la prima volta nel mondo del telecomando (RC), di solito per controllare lo sterzo delle auto RC o i flap su un aereo RC. Con il tempo, hanno trovato il loro uso nella robotica, nell'automazione e, naturalmente, nel mondo Arduino.

Qui vedremo come collegare un servomotore e poi come ruotarlo in diverse posizioni.

Il primo motore che io abbia mai collegato ad un Arduino, sette anni fa, fu un servomotore. Momento nostalgico finito, di nuovo al lavoro!

Avremo bisogno delle seguenti cose:

  1. Una scheda Arduino collegata a un computer tramite USB
  2. Un servomotore
  3. Cavi jumper

Ci sono pochi grandi nomi nel mondo dei servomotori. Hitec e Futaba sono i principali produttori di servo RC. I posti migliori per acquistarli sono Servocity, Sparkfun e Hobbyking.

Questo istruttivo e molti altri possono essere trovati nel mio libro di cucina sullo sviluppo di Arduino disponibile qui. : D

Passaggio 1: come collegarli

Un servomotore ha tutto incorporato: un motore, un circuito di feedback e, soprattutto, un driver del motore. Ha solo bisogno di una linea di alimentazione, una terra e un pin di controllo.

Di seguito sono riportati i passaggi per collegare un servomotore ad Arduino:

  1. Il servomotore ha un connettore femmina a tre pin. Il più scuro o addirittura nero è di solito il terreno. Collegalo a Arduino GND.
  2. Collegare il cavo di alimentazione che in tutti gli standard dovrebbe essere rosso a 5 V su Arduino.
  3. Collegare la linea rimanente sul connettore del servo a un pin digitale su Arduino.

Controlla l'immagine per una vista del servo collegato ad Arduino.

Passaggio 2: codice

Il codice seguente trasformerà un servomotore a 0 gradi, attenderà 1 secondo, quindi ruoterà su 90, attenderà un altro secondo, ruoterà su 180, quindi tornerà indietro.

 // Include la libreria Servo 
#include // Dichiara il pin Servo int servoPin = 3; // Crea un oggetto servo Servo Servo1; void setup () {// Dobbiamo collegare il servo al numero pin usato Servo1.attach (servoPin); } void loop () {// Fa andare il servo a 0 gradi Servo1.write (0); ritardo (1000); // Porta il servo a 90 gradi Servo1.write (90); ritardo (1000); // Porta il servo a 180 ° Servo1.write (180); ritardo (1000); }
Se il servomotore è collegato su un altro pin digitale, è sufficiente modificare il valore di servoPin sul valore del pin digitale utilizzato.

allegati

  • Scarica Servo_motor.ino

Passaggio 3: come funziona

I servi sono dispositivi intelligenti. Usando solo un pin di input, ricevono la posizione da Arduino e vanno lì. Internamente, hanno un driver del motore e un circuito di feedback che assicura che il braccio del servo raggiunga la posizione desiderata. Ma che tipo di segnale ricevono sul pin di ingresso?

È un'onda quadra simile a PWM. Ogni ciclo nel segnale dura 20 millisecondi e per la maggior parte del tempo il valore è BASSO. All'inizio di ogni ciclo, il segnale è ALTO per un tempo compreso tra 1 e 2 millisecondi. A 1 millisecondo rappresenta 0 gradi e a 2 millisecondi rappresenta 180 gradi. Nel mezzo, rappresenta il valore compreso tra 0 e 180. Questo è un metodo molto valido e affidabile. La grafica rende un po 'più facile da capire.

Ricorda che l'uso della libreria Servo disabilita automaticamente la funzionalità PWM sui pin PWM 9 e 10 su Arduino UNO e schede simili.

Analisi del codice

Il codice dichiara semplicemente l'oggetto servo e quindi inizializza il servo utilizzando la funzione servo.attach () . Non dovremmo dimenticare di includere la servo libreria. Nel loop (), impostiamo il servo su 0 gradi, aspettiamo, quindi impostiamo su 90 e successivamente su 180 gradi.

Step 4: Altre cose sui servi

Il controllo dei servi è semplice e qui ci sono alcuni trucchi che possiamo usare:

Controllo del tempo esatto dell'impulso

Arduino ha una funzione integrata servo.write (gradi) che semplifica il controllo dei servi. Tuttavia, non tutti i servi rispettano gli stessi tempi per tutte le posizioni. Di solito, 1 millisecondo significa 0 gradi, 1, 5 millisecondi significano 90 gradi e, naturalmente, 2 millisecondi significano 180 gradi. Alcuni servi hanno gamme più piccole o più grandi.

Per un migliore controllo, possiamo usare la funzione servo.writeMicroseconds (us), che accetta il numero esatto di microsecondi come parametro. Ricorda, 1 millisecondo equivale a 1.000 microsecondi.

Più servi

Per utilizzare più di un servo, dobbiamo dichiarare più oggetti servo, collegare pin diversi a ciascuno e indirizzare ogni singolo servo. Innanzitutto, dobbiamo dichiarare gli oggetti servo, quanti ne abbiamo bisogno:

 // Crea oggetti servo Servo Servo1, Servo2, Servo3; 

Quindi dobbiamo collegare ogni oggetto a un servomotore. Ricorda, ogni servomotore utilizza un singolo pin:

 Servo1.attach (servoPin1); Servo2.attach (servoPin2); Servo3.attach (servoPin3); 

Alla fine, dobbiamo solo indirizzare ogni singolo oggetto servo:

 Servo1.write (0); // Imposta Servo da 1 a 0 gradi Servo2.write (90); // Imposta Servo da 2 a 90 gradi 

Per quanto riguarda la connessione, i motivi dei servi vanno a GND sull'Arduino, l'alimentazione del servo a 5 V o VIN (a seconda dell'ingresso di alimentazione) e, alla fine, ogni linea di segnale deve essere collegata a un diverso pin digitale. Contrariamente alla credenza popolare, i servi non devono essere controllati dai pin PWM: qualsiasi pin digitale funzionerà.

Servi a rotazione continua

Esiste una razza speciale di servi etichettati come servi a rotazione continua . Mentre un servo normale va in una posizione specifica a seconda del segnale di ingresso, un servo a rotazione continua ruota in senso orario o antiorario a una velocità proporzionale al segnale. Ad esempio, la funzione Servo1.write (0) farà girare il servomotore in senso antiorario alla massima velocità. La funzione Servo1.write (90) arresterà il motore e Servo1.write (180) farà girare il motore in senso orario alla massima velocità.

Ci sono molteplici usi per tali servi; tuttavia sono molto lenti. Se stai costruendo un forno a microonde e hai bisogno di un motore per girare il cibo, questa è la tua scelta. Ma fai attenzione, le microonde sono pericolose!

Passaggio 5: Scopri di più

Ulteriori argomenti riguardanti motori come driver brushless, transistor o controllo della velocità del motore sono disponibili nel mio Cookbook di sviluppo Arduino disponibile qui. : D

Articoli Correlati