05/11/2014
En el entorno de la robótica y la automatización, los servomotores son componentes esenciales. Su capacidad para controlar con precisión la posición angular los convierte en una pieza clave en innumerables proyectos. Para interactuar con estos dispositivos desde una placa Arduino, necesitamos una herramienta fundamental: la librería Servo.

¿Qué es una Librería Servo?
La librería Servo para Arduino es una biblioteca de software que facilita el control de servomotores RC (radio control) de hobby. Estos servomotores contienen engranajes internos y un eje que puede ser posicionado con precisión a través de señales PWM (Modulación por Ancho de Pulso). La librería simplifica la interacción entre la placa Arduino y el servomotor, abstrayendo la complejidad de la señal PWM necesaria.
La mayoría de los servomotores estándar permiten controlar el eje dentro de un rango de 0 a 180 grados, aunque existen servomotores de rotación continua que permiten la rotación ininterrumpida del eje a diferentes velocidades. La librería Servo ofrece soporte para ambos tipos.
Compatibilidad y Limitaciones
La librería Servo admite hasta 12 servomotores en la mayoría de las placas Arduino y hasta 48 en el Arduino Mega. Es crucial entender las limitaciones: en placas que no sean Mega, el uso de la biblioteca desactiva la función analogWrite()(PWM) en los pines 9 y 10, independientemente de si se utiliza o no un servo en esos pines. En las placas Mega, se pueden usar hasta 12 servos sin interferir con la funcionalidad PWM; sin embargo, usar entre 12 y 23 motores deshabilitará el PWM en los pines 11 y 1Planificar cuidadosamente la asignación de pines es fundamental para evitar conflictos.
Conexión del Servomotor
Un servomotor típico tiene tres cables:
- Alimentación (VCC): Normalmente rojo, se conecta al pin de 5V de la placa Arduino. Sin embargo, para proyectos con múltiples servomotores, se recomienda una fuente de alimentación externa para evitar sobrecargar la placa Arduino.
- Tierra (GND): Generalmente negro o marrón, se conecta a un pin GND de la placa Arduino. En caso de utilizar una fuente de alimentación externa, es crucial conectar las tierras de la placa y la fuente.
- Señal (Signal): Suele ser amarillo, naranja o blanco, y se conecta a un pin digital de la placa Arduino. Este pin enviará la señal PWM que controla el ángulo o la velocidad del servomotor.
Importante: Los servomotores consumen una corriente significativa. Para controlar varios servomotores, una fuente de alimentación externa es prácticamente obligatoria para asegurar un funcionamiento estable y evitar daños a la placa Arduino.
Funciones Principales de la Librería Servo
La librería Servo proporciona diversas funciones para un control preciso del servomotor:
attach()
Esta función conecta la variable Servo a un pin digital específico de la placa Arduino. Permite especificar el ancho de pulso mínimo y máximo (en microsegundos) para ajustar el rango de movimiento del servomotor.
Sintaxis:
servo.attach(pin)servo.attach(pin, min, max)
Parámetros:
servo: Variable de tipo Servo.pin: Número del pin digital al que se conecta el servomotor.min(opcional): Ancho de pulso mínimo (microsegundos), por defecto 544 µs (0 grados).max(opcional): Ancho de pulso máximo (microsegundos), por defecto 2400 µs (180 grados).
write()
Esta función escribe un valor angular (en grados) al servomotor. Para servomotores estándar, establece el ángulo del eje. En servomotores de rotación continua, controla la velocidad de rotación.
Sintaxis:

servo.write(angulo)

Parámetros:
servo: Variable de tipo Servo.angulo: Valor angular en grados (0-180 para estándar, interpretación variable para rotación continua).
writeMicroseconds()
Esta función permite controlar el servomotor especificando el ancho de pulso en microsegundos. Ofrece un control más preciso, pero requiere un conocimiento más profundo del funcionamiento interno del servomotor.
Sintaxis:
servo.writeMicroseconds(uS)
Parámetros:
servo: Variable de tipo Servo.uS: Ancho de pulso en microsegundos (int).
read()
Lee el ángulo actual del servomotor (el último valor pasado a write()).

Sintaxis:
servo.read()
Parámetros:
servo: Variable de tipo Servo.
Retorno: Ángulo del servo (0-180 grados).

attached()
Verifica si la variable Servo está conectada a un pin.
Sintaxis:
servo.attached()
Parámetros:
servo: Variable de tipo Servo.
Retorno: truesi está conectado, falseen caso contrario.
detach()
Desconecta la variable Servo de su pin. Esto libera el pin para otros usos y, en algunas placas, puede restaurar la funcionalidad PWM en los pines 9 y
Sintaxis:
servo.detach()
Parámetros:
servo: Variable de tipo Servo.
Ejemplos de Código
A continuación, se presentan ejemplos de código que ilustran el uso de las funciones de la librería Servo:
Ejemplo 1: Mover el Servomotor a Ángulos Específicos
#include <Servo.h>Servo miServo;void setup() { miServo.attach(9); // Conecta el servo al pin 9}void loop() { miServo.write(0); // Mueve el servo a 0 grados delay(2000); miServo.write(90); // Mueve el servo a 90 grados delay(2000); miServo.write(180); // Mueve el servo a 180 grados delay(2000);}Ejemplo 2: Barrido Angular
#include <Servo.h>Servo miServo;void setup() { miServo.attach(9);}void loop() { for (int i = 0; i <= 180; i++) { miServo.write(i); delay(15); } for (int i = 180; i >= 0; i--) { miServo.write(i); delay(15); }}Tabla Comparativa de Servomotores
Las características de los servomotores varían según el fabricante y el modelo. A continuación, una tabla comparativa (de ejemplo) que ilustra algunas diferencias:
| Marca | Modelo | Torque (kg·cm) | Velocidad (s/60º) | Ángulo |
|---|---|---|---|---|
| Marca A | Modelo X | 5 | 0.12 | 180º |
| Marca B | Modelo Y | 0 | 0.10 | 270º |
| Marca C | Modelo Z | 0 | 0.15 | 360º |
Recuerda consultar siempre las especificaciones del fabricante para tu servomotor específico.
Consideraciones Adicionales
- Alimentación adecuada: Proporcionar la tensión correcta al servomotor es crucial. Una tensión incorrecta puede provocar daños al servomotor o un funcionamiento errático.
- Sobrecarga: Evitar sobrecargar el servomotor, ya que puede dañarse.
- Calibración: Algunos servomotores requieren calibración para asegurar un funcionamiento preciso.
- Protección: Considerar la implementación de mecanismos de protección contra sobrecorriente o sobrecalentamiento en proyectos complejos.
La librería Servo para Arduino es una herramienta poderosa y versátil que abre un entorno de posibilidades en el control de servomotores. Con un conocimiento adecuado de sus funciones y limitaciones, se puede lograr un control preciso y eficiente de estos actuadores en una amplia variedad de proyectos.
Si quieres conocer otros artículos parecidos a Librería servo para arduino puedes visitar la categoría Libros y Librerías.
