Un servomotor es un motor de corriente continua acoplado a una serie de engranajes con un circuito electrónico para controlar la dirección de rotación, así como la posición del eje del motor. Los servomotores permiten la ubicación precisa angular de su eje de salida y se utilizan en robótica, vehiculos teledirigidos, aviones y barcos para controlar el movimiento de sus diversas partes.
En esta sesión de laboratorio, lo primero que vamos a explorar es en que consiste un servomotor y cómo funciona y, a continuación se ilustra la manera de interactuar con un microcontrolador PIC 16F628A.
Teoría
Un servomotor (o servo) es una pequeña caja que contiene un motor de corriente continua, un eje de salida (brazo del servo) que está conectado al motor a través de una serie de engranajes, y un circuito electrónico para controlar la posición del eje. El objetivo de utilizar un servo es lograr un posicionamiento preciso angular de un objeto.
Con el fin de lograr la función del servo, la información de posición instantánea del eje de salida se realimenta al circuito de control usando un transductor. Una forma muy sencilla de hacerlo es colocando un potenciómetro al eje de salida o en alguna parte del tren de engranajes. La electrónica de control compara la señal de realimentación (que contiene la posición actual del eje) desde el potenciómetro a la señal de entrada de control (que contiene la información de la posición deseada del eje), y cualquier diferencia entre los valores reales y deseados (conocido como una señal de error) se amplifica y se utiliza para accionar el motor de corriente continua en una dirección necesaria para reducir o eliminar el error. El error es cero cuando el eje de salida llega a la posición deseada. El diagrama de bloques de funcionamiento de un servomotor típico se muestra a continuación.
La entrada de control a un servo es un ancho de pulso modulado (PWM), generalmente a partir de una frecuencia de 50 Hz. Esto significa que el pulso debe repetirse cada 20 ms. El ancho del pulso determina la posición angular del eje de salida. Un circuito electrónico dentro del servo-convierte la señal PWM a un voltaje de salida proporcional que se compara con la tensión de realimentación del potenciómetro. Si existe una diferencia entre los dos, el circuito de control acciona el motor en una dirección apropiada hasta que la diferencia se hace cero. Un valor típico de ancho de pulso esta entre 1,0 a 2,0 milisegundos (ms). Para un servo estándar, una ancho de pulso entre 1,0 ms a 1,5 ms, el servo gira en sentido horario (CW), entre 1,5 ms a 2,0 ms hace que gire en sentido antihorario (CCW), y un ancho de pulso de 1,5 ms el servomotor para en el centro. Sin embargo, estos valores pueden variar dependiendo de la marca y marca del motor. Se recomienda leer la hoja de datos del servo para encontrar los verdaderos valores de los anchos de los pulsos necesarios para posicionar el servo en diferentes ángulos.
La mayoría de los servos giran 180°. Sin embargo. hay algunos que podrían rotar 360° o más. Los servos se utilizan ampliamente como las articulaciones en movimientos en brazos robóticos para su posicionamiento angular preciso. También tienen aplicaciones en juguetes de radio control (RC). Por ejemplo, en los autos de RC se utilizan en el mecanismo de dirección, y en barcos RC para controlar el timón.
Un servomotor tiene tres cables: dos son para la alimentación (Vcc y tierra) y el tercer cable es para el control signal. El cable de Vcc es normalmente de color rojo y el de masa es negro o marrón. El cable de señal de control viene en color blanco, amarillo o naranja.
/* Lab 21: Servo motor Control usando PIC16F628A MCU: PIC16F628A a 4.0 MHz, MCLR habilitado, WDT = OFF. Escrito por: Rajendra Bhatt (www.embedded-lab.com) 2012/03/29 Descripción: Switch de entrada conactado a RB0 y salida para el Servo en RB1. */ sbit SW1 at RB0_bit; sbit Control at RB1_bit; unsigned short i=7, delay; void interrupt() { delay = i*10; Control = 1; Delay_Cyc(delay); // Generates delay equal to (10*delay) clock cycles Control = 0; TMR0 = 180; // TMR0 returns to its initial value INTCON.T0IF = 0; // Bit T0IF is cleared so that the interrupt could reoccur } void main() { CMCON = 0x07; // Disable Comparators TRISB = 0b00000001; PORTB = 0; OPTION_REG = 0x07; // Prescaler (1:256) is assigned to the timer TMR0 TMR0 = 180; // Timer T0 counts from 180 to 255 to create ~20 ms period INTCON = 0xA0; // Enable interrupt TMR0 and Global Interrupts do{ if(!SW1){ // Change pulse width when Switch is pressed Delay_ms(300); i = i+2; if(i > 23) i=7; } }while(1); }
Descarga de archivos Fuente y Hex
Salida
Después de cargar el archivo HEX en el microcontrolador PIC16F628A, se puede ver el controlador de servo en la acción. Vea el vídeo de demostración en la parte inferior para ver el resultado de este experimento.
mas info..
+ Automatismos Mar del Plata – Servo motor control
+ Lab 21: Servo motor control
Hola me prodias decir el nombre integrado que tiene internamente el servo, muchas gracias!!!