Come controllare il servomotore con Arduino

Come Controllare Il Servomotore Con Arduino



Servomotori è un tipo di dispositivo elettrico che può cambiare o ruotare la posizione di un oggetto con grande precisione. All'inizio sono stati usati per controllare le ali degli aerei RC, pochi istanti dopo si sono fatti strada verso la robotica, i robot umanoidi e molti progetti di automazione. A differenza dei motori passo-passo, il loro movimento è limitato tra 0° e 180°.

Di solito, i servomotori hanno bracci che possono essere controllati tramite Arduino. I servomotori sono costituiti da un sistema di controllo che fornisce feedback circa la posizione attuale dell'albero motore questo feedback permette di muoversi con grande precisione.

Piedinatura del servomotore

Tipicamente, la maggior parte dei servomotori ha tre pin:







  • Pin Vcc (normalmente rosso 5V)
  • Pin GND (normalmente nero 0V)
  • Pin del segnale di ingresso (Ricevi il segnale PWM da Arduino)



Funzionamento del servomotore

Possiamo controllare il servomotore collegando il pin Vcc a 5V e il pin GND a 0V. Sul terminale di colore giallo, forniamo a PWM segnale che controlla l'angolo di rotazione del servomotore. La larghezza del segnale PWM ci fornisce l'angolo a cui il motore ruoterà il braccio.



Se esaminiamo la scheda tecnica dei servomotori, otteniamo i seguenti parametri:





  • Periodo di tempo del segnale PWM
  • Larghezza minima per PWM
  • Larghezza massima per PWM

Tutti questi parametri sono predefiniti nella libreria Arduino Servo.

Servomotori con Arduino

I servomotori sono super facili da controllare con Arduino, grazie al Libreria dei servi che ci aiuta a personalizzare il nostro codice in base alle necessità e ci consente di ruotare il servobraccio all'angolazione desiderata.



Tutti e tre i parametri sopra menzionati sono fissi nella libreria Servo. Utilizzando questi parametri, possiamo controllare l'angolo del servomotore nel modo seguente:

  • Se la larghezza del segnale PWM = WIDTH_MAX, il servo ruoterà a 180°
  • Se la larghezza del segnale PWM = WIDTH_MIIN, il servo ruoterà a 0o
  • Se la larghezza del segnale PWM si trova nel mezzo LARGHEZZA_MAX e LARGHEZZA_MIN , il servomotore ruoterà tra 0o e 180o

Possiamo generare un segnale PWM desiderato su alcuni pin di Arduino. Il segnale PWM verrà fornito al pin del segnale di ingresso del servomotore. Collegamento dei restanti due pin del servo a 5v e GND di Arduino.

Come controllare il servomotore usando Arduino

Qui spiegherò come possiamo collegare e programmare il nostro servomotore usando Arduino. Tutto quello che serve è:

  • Arduino UNO
  • Cavo USB B
  • Servomotore
  • Cavi di collegamento

Come programmare servo con Arduino

Di seguito sono riportati alcuni semplici passaggi:

Passo 1: Include una libreria servo predefinita:

# includere < Servo.h >

Passo 2: Crea oggetto servo:

Servo servo;

Suggerimento: nel caso in cui controlli più di un servomotore, devi creare più oggetti servo:

Servo servo1;
Servo servo2;

Passaggio 3: Imposta il pin di controllo (9) su Arduino Uno che invia il segnale PWM alla porta del segnale di ingresso del servo:

myservo.attach ( 9 ) ;

Passaggio 4: Ruotare l'angolo del servomotore al valore desiderato, ad esempio 90o:

mioservo.scrivi ( pos ) ;

Codice Arduino

Aprire il programma di esempio del servomotore da File>Esempio>Servo>Sweep , si aprirà una nuova finestra che ci mostra il nostro servo sketch:

#include

