Controlar Un Servo Con Arduino
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.
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).
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);
}
}