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 Servo 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. Con tal de que una señal codificada exista en la línea de entrada, el servo mantendrá la posición angular del engranaje. Cuando la señala codificada cambia, la posición angular de los piñones cambia. En la práctica, se usan servos para posicionar superficies de control como el movimiento de palancas, pequeños ascensores y timones. Ellos también se usan en radio control, títeres, y por supuesto, en robots. Los Servos son sumamente útiles en robótica. Los motores son pequeños, cuando usted observa la foto de arriba, tiene internamente una circuitería de control interna y es sumamente poderoso para su tamaño. Un servo normal o Standard como el HS-300 de Hitec tiene 42 onzas por pulgada o mejor 3kg por cm. de torque que es bastante fuerte para su tamaño. También potencia proporcional para cargas mecánicas. Un servo, por consiguiente, no consume mucha energía. Se muestra la composición interna de un servo motor en el cuadro de abajo. Podrá observar la circuitería de control, el motor, un juego de piñones, y la caja. También puede ver los 3 alambres de conexión externa. Uno es para alimentación Vcc (+5volts), conexión a tierra GND y el alambre blanco es el alambre de control. Un servo desmontado. ¿Como trabaja un servo? El motor del servo tiene algunos circuitos de control y un potenciómetro (una resistencia variable) esta es conectada al eje central del servo motor. En la figura se puede observar al lado derecho del circuito. 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. Un servo normal no es mecánicamente capaz de retornar a su lugar, si hay un mayor peso que el sugerido por las especificaciones del fabricante. 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.[1]

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. [editar] 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.

La Señal PWM

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
}