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:
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:
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:
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 è:
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.