Un servomotor es un dispositivo que tiene la capacidad de ubicarse en cualquier posición dentro de su rango de operación y mantenerse estable en dicha posición.
El servomotor es un motor eléctrico que lleva incorporado un sistema de regulación que puede ser controlado tanto en velocidad como en posición.También es llamado comúnmente servo a secas.
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 mas comunes disponen de un rango de movimiento de entre 0 a 180º. Es decir, no son capaces de dar la vuelta por completo.
Internamente un servo frecuentemente consta de un mecanismo reductor por medio de un sistema de engranajes. Por tanto proporcionan un alto par y un alto grado de precisión . La desventaja que tiene, sus velocidades de giro son pequeñas frente a los motores de corriente continua.
Los servos 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.
Tower Pro Servo Sg90 Micro Servo
Es un servo pequeño dentro de los proyectos de electrónica. Es un servo pequeño, ligero, y económico, que dispone de engranajes de plástico. Muchos dispositivos, como torres y partes de robots, están realizados 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
Tower Pro Servo Mg90 Micro Servo
El MG90S es similar al SG90 pero dispone de engranajes y el acoplamiento metálicos. A cambio pesa un poco más . Físicamente es compatible con los accesorios del SG90.
Traen ademas del servo un kit de paletas de diversas formas con algunos tornillos, como se ve en la imagen.
Usaremos este servo en reemplazo del SG90 cuando tengamos una aplicación en la que realmente necesitemos ejercer fuerza, y 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
Tower Pro Servo MG996R o MG995
Este es el servo grande que uso es habitual en proyectos mas grandes.Pueden tener Torque de 13 Kg hasta 15 kg y por lo general los engranajes son metalicos.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 ideados para instalar este tipo de servo.
Traen ademas del servo un kit de paletas de diversas formas con algunos tornillos, como se ve en la imagen.
- 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
Funcionamiento de un servomotor
El 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.En general 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 requerida.
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º
- 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 en ingles.
El color de estos cables suele tener :
– Marrón (GND), Rojo (Vcc) y Naranja (Sig)
A el servo mediante el terminal GND ( Marrón / Negro) y Vcc (Rojo) se le proporciona la energía necesaria para su fucionamiento.
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.
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.
Ejemplo de código para el ServoMotor
El control de servos en Arduino es muy sencillo, ya que el IDE 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.
Uno de los ejemplos para ilustrar el funcionamiento de servos es el siguiente, que realiza un barrido continuo con el servo.
Para ello incrementa el ángulo de 0 a 180º a razón de 1º cada 10ms, posteriormente realiza la operación contraria de 180º a 0º, para finalmente reiniciar el bucle.
#include <Servo.h> Servo myservo; int pos = 0; // posicion del servo void setup() { myservo.attach(9); // asigna el servo al pin digital 9 } void loop() { //varia la posicion de 0 a 180, con unas esperas de 10ms for (pos = 0; pos <= 180; pos += 1) { myservo.write(pos); delay(10); } //varia la posicion de 180 a 0, con unas esperas de 10ms for (pos = 180; pos >= 0; pos -= 1) { myservo.write(pos); delay(10); //espera unos 10 milisegundos } }
Saludos German
- Arduino
Clasicos servos usados con frecuencia. Saludos