Cintillo Institucional

wiki comunidad

Proyecto Hardware Libre Cenditel

Página Cenditel

wiki Cenditel

Plataforma de Desarrollo Colaborativo

Curso Sensibilización Hardware Libre (Unidad 002)

logohl.png logohl.png logohl.png

003/01 Actividad 005

El Servo Motor

Un Servomotor es un dispositivo pequeño que tiene un eje de rendimiento controlado. Este puede ser llevado a posiciones angulares específicas al enviar una señal codificada, al cambiar esta señal enviada al motor la posición angular cambia. Los servomotores se consideran como primer paso en la robótica.

El motor del servo tiene algunos circuitos de control y un potenciómetro que esta conectado al eje central del servo motor. Este potenciómetro permite a la circuitería de control, supervisar el ángulo actual del servo motor. Si el eje está en el ángulo correcto, entonces el motor está apagado. Si el circuito chequea que el ángulo no es el correcto, el motor girará en la dirección adecuada hasta llegar al ángulo correcto. El eje del servo es capaz de llegar alrededor de los 180 grados. Normalmente, en algunos llega a los 210 grados, pero varía según el fabricante. Un servo normal se usa para controlar un movimiento angular de entre 0 y 180 grados.

La cantidad de voltaje aplicado al motor es proporcional a la distancia que éste necesita viajar. Así, si el eje necesita regresar una distancia grande, el motor regresará a toda velocidad. Si este necesita regresar sólo una pequeña cantidad, el motor correrá a una velocidad más lenta. A esto se le llama control proporcional.

Un servomotor (también llamado servo) es un dispositivo similar a un motor de corriente continua que tiene la capacidad de ubicarse en cualquier posición dentro de su rango de operación, y mantenerse estable en dicha posición.

Los servos se utilizan frecuentemente en sistemas de radio control y en robótica, pero su uso no está limitado a estos. Es posible modificar un servomotor para obtener un motor de corriente continua que, si bien ya no tiene la capacidad de control del servo, conserva la fuerza, velocidad y baja inercia que caracteriza a estos dispositivos.

Características

Está conformado por un motor, una caja reductora y un circuito de control. Un servo normal o estándar tiene 3kg por cm. de torque, lo cual es bastante fuerte para su tamaño. También potencia proporcional para cargas mecánicas. Un servo, por consiguiente, tiene un consumo de energía reducido.

La corriente que requiere depende del tamaño del servo. Normalmente el fabricante indica cual es la corriente que consume. La corriente depende principalmente del par, y puede exceder un amperio si el servo está enclavado, pero no es muy alto si el servo está libre moviéndose todo el tiempo.

Estos dispositivos son considerados una de las materias primas en el diseño y la construcción de los robots. Si combinamos y administramos los movimientos en un montaje mecánico adecuado, un grupo variable de servomotores puede dar motricidad y locomoción a sistemas controlados de manera local o remota. Desde pequeñas aplicaciones didácticas hasta el más complejo diseño robótico. Los límites son tu imaginación y tus ganas de aprender.

“Dadme un punto de apoyo y moveré al mundo” habría dicho Arquímedes de Siracusa, arrastrado quizá por un entusiasmo desmedido ante su descubrimiento de la ley de la palanca. A partir de allí comienza la historia de las máquinas simples, y el dispositivo que veremos y aplicaremos hoy en este artículo es un buen ejemplo de ello.

Un servomotor es básicamente un actuador mecánico basado en un motor y un conjunto de engranajes que permiten multiplicar el torque del sistema final, el cual posee elementos de control para monitorear de manera constante la posición de un elemento mecánico que será el enlace con el mundo exterior. Es decir, ante una acción inducida electrónicamente a un servomotor, obtendremos por resultado una respuesta mecánica controlada. Por ejemplo, los motores que forman parte de una impresora, junto a los sistemas de control de avance o retroceso del papel, forman un servomotor.

Un clásico servomotor de reconocida marca y para aplicaciones sencillas Un clásico servomotor de reconocida marca y para aplicaciones sencillas

Las aplicaciones de estos sistemas esclavos se pueden observar mayormente en aeromodelismo y robótica, pero no son exclusivos de estos usos. Cualquier sistema que requiera un posicionamiento mecánico preciso y controlado dependerá de un servosistema o servomecanismo, actuado, por supuesto, por un servomotor. El zoom de una cámara, el autoenfoque de un conjunto óptico, un sistema de movilización de cámaras de vigilancia y hasta las puertas automáticas de un ascensor son sencillos ejemplos de su aplicación.

El motor posee la característica de girar a una buena velocidad, la cual disminuye por los juegos de engranajes de la caja reductora que aprovechan esta velocidad para transformarla en fuerza de trabajo. Al girar el último engranaje acoplado al eje de salida obtenemos una velocidad notablemente reducida, a pesar de que, dentro del sistema, el motor está girando a altas velocidades.

Diagrama en bloques de la estructura interna de un servomotor Diagrama en bloques de la estructura interna de un servomotor

