Debido a las consultas recibidas en nuestro canal de Youtube, hemos creado esta entrada para explicar algo de teoría sobre los servo controladores (servos) que utilizamos habitualmente.
¿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 posicionarse en ese
á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 (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.
Existe una gran variedad de servos, que varían en tamaño,
fuerza, velocidad, y precisión. Los servos que emplearemos en nuestros
proyectos cuestan unos pocos euros pero, incluso dentro del campo de los
hobbies podemos encontrar servos de 100-150€, y de miles de euros en el ámbito
industrial.
Para nuestros proyectos caseros usaremos principalmente dos
tamaños de servo. Dentro de los distintos modelos destacaremos tres por su
calidad/precio. Podéis encontrarlos fácilmente en vendedores internacionales de
Amazon,eBay o AliExpress.
TIPOS DE SERVOS
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.
Torque: 1.4 kg·cm
Velocidad: 0.1 seg/60º (4.8V) y 0.08 seg/60º (6V)
Dimensiones: 21.5 x 11.8 x 22.7mm
Peso: 9g
Precio: 1.20€
MG90S
El MG90S es similar al SG90 pero dispone de engranajes y 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
un montaje en el que realmente necesitemos ejercer fuerza, ya que las partes de
plástico podrían ceder.
Torque: 1.8 Kg·cm
Velocidad: 0.1 seg/60º (4.8V) y 0.08 seg/60º (6V)
Dimensiones: 22.8 x 12.2 x 28.5mm
Peso: 13.4g
Precio: 2€
M996R
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.
Torque: 13kg·cm (4.8V)
a 15kg·cm (6V)
Velocidad: 0.17
seg/60º (4.8V) y 0.13 seg/60º (6V)
Dimensiones: 40 x 19 x
43mm
Peso: 56g
Precio: 3.70€
Conviene aclarar que
estos servos, sobre todos los comprados en china, destacan por su
calidad/precio. Pero, lógicamente, son modestos en sus características. Veréis
en comparativas que otros modelos más caros también son más rápidos y precisos.
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.
¿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 y 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 un 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.
Conexión de un servo utilizando la alimentación de la placa (La placa se puede alimentar de diferentes formas - ver entrada en este blog sobre las formas de alimentar la placa)
Conexión de un servo utilizando alimentación externa (La placa se puede alimentar en diferentes formas - ver entrada en este blog sobre las formas de alimentar la placa)
La conexión externa GND y la conexión GND de la placa deben estar conectadas.
¿Te ha gustado este tutorial?
Colabora con nosotros y haz una donación: