RECURSO ARD.SERVANG.- El servomotor.

Un servomotor es un motor de corriente continua con un potenciometro que le permite saber la posición en la que se encuentra o a la velocidad a la que gira y así poder controlarla.

Resultado de imagen de servo

Existen dos tipos de servo

Servo de rotación contínua : Puede controlarse su velocidad con bastante resolución.

Servo de desplazamiento angular : Puede controlarse su posición angular ( el ángulo del eje)


El servo se controla mediante una señal PWM. Tiene 3 cables, Alimentación , Masa y la señal.
Los colores son los siguientes:
  • Rojo - Alimentación (Normalmente 5 V )
  • Negro o Marrón -Masa
  • Blanco o Naranja - Señal de control (pulso enviado al servomotor)
Imagen
Conector servomotor

La anchura del PWM varia según el servomotor pero normalmente va entre 0.5 y 2.5 ms.

Dependiendo del tamaño del servo y su consumo es posible que no puedas alimentarlo desde tu placa arduino, en ese caso es necesario una fuente externa para poder moverlo,

Un servo estándar suele tener un par de 5kg/cm, es decir puede mover 5kg a 1 cm de distancia del centro del eje. En caso de querer moverlo a 5 cm el servo solo podrá mover 1kg.

En arduino, el control de un servo se produce con la llamada a un método de un objeto instanciado de la clase Servo. El método empleado es wirte(valor)
El parámetro valor es un número entre  0 y 180, que se corresponde con el ángulo de giro del servo (servos de desplazamiento angular) o la velocidad del mismo (servo rotación contínua).

myservo.write(val);  

Angular:

  • 0 = > Un extremo
  • 90 => Centro
  • 180 => otro extremo.

Rotación contínua:

  • 0 => Velocidad máxima en una dirección
  • 90 => Parado
  • 180 = > Velocidad máxima en dirección contraria.


A continuación vamos a ver como controlar en Arduino un servomotor. Para ello iniciamos la aplicación de Arduino y pulsamos en sketch->importar libreria ->Servo



// Controlling a servo position using a potentiometer (variable resistor) 
// by Michal Rinott  

#include  
Servo myservo;  // create servo object to control a servo
 
int potpin = 0;  // analog pin used to connect the potentiometer
int val;    // variable to read the value from the analog pin
 
void setup()
{ 
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
} 
 
void loop()
{ 
  val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023)
  val = map(val, 0, 1023, 0, 179);     // scale it to use it with the servo (value between 0 and 180)
  myservo.write(val);                  // sets the servo position according to the scaled value
  delay(15);                           // waits for the servo to get there
} 



Fijate que en este caso, se ha realizado una llamada especial a la función write. Esto es porque write es una función que sólo se relaciona con la clase el objeto del que depende, my_servo. A este tipo de funciones se los denomina métodos.