ServoMotor Con Arduino
ServoMotor Con Arduino
Año 2021
Laboratorio de Robótica Educativa - UTNFRT
Controlar un servo con Arduino
Contenido
¿Qué es un servo? .........................................................................¡Error! Marcador no definido.
Tipos de servos...............................................................................¡Error! Marcador no definido.
SG90 ...........................................................................................¡Error! Marcador no definido.
MG90S ........................................................................................................................................ 4
MG996R ...................................................................................................................................... 4
¿Cómo funciona un servo? ............................................................................................................ 5
Esquema de motaje ........................................................................................................................ 6
Ejemplos de código ........................................................................................................................ 8
¿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.
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 motivo 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.
TIPOS DE SERVOS
SG90
Es el servo de tamaño "pequeño" estándar dentro de los proyectos de electrónica. Es un servo
pequeño, ligero, y barato, que dispone de engranajes de plástico. Muchos dispositivos, como torretas
y partes de robots, están diseñados para instalar servos de este
tamaño.
MG90S
El MG90S es similar al SG90 pero dispone de engranajes y el acoplamiento metálicos. A
cambio pesa un poco más y es más caro. Físicamente es compatible con los accesorios del SG90.
Usaremos este servo como sustituto del SG90 cuando tengamos una aplicación en la que
realmente necesitemos ejercer fuerza, y las partes de plástico podrían ceder y quedarse "redondas".
MG996R
Este es el servo de tamaño "grande" que usaremos frecuentemente. Este tipo de servos es
ampliamente utilizado en proyectos de robótica. Igual que con el SG90, muchos dispositivos y kits
como brazos robóticos, hexápodos, están diseñados para instalar este tamaño de servo.
Pero cuando hagamos proyectos como hexápodos o robots bípedos, que requieren entre 18 a 24
servos, la diferencia de usar servos de 1.2€-3.7€ a servos de 80-100€ supone pasar de un coste de
40-60€ por proyecto, a 2000-2400€, que es una diferencia enorme.
Por otro lado, usar servos baratos nos supondrá más problemas en calibración, repetibilidad,
pruebas y trabajo adicional. Pero después de todo, hacer robots es sencillo, lo difícil es hacerlos
baratos :D.
Año 2021 – Pag. 4 de 8
Laboratorio de Robótica Educativa - UTNFRT
Controlar un servo con Arduino
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
Año 2021 – Pag. 5 de 8
Laboratorio de Robótica Educativa - UTNFRT
Controlar un servo con Arduino
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).
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.
Año 2021 – Pag. 6 de 8
Laboratorio de Robótica Educativa - UTNFRT
Controlar un servo con Arduino
Por otro lado, finalmente, para el control conectamos el cable de señal (naranja / blanco) a
cualquier pin digital de Arduino
Al usar varias fuente 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.