(c) domingo llorente 2010 1 - ies luis de lucena de servos... · (c) domingo llorente 2010 2...
TRANSCRIPT
(c) Domingo Llorente 2010 1
Control de servomotores
(c) Domingo Llorente 2010 2
Conceptos básicos
� Un servomotor (también llamado Servo) es un dispositivo, que tiene la capacidad de ubicarse en cualquier posición dentro de su rango de operación, (entre -90º y +90º) y mantenerse estable en dicha posición.
� Está conformado por un motor c.c, una caja reductora y un circuito de control.
� Es posible modificar un servomotor para obtener un motor de corriente continua.
� Los servos se utilizan frecuentemente en sistemas de radio control y en robótica.
(c) Domingo Llorente 2010 3
Aplicaciones de los servomotores
Hexápodos
Brazos robotizados
Robots humanoides
Radio control
(c) Domingo Llorente 2010 4
Partes de un servomotor
� Los servos se suelen alimentar a una tensión entre 4 y 6v.
� El cable de conexión es de tres hilos:rojo (+Vcc), negro(Gnd) y el de señal que puede ser blanco, amarillo o naranja.
� Para que el servo mantenga su posición tiene que estar alimentado y enviar, continuamente, el tren de pulsos adecuado a cada posición.
(c) Domingo Llorente 2010 5
Funcionamiento del servo
La frecuencia de los pulsos de control debe estar entre 50 y 100Hz, lo cual implica periodos de entre 10 y 20ms.
La duración del tiempo en alto suele estar entre 0.3 y 2.5ms
Relación Tiempo->Posición(2.5-0.5)/180.0=11.11us
Es decir, a partir de los 500uscada 11.11us el servo semueve un grado a laderecha.
(c) Domingo Llorente 2010 6
Pulsos de control del servo Hitec HS-300
1,2 ms
20 ms
20 ms
20 ms
0,3 ms
2,1 ms
hitecHS-300
hitecHS-300
hitecHS-300
ExtremoIzquierda
PosiciónCentral
ExtremoDerecha
0º
90º
180º
(c) Domingo Llorente 2010 7
Características del servo Hitec HS-422
Características: Dimensiones:
(c) Domingo Llorente 2010 8
Características del servo Futaba S3003
Dimensiones:
(c) Domingo Llorente 2010 9
Tabla de tiempos para servos Futaba
(c) Domingo Llorente 2010 10
Tabla de tiempos para servos Hitec
(c) Domingo Llorente 2010 11
Recomendaciones
� En un proyecto con control de motores es, muy recomendable, utilizar dos fuentes de alimentación independientes, una para la electrónica (alimentación del microcontroladory circuitos integrados) y otra para los motores. No olvides unir las masas de ambasfuentes.
� Cables de señal de servos demasiado largos pueden provocar movimientosinesperados (efecto antena del cable, interferencia con otros servos). Para evitarlo se pueden utilizar cables apantallados.
� Procura no forzar nunca un servo. Un servo en funcionamiento normal NO se debecalentar y NO debe de vibrar.
� Respeta siempre los tiempos que indica el fabricante en cuanto a refresco de la señalde posicionamiento.
(c) Domingo Llorente 2010 12
Simulación en Proteus (I)
� En Proteus el servomotor se llama “MOTOR-PWMSERVO” y se puede elegir como un componente más.
MOTOR-PWMSERVO
(c) Domingo Llorente 2010 13
Simulación en Proteus (II)
� El componente MOTOR-PWMSERVO” se puede editar para ajustar los parámetros al servo real que tengamos.
Tiempo máximo del Pulso en ms(pos=+90º)
Tiempo mínimo del Pulso en ms(pos=-90º)
(c) Domingo Llorente 2010 14
Ejemplo
Diseñar un programa que posicione un servo conectado en el pin RC1 en la posiciónde -90º si RA0=0 o en la de +90º si RA0=1. Mostrar mensajes en el LCD y utilizar la interrrupción del Timer 1 sin preescaler para generar los tiempos de control.
(c) Domingo Llorente 2010 15
Solución en CCS (I)
Comenzamos utilizando elasistente “PIC Wizard”
Luego hay que crear la carpeta para nuestro proyecto y dar un nombre al archivo con extensión .pjt
(c) Domingo Llorente 2010 16
Solución en CCS (II)
Elegir:Pic: PIC17F877AFrecuencia del oscilador: 4MhzFuses: Crystal osc <=4MhzMemoria de programa: No protegida
(c) Domingo Llorente 2010 17
Solución en CCS (III)
En la pestaña de “Interrups” marcar la casilla de “Timer 1 overflow”
(c) Domingo Llorente 2010 18
Solución en CCS (IV)
En la pestaña “Code”podemos ver el códigoque se añadirá en nuestroprograma.
(c) Domingo Llorente 2010 19
Solución en CCS (V)
En la pestaña de “Timers”configurar el TIMER 1 como temporizador sin preescaler.
(c) Domingo Llorente 2010 20
Solución en CCS (VI)
En la pestaña “Code”podemos ver el códigoque se añadirá en nuestroprograma.
(c) Domingo Llorente 2010 21
Solución en CCS (VII)
El compilador nos generael siguiente código
(c) Domingo Llorente 2010 22
Cabecera del programa con los Fuses y declaración de variables globales:
Solución en CCS (VIII)
(c) Domingo Llorente 2010 23
Solución en CCS (IX)
Una posiblefunción deInterrupción:
(c) Domingo Llorente 2010 24
El programa principal: