0% encontró este documento útil (0 votos)
91 vistas4 páginas

Controlar Un Servo Con Arduino

Este documento describe los servos, cómo funcionan y cómo controlarlos con Arduino. Los servos son accionadores que pueden posicionarse en ángulos específicos controlados por la duración de pulsos eléctricos. Se explica cómo conectar un servo a Arduino usando tres cables y controlar su posición mediante la librería Servo. Se provee un ejemplo de código que hace girar un servo de 0 a 180 grados de forma continua.

Cargado por

sugey
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
91 vistas4 páginas

Controlar Un Servo Con Arduino

Este documento describe los servos, cómo funcionan y cómo controlarlos con Arduino. Los servos son accionadores que pueden posicionarse en ángulos específicos controlados por la duración de pulsos eléctricos. Se explica cómo conectar un servo a Arduino usando tres cables y controlar su posición mediante la librería Servo. Se provee un ejemplo de código que hace girar un servo de 0 a 180 grados de forma continua.

Cargado por

sugey
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 4

CONTROLAR UN SERVO CON ARDUINO

¿QUÉ ES UN SERVO?
Un servo es un tipo de accionador
ampliamente empleado en electrónica. A
diferencia de otros tipos de motores en los
que controlamos la velocidad de giro, en
un servo indicamos directamente el
ángulo deseado y el servo se encarga de
posicionares en este ángulo.
Típicamente los servos disponen de un
rango de movimiento de entre 0 a
180º. Es decir, no son capaces de dar la vuelta por completo (de hecho disponen de
topes internos que limitan el rango de movimiento)
Internamente un servo frecuentemente consta de un mecanismo reductor. Por
tanto proporcionan un alto par y un alto grado de precisión (incluso décimas de
grado). Por contra, las velocidades de giro son pequeñas frente a los motores de
corriente continua.
Los servos se admiten una tensión de alimentación entre 4,8V a 7,2V, siendo el valor
más adecuado es 6V. Con tensiones inferiores el motor tiene menos fuerza y velocidad.
Con tensiones superiores a 6,5V los servos empiezan a oscilar demasiado, lo cual los
hace poco útiles.
Los servos son cómodos de emplear, ya que ellos mismos realizan el control de
posición, que con otro tipo de motores debe hacerse de forma externa. Por este motivos
son ampliamente empleados en proyectos de robótica, como brazos robóticos, robots
con patas, controlar el giro de torretas, u orientar sensores como sensores de
ultrasonidos o sensores de temperatura a distancia.

¿CÓMO FUNCIONA UN SERVO?


Internamente un servo está constituido por un
motor de corriente continua, acoplado a un
reductor para reducir la velocidad de giro,
junto con la electrónica necesaria para
controlar su posición.
Frecuentemente simplemente se dispone de
un potenciómetro unido al eje del servo, que
permite al servo para conocer la posición del
eje. Esta información es tratada por un
controlador integrado que se encarga de ajustar actuar sobre el motor para alcanzar la
posición deseada.
La comunicación de la posición deseada se realiza mediante la transmisión de una señal
pulsada con periodo de 20ms. El ancho del pulso determina la posición del servo.
La relación entre el ancho del pulso y el ángulo depende del modelo del motor. Por
ejemplo, algunos modelos responden con 0º a un pulso de 500 ms, y otros a un pulso
de 1000 ms
En general, en todos los modelos:
 Un pulso entre 500-1000 us corresponde con 0º
 Un pulso de 1500 ms corresponde con 90º (punto neutro)
 Un pulso entre 2000-2500us corresponde con 180º
Por tanto, variando la señal en microsegundos podemos disponer de una precisión
teórica de 0.18-0.36º, siempre que la mecánica del servo acompañe.

ESQUEMA DE MONTAJE
Conectar un servo a Arduino es sencillo. El servo dispone de tres cables, dos de
alimentación (GND y Vcc) y uno de señal (Sig).
El color de estos cables suele tener dos combinaciones:
– Marrón (GND), Rojo (Vcc) y Naranja (Sig)
– Negro (GND), Rojo (Vcc) y Blanco (Sig)
Por un lado, alimentamos el servo mediante el terminal GND ( Marrón / Negro) y Vcc
(Rojo).

En general, la alimentación a los servos se realizará desde una fuente de tensión


externa (una batería o fuente de alimentación) a una tensión de 5V-6.5V, siendo 6V la
tensión idónea.
Arduino puede llegar a proporcionar corriente suficiente para encender un servo
pequeño (SG90), suficiente para hacer unos cuantos proyectos de prueba.
Sin embargo no dispone de corriente suficiente para actuar un servo grande (MG996R).
Incluso varios servos pequeños, o hacer excesiva fuerza con ellos puede exceder la
capacidad de corriente de Arduino, provocando su reinicio.
Por otro lado, finalmente, para el control conectamos el cable de señal (naranja / blanco)
a cualquier pin digital de Arduino.

Al usar varias fuentes de tensión recordar poner siempre en común todos los GND.
De lo contrario podríais dañar algún componente.

EJEMPLOS DE CÓDIGO
El control de servos en Arduino es muy sencillo, ya que el IDE Standard proporciona la
librería “servo.h”, que permite controlar simultáneamente hasta 12 servos en Arduino
Uno/Nano y hasta 48 servos en Arduino Mega.
Entre los ejemplos típicos para ilustrar el funcionamiento de servos tenemos el Sketch
“Sweep”, que realiza un barrido continuo con el servo.
Para ello incrementa el ángulo de 0 a 180º a razón de 1º cada 15ms, posteriormente
realiza la operación contraria de 180º a 0º, para finalmente reiniciar el bucle.
#include <Servo.h>
Servo myservo; // crea el objeto servo
int pos = 0; // posicion del servo
void setup() {
myservo.attach(9); // vincula el servo al pin digital 9
}
void loop() {
//varia la posicion de 0 a 180, con esperas de 15ms
for (pos = 0; pos <= 180; pos += 1)
{
myservo.write(pos);
delay(15);
}
//varia la posicion de 0 a 180, con esperas de 15ms
for (pos = 180; pos >= 0; pos -= 1)
{
myservo.write(pos);
delay(15);
}
}

También podría gustarte