Un servomotor pueden ser programados para que su eje mantenga una determinada posición según el ángulo que se le indique al ser programador. Lo habitual es que ese ángulo oscile entre 0º y 180 º.
En el artículo Conexión de servomotores para robótica puedes ver un ejemplo de cómo se podría hacer la conexión eléctrica de un servomotor con una placa Arduino usando baterías externas. Recuerda que conviene que los motores reciban una alimentación eléctrica externa, y no usar la que pueda recibir directamente de la placa Arduino desde el USB, ya que el consumo eléctrico de los motores es elevado.
A continuación puedes ver un ejemplo sencillo de programación de un servomotor para que se posiciones inicialmente en el ángulo 90 para que posteriormente vaya posicionándose indefinidamente en los ángulos 0º, 45º, 90º, 135º, 180º.
Observa que siempre que se hace un movimiento se debe añadir una espera, ya que el motor tarda un pequeño tiempo en llegar a posicionarse en la posición indicada. Conviene realizar pruebas para comprobar el tiempo mínimo que se puede esperar o intentar obtener en la documentación del servomotor la información sobre su velocidad de giro. En el caso de los servomotores SG90 la velocidad indicada es de 0.1 segundos / 60º con un voltaje de 4,8 voltios (al incrementar el voltaje se aumenta la velocidad, pero hay un límite soportado).
// Requiere añadir la librería Servo.h
#include <Servo.h>
// Declarar una variable que haga referencia al servomotor
Servo servo1;
void setup() {
// Asociar el servo al pin digital al que está conectado en la placa Arduino
servo1.attach(2);
// Mover el servo a un determinado ángulo (90º)
servo1.write(90);
// Esperar para dar tiempo a que se posicione el motor
delay(300); // 0.3 segundos
}
void loop() {
// Se repetirá todo este código indefinidamente
servo1.write(0); // Posicionar en 0º
delay(300);
servo1.write(45); // Posicionar en 45º
delay(300);
servo1.write(90); // Posicionar en 90º
delay(300);
servo1.write(135); // Posicionar en 135º
delay(300);
servo1.write(180); // Posicionar en 180º
delay(300);
}
Más ejemplos
En el artículo Programación del servo-motor SG90 con Arduino de este mismo sitio web puedes encontrar algunos ejemplos más que se han utilizado para mover el sensor de distancia de un coche robot con un servomotor.
Para saber más
- Referencia oficial de la librería Servo en Arduino: https://www.arduino.cc/en/Reference/Servo
- Controlar un servo con Arduino: https://www.luisllamas.es/controlar-un-servo-con-arduino/