Servo servo; // viene creato l'oggetto servo per controllo servomotore
int pos = 0 ; // per memorizzare la posizione del servo viene creata una nuova variabile
configurazione vuota ( ) {
myservo.attach ( 9 ) ; // questo sarà impostare Pin Arduino 9 per Uscita PWM
}
ciclo vuoto ( ) {
per ( pos = 0 ; pos = 0 ; pos -= 1 ) { // va da 180 a 0 gradi
mioservo.scrivi ( pos ) ; // dire al servo di andare in posizione 'pos'
ritardo ( 5 ) ; // aspetta per 5 ms in modo che il servo possa raggiungere la posizione
}
}

Una volta che il programma è stato compilato e caricato, il servomotore inizierà a ruotare lentamente dalla posizione iniziale da 0 gradi a 180 gradi, un grado alla volta proprio come i passi. Quando il motore ha completato la rotazione di 180 gradi, inizierà la sua rotazione nella direzione opposta rispetto al punto di partenza, ovvero 0 gradi.

Schematico

Come controllare il servomotore usando il potenziometro

Possiamo anche controllare manualmente la posizione del servomotore. Per fare questo abbiamo bisogno di un Potenziometro . Il potenziometro ha tre pin. Collega i due pin esterni a 5V Vcc e GND di Arduino e quello centrale al pin A0 sulla scheda Arduino.

Come programmare servo con potenziometro

La maggior parte dello schizzo per il potenziometro è la stessa dell'esempio precedente. L'unica differenza è una nuova variabile val e sottopunta è definito prima della sezione di codice di installazione e ciclo.

int potpin = A0;
int val;

Nella sezione del loop, il pin analogico A0 viene utilizzato per leggere i valori per il potenziometro con funzione analogRead() . Le schede Arduino contengono ADC (Analog to Digital Converter) a 10 bit che ci danno valori compresi tra 0 e 1023 a seconda della posizione del potenziometro:

val = analogRead ( sottopunta ) ;

Infine, abbiamo utilizzato carta geografica() funzione per rimappare i numeri da 0 a 1023 in base all'angolo del Servo come sappiamo che i servomotori possono ruotare solo tra 00 e 1800.

val = mappa ( val, 0 , 1023 , 0 , 180 ) ;

Codice Arduino

Schizzo della manopola aperta disponibile nell'IDE di Arduino, vai a File>Esempi>Servo>Knob . Si aprirà una nuova finestra che ci mostra il nostro schizzo della manopola per servo:

#include
Servo servo; // Creazione di un oggetto servo nome myservo
int potpin = A0; // definizione del pin analogico per potenziometro
int val; // variabile quale volere leggere valori pin analogici per potenziometro

configurazione vuota ( ) {
myservo.attach ( 9 ) ; // perno definito 9 per Segnale di ingresso PWM del servo su Arduino
}
ciclo vuoto ( ) {
val = analogRead ( sottopunta ) ; // legge il valore dal potenziometro ( valore tra 0 e 1023 )
val = mappa ( val, 0 , 1023 , 0 , 180 ) ; // scalare il valore da usare con il servo ( valore tra 0 e 180 )
mioservo.scrivi ( val ) ; // imposta la posizione del servo con valore scalato
ritardo ( quindici ) ; // aspetta per il servo per arrivare in posizione
}

Il codice sopra ci aiuterà a controllare l'albero del servomotore usando il potenziometro, l'albero ruoterà tra 0 e 180 gradi. Possiamo anche mantenere la velocità insieme alla direzione del servo che lo utilizza.

Schema elettrico

Quanti servomotori posso collegare con Arduino?

Il numero massimo di servomotori che Arduino UNO può gestire è fino a 12 con la libreria Arduino per servo e un massimo di 48 servi può essere collegato a schede come Mega.

Mancia: Possiamo far funzionare direttamente il servo usando la corrente di Arduino, ma ricorda se i motori dei servi assorbono più di 500 mA quindi la tua scheda Arduino può ripristinarsi automaticamente e perdere energia. Si consiglia di utilizzare sempre un alimentatore dedicato per i servomotori.

Conclusione

In questo tutorial, abbiamo trattato il meccanismo di controllo dei servomotori con Arduino. Abbiamo coperto le basi del controllo della posizione e della velocità del servo usando il potenziometro. Ora hai un'idea sui servo e le possibilità per la tua robotica, i progetti RC e l'automazione che utilizzano i servo sono infinite.