Servo 9G

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