Además, en esta última rueda de acoplamiento encontraremos topes o límites de recorrido para entregarnos en la salida final un giro de 180° del brazo actuador. En la mayoría de los servomotores, este desplazamiento angular es “copiado” por un potenciómetro incorporado al sistema de control y solidario en forma mecánica al eje externo. Este sensor resistivo se encargará de informarle al sistema la posición que posee el actuador exterior para así controlar con exactitud que la instrucción de posicionamiento enviada esté siendo ejecutada fielmente.

Conectando un servo Las conexiones son muy sencillas y se basan en una normativa de colores muy elementales que involucran al Rojo como positivo de la alimentación principal, junto a otro cable que puede ser de color Negro o Marrón y que, por lógica, podemos deducir que se trata del negativo de alimentación. Un tercer cable, correspondiente al control de posicionamiento del actuador mecánico, es Amarillo o Blanco. En la primera imagen se puede apreciar el conjunto de colores Rojo – Negro y Amarillo para la conexión en servomotores de la marca HITEC.

La tensión de trabajo de los servomotores suele estar comprendida entre los 3 y los 7 Volts, siendo 5 Volts la tensión que se utiliza en la mayoría de las aplicaciones fijas donde interviene una fuente de alimentación conectada a la red de energía domiciliaria, y 6 Volts para los casos de alimentación a baterías cuando se trata de equipos móviles. En todos los casos, siempre se requiere de una señal de control de 5 Volts de amplitud.

La señal de control del servo Como mencionamos al principio, los servomotores se controlan mediante impulsos de ancho variable que deben refrescarse periódicamente. Esto significa que si dejamos de enviar la señal de control en el tiempo en el que el servomotor lo necesita, éste (a pesar de estar energizado) dejará de mantenerse en la posición preestablecida y adoptará cualquier orientación regida por el esfuerzo al que esté sometido. Es decir, si no mantenemos la señal de control en forma efectiva todo el tiempo que sea necesario, el sistema quedará a merced de las fuerzas externas a la que sea sometido. Por ejemplo, un brazo de palanca dejará de sostener un objeto y se dejará caer todo el trayecto mecánico que pueda recorrer, o un sistema erguido en vertical se caerá hacia atrás o hacia adelante al momento en el que el servomotor deje de “sostener” la aplicación en la posición preestablecida.

Para bloquear al servomotor en una posición es necesario, entonces, enviarle continuamente la señal con la posición deseada. De esta forma, el sistema de control seguirá operando y el servo conservará su posición y se resistirá a las fuerzas externas que intenten cambiarlo de posición.

Tiempos de duración de los impulsos y dirección obtenida del actuador Tiempos de duración de los impulsos y dirección obtenida del actuador

Si para el control de uno de estos sistemas utilizamos un microcontrolador que además de actuar sobre el servomotor deba realizar otras actividades, se nos planteará siempre el temor de no lograr actuar en los tiempos requeridos por estos sistemas. Sin embargo, la clave de un funcionamiento satisfactorio y de una realización sin mayores complicaciones se basa en la utilización de un cristal de alta frecuencia (20 Mhz) para poder ejecutar todo el trabajo adicional que sea necesario hasta que llegue el momento de refrescar nuevamente el impulso de control del servomotor. Esto debe ir acompañado, por supuesto, de la observación cuidadosa del diagrama de tiempos de nuestra aplicación.

La Señal PWM

El refresco se realiza habitualmente con una frecuencia de 50 veces por segundo, pero es normal y efectivo trabajar entre los 10 y los 30 milisegundos. Por otro lado, el ancho del impulso, es decir, su tiempo de duración, dará la posición u orientación del actuador mecánico. En este punto en particular, se cuando se está constantemente atento a enviar un impulso de duración exacta para evitar oscilaciones mecánicas indeseadas, se centra la complejidad y la cautela al trabajar con servomotores.

Control de PWM con Arduino

Prácticas



Trabajo con servo motores con librería de arduino

dfdf

// Controlling a servo position using a potentiometer (variable resistor) 
// by Michal Rinott <http://people.interaction-ivrea.it/m.rinott> 

#include <Servo.h> 
 
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(7);  // 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 
} 

Sin Librería Arduino

Este nos permite nodificar la frecuencia de la PWM

int potpin = 0;  // analog pin used to connect the potentiometer
int motorpin=9;
//int val;    // variable to read the value from the analog pin
int sensorval;
float val;



void setup()
{
//  myservo.attach(7);  // attaches the servo on pin 9 to the servo object
pinMode (motorpin,OUTPUT);

  TCCR1A = 0x00;  // esto es para setear el timer en uno de los modos de
generación de PWM
  TCCR1B = 0x13; // esto setea el "prescaler" (N), de la siguiente manera:

  // TCCR1B=0x11 --> N=1;  TCCR1B=0x12 -->N=8;  TCCR1B=0x13 -->N=64, etc.
  // N, el famoso "prescaler", es un divisor del clock de la Arduino (16MHz)

  ICR1 = 3000; //  ICR1 es el valor máximo del analogWrite, lo que le
llaman el "TOP"

}

void loop()
{
  sensorval = analogRead(potpin);            // reads the value of the
potentiometer (value between 0 and 1023)
  val = map(sensorval, 0, 1023, 75, 360);     // 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
  analogWrite (motorpin,val);
  delay(15);                           // waits for the servo to get there
}