
El servo es un motor paso a paso. Nos permite mantener una posición que indiquemos, y nos permite controlar la velocidad de giro. Se puede hacer
Características técnicas de un servomotor;
Características:
Peso: 9 g
Dimensiones: 22.2 x 11.8 x 31 mm aprox.
Par de torque: 1.8 kgf·cm
Velocidad de movimiento: 0.1 s/60º
Voltaje de funcionamiento: 4.8 V (~5V)
Temperatura de funcionamiento: 0 ºC – 55 ºC
Todos tienen un funcionamiento muy parecido y la programación puede variar muy poco.
Hay que tener en cuenta:
- El angulo de giro, permite hacer un barrido entre -90º y 90º. Lo que viene a ser un ángulo de giro de 180º.
- Tiene una precisión de un grado es decir, podemos mover de grado en grado.
- Funcionan con una señal PWM, con un pulso de trabajo entre 1 ms y 2 ms y con un periodo de 20 ms (50 Hz). Indica que la velocidad máxima a la que podemos mover el servomotor con Arduino. Solo podremos cambiar de posición cada 20 ms.

- Las conexiones dependerán del tipo de servomotor, Tienen tres cables, uno irá a tierra, otro a la alimentación de 5 Voltios y el tercero a un pin PWM.

¿Cómo programar un servo?
El código para girar el motor de 0º a 180º
Comprobamos que tenemos instalada la librería servo.h, en caso contrario la instalaremos.
En los ejemplos hay uno, que hace girar el servo de 0º a 180º y después hacer el giro inverso.
Lo pongo a continuación pero traducido al español.
/* Sweep by BARRAGAN <http://barraganstudio.com> This example code is in the public domain. modified 8 Nov 2013 by Scott Fitzgerald http://www.arduino.cc/en/Tutorial/Sweep Traducido por Manuel EA7TB */ #include <Servo.h> // Incluímos la librería para poder controlar el servo Servo myservo; // // Declaramos la variable para controlar el servo int pos = 0; // Declaramos la variable para determinar la posicion. void setup() { myservo.attach(9); // Iniciamos el servo para que empiece a trabajar con el pin 9 } void loop() { // movemos de 0º a 180º, de grado en grado for (pos = 0; pos <= 180; pos += 1) { myservo.write(pos); // Indicamos la posicion al servo, con la variable pos. delay(15); // esperamos 15ms para indicarle al servo su nueva posicion, } delay(1000); // retardo para que gire en direccion contraria // movemos de 180º a 0º, de grado en grado for (pos = 180; pos >= 0; pos -= 1) { myservo.write(pos); // Indicamos la posicion al servo, con la variable pos. delay(15); // esperamos 15ms para indicarle al servo su nueva posicion, } delay(1000); // retardo para que vuelva a empezar. }
De la librería Servo.h hemos declarado un objeto o variable servoMotor y hacemos uso de dos métodos:
- myservo.attach, que nos permite indicar en que pin tenemos conectado el servo
- myservo.write, donde le indicamos a qué ángulo se debe posicionar.
Fácil, no?.
Para posicionarlo en un punto determinado, solo hay que poner.
myservo.write(pos);
el valor de pos debe estar entre 0 y 180