Come controllare il servomotore con Arduino

Come controllare il servomotore con Arduino
Servo Motors è un tipo di dispositivo elettrico che può cambiare o ruotare la posizione di un oggetto con grande precisione. All'inizio furono usate per controllare le ali del piano RC pochi istanti si diressero verso robotica, robot umanoidi e molti progetti di automazione. A differenza dei motori Stepper, il loro movimento è limitato tra 0o a 180o.

Di solito, i servi motori hanno braccia che possono essere controllate usando Arduino. I servi motori sono costituiti da un sistema di controllo che fornisce feedback Informazioni sulla posizione attuale dell'albero del motore questo feedback consente di muoversi a grande precisione.

Pinout del servo motore

In genere, la maggior parte dei servi motori ha tre pin:

  • PIN VCC (normalmente rosso 5V)
  • Pin GND (normalmente nero 0V)
  • Pin del segnale di ingresso (ricevi il segnale PWM da Arduino)

Funzionante del servo motore

Possiamo controllare il motore servo collegando il pin VCC a 5 V e PIN GND a 0V. Sul terminale di colore giallo, forniamo un PWM segnale che controlla l'angolo rotante del servo motore. La larghezza del segnale PWM ci dà l'angolo a cui il motore ruoterà il braccio.

Se esaminiamo la scheda tecnica dei servi motori, 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 dei servi Arduino.

Servo Motors con Arduino

I servi motori sono super facili da controllare con Arduino, grazie al Servo Library Il che ci aiuta a personalizzare il nostro codice in base alle necessità e ci consente di ruotare il braccio servo nell'angolazione desiderata.

Tutti e tre i parametri sopra menzionati sono fissati nella libreria dei servi. Usando questi parametri, possiamo controllare l'angolo del servomotore nel modo seguente:

  • Se il segnale PWM larghezza = larghezza_max, il servo ruoterà a 180o
  • Se il segnale PWM larghezza = larghezza_miin, servo ruoterà su 0o
  • Se la larghezza del segnale PWM si trova tra Larghezza_max e larghezza_min, Il servo motore ruoterà tra 0o e 180o

Possiamo generare un segnale PWM desiderato su alcuni pin Arduino. Il segnale PWM verrà somministrato sul pin del segnale di ingresso del servo motore. Collegamento dei restanti due spille di servo a 5V e GND di Arduino.

Come controllare il servomo Motor usando Arduino

Qui spiegherò come possiamo connetterci e programmare il nostro servo motore usando Arduino. Tutto ciò che serve è:

  • Arduino Uno
  • Cavo USB B
  • Servo motore
  • Fili jumper

Come programmare il servo con Arduino

Di seguito sono riportati alcuni semplici passaggi:

Passo 1: Includi la libreria dei servi predefinita:

#includere

Passo 2: Crea oggetto servo:

SERVO MYSERVO;

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

Servo myservo1;
Servo myservo2;

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.allegare (9);

Passaggio 4: Ruotare l'angolo del motore servo sul valore desiderato per esempio 90o:

Myservo.scrivere (pos);

Codice Arduino

Apri il programma di esempio del servomo motor da File> Esempio> SERVO> SPASCE, Si aprirà una nuova finestra che ci mostra il nostro servo schizzo:

#includere
SERVO MYSERVO; // L'oggetto servo viene creato per il controllo del servo motore
int pos = 0; // per archiviare la posizione servo viene creata una nuova variabile
void setup ()
Myservo.allegare (9); // Questo imposterà Arduino Pin 9 per l'output PWM

void loop ()
per (pos = 0; pos = 0; pos -= 1) // va da 180 a 0 gradi
Myservo.scrivere (pos); // Dì al servo di andare in posizione "pos"
ritardo (5); // attende 5 ms in modo che il servo possa raggiungere la posizione

Una volta compilato e caricato il programma, il motore servo inizierà a ruotare lentamente dalla posizione iniziale da 0 gradi a 180 gradi, un grado alla volta proprio come i passaggi. Quando il motore ha completato la rotazione di 180 gradi, inizierà la sua rotazione nella direzione opposta verso il suo punto di partenza I.e., 0 gradi.

Schematico

Come controllare il servomotore con potenziometro

Possiamo anche controllare la posizione del servo motore a mano. Per fare questo abbiamo bisogno di un Potenziometro. Il potenziometro ha tre pin. Collegare i due pin esterni a 5v VCC e GND di Arduino e Pin uno a A0 su Arduino Board.

Come programmare servo con potenziometro

La maggior parte dello schizzo per potenziometro è uguale all'esempio precedente. L'unica differenza è una nuova variabile Val E potpin è definito prima della sezione Setup e Loop del codice.

int potpin = a0;
int val;

Nella sezione Loop il pin analogico A0 viene utilizzato per leggere i valori per potenziometro con funzione analogread (). Le schede Arduino contengono ADC a 10 bit (convertitore da analogico a digitale) che ci dà valori tra 0 e 1023 a seconda di quale posizione è il potenziometro:

val = analogread (potpin);

Infine, abbiamo usato carta geografica() Funzione di re-mappa i numeri da 0 a 1023 in base all'angolo di servo come sappiamo che i servi motori possono ruotare solo tra 00 e 1800.

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

Codice Arduino

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

#includere
SERVO MYSERVO; // Creazione di un servO Oggetto Nome myservo
int potpin = a0; // Definizione del perno analogico per potenziometro
int val; // variabile che leggerà i valori dei pin analogici per potenziometro
void setup ()
Myservo.allegare (9); // Pin 9 definito per il segnale di ingresso PWM del servo su Arduino

void loop ()
val = analogread (potpin); // legge il valore dal potenziometro (valore compreso tra 0 e 1023)
Val = mappa (val, 0, 1023, 0, 180); // scala il valore da utilizzare con il servo (valore compreso tra 0 e 180)
Myservo.scrivere (val); // Imposta la posizione servo con valore in scala
ritardo (15); // Aspetta che il servo arrivi in ​​posizione

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

Schema elettrico

Quanti servi motori posso connettermi con Arduino?

Il numero massimo di servi motori che Arduino Uno può gestire è fino a 12 con la libreria Arduino per il servo e massimo di 48 servos Può essere connesso con schede come mega.

Mancia: Possiamo eseguire direttamente il servo usando Arduino Current ma ricorda se i motori servos disegnano più di 500 mA Quindi la scheda Arduino può ripristinare e perdere energia automaticamente. Si consiglia di utilizzare sempre un alimentatore dedicato per i servi motori.

Conclusione

In questo tutorial, abbiamo coperto il meccanismo di controllo dei servi motori con Arduino. Abbiamo coperto le basi del controllo della posizione del servo e della velocità con potenziometro. Ora hai un'idea del servo e delle possibilità per la tua robotica, i progetti RC e l'automazione utilizzando SERVO sono infiniti.