Autor Tema: SERVO A 20MHZ  (Leído 4361 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado fredylievano

  • PIC10
  • *
  • Mensajes: 6
SERVO A 20MHZ
« en: 20 de Febrero de 2007, 22:25:08 »
HOLA A TODOS , ME ENCUENTRO DESARROLLANDO UN PROYECTO EN DONDE DEBO ADQUIRIR DATOS POR UN CONVERZOR ANALOGO DIGITAL Y APARTIR DE LOS MISMOS DEBO CONTROLAR UN SERVO , MI PROBLEMA ES QUE ESA ADQUISICION DEBE HACERCE A 20MHZ Y PARA CONTROLAR LOS SERVO DEBO GENERAR UNA FRECUENCIA DE 50HZ DEBIDO A QUE TAMBIEN DEBO USAR UNA LCD NO PUEDO GENERAR LOS 50HZ SOLO PRENDIENDO Y APAGANDO UN PIN DEL INTEGRADO , ADEMAS QUE DEBO CONTROLAR LOS 2 SERVOS A LA VEZ, PARA ESO HE CONCLUIDO QUE DEBO USAR EL TIMER DEL MICRO  PERO MI PROBLEA ES QUE CON EL CRISTAL DE 20MHZ NO HE PODIDO GENERAR ESA FRECUENCIA DE 50HZ , LES AGRADECERIA CUALQUIER AYUDA EN LA CONFIGURACION DEL TIMER
ANEXO MI CODIGO POR SI ALGUIEN TIENE OBSERVACIONES MUCHAS GRACIAS


include <16F873a.H>
#DEVICE ADC=10
#fuses hs,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP
#use Delay(Clock=20000000)
#include <lcd.c>

#use fast_io(B)
#byte PORTB=6

main()
{


  int val,i;
  float val2;

    lcd_init();

    setup_ccp1(CCP_PWM);               // Configura CCP1-2 como PWM :-/ :-/
    setup_timer_2(T2_DIV_BY_4,255,1);
    setup_ccp2(CCP_PWM);
    enable_interrupts(INT_TIMER2);
    enable_interrupts(GLOBAL);
    setup_adc(adc_clock_div_32);              // Selecciona Reloj
   setup_adc_ports(RA0_RA1_ANALOG_RA3_REF);

    while(1)
    {
     set_adc_channel( 0 );
     delay_us(10);
     val=read_adc();
     val=val2/5  ;
     set_pwm2_duty(val);               
     printf(lcd_putc,"\fV= %3.4i UNO\n",val);

     set_adc_channel( 1 );
     delay_us(10);
     val2=read_adc();
     set_pwm1_duty(val2);   
     printf(lcd_putc,"V= %3.4f DOS\n",val2);

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: SERVO A 20MHZ
« Respuesta #1 en: 21 de Febrero de 2007, 02:48:53 »
Con un cristal de 20MHz no podrás hacer una frecuencia tan lenta. O lo haces metiendo otro cristal para el timer, o vía software.

Desconectado fredylievano

  • PIC10
  • *
  • Mensajes: 6
Re: SERVO A 20MHZ
« Respuesta #2 en: 21 de Febrero de 2007, 17:25:21 »
muchas gracias por tu respuesta pero me surgien algunas dudas
con que cristal podria haciendo manteniendo el maximo posible de velocidad de procesamiento ?
como lo hacen ellos ? http://home.comcast.net/~botronics/balibot.html porque ahy trabajan 2 servos y un cristal de 20
gracias por cualquier colaboracion

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: SERVO A 20MHZ
« Respuesta #3 en: 21 de Febrero de 2007, 18:33:01 »
¿Y estás seguro que utilizan frecuencia de 50Hz?

Desconectado reiniertl

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1187
Re: SERVO A 20MHZ
« Respuesta #4 en: 21 de Febrero de 2007, 18:52:33 »
Citar
MI PROBLEMA ES QUE ESA ADQUISICION DEBE HACERCE A 20MHZ Y PARA CONTROLAR LOS SERVO DEBO GENERAR UNA FRECUENCIA DE 50HZ DEBIDO A QUE TAMBIEN DEBO USAR UNA LCD NO PUEDO GENERAR LOS 50HZ SOLO PRENDIENDO Y APAGANDO UN PIN DEL INTEGRADO

No entiendo bien el propósito de las letras que he resaltado en negritas. Realmente no veo el problema de cambiar el estado de uno de los pines del uC, si lo que tienes es que generar un tren de pulsos de 50Hz con ciclo útil del 50%, uno de los métodos es utilizar un temporizador para que te interrumpa cada cierto período y con unos contadores llevar esa frecuencia, cada vez que el contador llegue a un valor complementas el estado del pin y ya está.

Ahora si lo que tienes es que generar una señal con 50Hz de frecuencia pero con ciclo útil variable (modución de ancho de pulso), entonces te recomiendo que estudies bien el módulo PWM, o busques una forma de emularlo. La frecuencia que tienes que generar es bastanta baja con respecto a la del oscilador del uC, así que lo que quieres hacer es casi un reto, pero no es imposible. Te recomiendo que nos expliques con más detalle cómo debe ser esa señal de 50Hz para poder aportarte más.

Saludos Reinier

Desconectado fredylievano

  • PIC10
  • *
  • Mensajes: 6
Re: SERVO A 20MHZ
« Respuesta #5 en: 22 de Febrero de 2007, 00:11:23 »
efectivamente busco controlar el modulo PWM debido a que necesito variar el ancho del la parte util del ciclo (DUTY) , no uso una secuencia de haga esto mediante delays debido a que cuando dejo de mandar la frecuencia a los servos estos pierden la fuerza y cambian de ubicacion  ademas que el incurrir en estos me ocacionaria demoras en la adquisicion de datos cosa que es vital en el sistema que estoy desarrollando .
comprendoque con el modulo pwm el timer es configurado para generar entrar en un ciclo de conteo  y cuando este llega a su nivel maximo activa una interrupcion y por eso.
quiero aclarar que aunque necesito variar el ciclo util de la frecuencia no se los valores que entran en la funcion duty no se de que tipo son hasta que nuemro van
tambien segun  entiendo la frecuencia generada sigue la siguiente ecuacion  4*(diviciones del timer) *1/frecuencia del cristal * (#+1)  donde #+1 es hasta donde cuenta el timer pero aun asi no entiendo si la respuestade esta ecuacion es en frecuencia o en segundos
hoy en la universidad donde estudio logre obtener una frecuencia de 500hz  usando
setup_timer_2(T2_DIV_BY_16,1249,1);   
no se que hago mal? agradeciera cualquier colaboracion y correccion sobre mis conceptos
GRACIAS!!!

Desconectado fredylievano

  • PIC10
  • *
  • Mensajes: 6
Re: SERVO A 20MHZ
« Respuesta #6 en: 22 de Febrero de 2007, 00:22:25 »
¿Y estás seguro que utilizan frecuencia de 50Hz?

MUY BUEN PUNTO NOCTURNO AUQNUE TRABAJAN CON UN CRISTAL DE 20MHZ NO DICE QUE USEN 5OHZ PARA MANEJAR LOS SERVOS
MIRANDO  EN http://www.x-robotics.com/motorizacion.htm ENCUENTRO QUE LA FRECUENCIA IDEAL DE TRABAJO DE LOS SERVOS ES 50HZ
PERO ESO NO SIGNIFICA QUE SEA LA UNICA
HOY CUANDO LOGRE OBTENER 500H AUNQUE LOS SERVOS NO ERAN CONTOLABLES DE MODO ACPTABLE PARA EL PROYECTO SI MEJORO MUCHO SU RESPUESTA
ASI QUE ESTOY PENSANDO ENTRE MENOR SEA LA FRECUENCIA MEJOR VA A SER LA RESPUESTADE LOS MISMOS
CUALQUIER AYUDA  SERIA BIEN RECIBIDA !! GRACIAS

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: SERVO A 20MHZ
« Respuesta #7 en: 22 de Febrero de 2007, 02:55:06 »
Lo digo porque en muchas ocasiones a los servos se les quita la electrónica para utilizarlos como simples motores DC con reductora, en cuyo caso funcionan con la frecuencia que tú quieras.
No he mirado ese proyecto a fondo, pero fácilmente podría ser así.

Desconectado fredylievano

  • PIC10
  • *
  • Mensajes: 6
Re: SERVO A 20MHZ
« Respuesta #8 en: 22 de Febrero de 2007, 20:28:58 »
Lo digo porque en muchas ocasiones a los servos se les quita la electrónica para utilizarlos como simples motores DC con reductora, en cuyo caso funcionan con la frecuencia que tú quieras.
No he mirado ese proyecto a fondo, pero fácilmente podría ser así.
EL PROBLEMA ES QUE NECESITO MANEJAR ANGULOS BASTANTE PEQUENOS Y ES EN ESOS MOMENTOS EN DONDE EL PID INTERNO DEL  SERVO SE HACE NECESARIO
GRACIAS!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: SERVO A 20MHZ
« Respuesta #9 en: 23 de Febrero de 2007, 02:46:52 »
No veo ningún problema en utilizar PWM para hacer un ajuste fino, tiene bastante resolución y podrías implementar el PID en el PIC.
No obstante, también puedes optar por entre generar la frecuencia lenta por software, con la ayuda de un timer.

Desconectado fredylievano

  • PIC10
  • *
  • Mensajes: 6
Re: SERVO A 20MHZ
« Respuesta #10 en: 23 de Febrero de 2007, 16:19:12 »
lo que busco seria generar la frecuencia con el timer , me podriasexplicar como puedo hacer eso