TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: johanchala en 27 de Abril de 2010, 14:00:39

Título: problema servomotor pic 18f4550
Publicado por: johanchala en 27 de Abril de 2010, 14:00:39
Buenas, soy nuevo en el foro, y pues tengo un problemita. lo que pasa es que genero mi señal cuadrada con fecuencia de 50 HZ y el ancho de pulso varia entyre 1 ms y 2 ms pero el servo siempre se mueve al tope y se queda ahi. si alguien me pudiera ayudar se lo agredeceria.

#include <18f4550.h>
#fuses HS,NOMCLR,PUT,NOWDT,NOPROTECT,BROWNOUT,NOLVP,NOCPD,NODEBUG,NOWRT
#use delay(clock=4000000)


void main(void){
   while(true){
      if(input(PIN_A0)){
         output_high(PIN_B0);
         delay_us(1500); //Teimpo en alto
         output_low(PIN_B0);
         delay_us(18500); //tiempo en bajo
      //1500+18500 = 20 ms = 50 hz;
               
     
      }
      if(input(PIN_A1)){
         output_high(PIN_B0);
         delay_us(1000);
         output_low(PIN_B0);
         delay_us(19000);
      }
      if(input(PIN_A2)){
         output_high(PIN_B0);
         delay_us(2000);
         output_low(PIN_B0);
         delay_us(18000);
      }
   }
}
Título: Re: problema servomotor pic 18f4550
Publicado por: migsantiago en 27 de Abril de 2010, 14:05:54
Hola, te paso unas sugerencias.

- Configura el PORTA como entradas digitales. Puedes hacerlo leyendo la hoja de características del PIC, sección I/O Ports.
- Creo que los tiempos de 1 a 2ms respecto a 20ms son muy cortos. Prueba con 10ms o algo parecido (hace mucho que no uso servos).
- Coloca capacitores de 0.1uF cerca de los pines Vdd y Vss del pic.
Título: Re: problema servomotor pic 18f4550
Publicado por: jhozate en 27 de Abril de 2010, 14:06:54
Cambia el Fuse HS por XT
HS--- cristales >= 20Mhz
XT--- Cristales =    4Mhz
Título: Re: problema servomotor pic 18f4550
Publicado por: johanchala en 27 de Abril de 2010, 14:11:12
Gracias jhozote y migsantiago, el problema del asunto es que corroboro la señal con un osciloscopio, el periodo y el ancho del pulso si corresponden a lo que programe lo que no entiendo es porque se mueve siempre hacia el tope, no me explico  :( ;
Título: Re: problema servomotor pic 18f4550
Publicado por: Diego E. en 27 de Abril de 2010, 14:23:19
Hola johanchala, a mi alguna vez me sucedió lo mismo yo lo estaba trabajando entre 0,3 ms y 2 ms con intervalos de 10 ms, lo que sucedía era producto del ruido que genera el servo, le puse un diodo 4007 en paralelo con el servo (inverso) y un diodo 4148 del pin de control a positivo (inverso) le adicioné un condensador de 10Uf en paralelo con el servo, con todo esto al final me funcionó correctamente.

saludos.
Título: Re: problema servomotor pic 18f4550
Publicado por: johanchala en 27 de Abril de 2010, 14:32:43
Gracias Diego E. lo intentare si alguein tiene otras ideas se los agredeceria :D
Título: Re: problema servomotor pic 18f4550
Publicado por: johanchala en 29 de Abril de 2010, 10:47:06
Bueno.. Les comento que pude arreglar el problema y para los que tenga el mismo problema la solucion es utilizar un transistor npn como switch, la señal del pic iria a la base del transistor, el colector va alimentado con la fuente del servo y del emisor sale la señal de control :D. Muchas gracias por sus aportes y por aca estare por alguna duda o aporte :D
Título: Re: problema servomotor pic 18f4550
Publicado por: AngelGris en 29 de Abril de 2010, 12:41:43
Es raro... Yo hice un encoder RC y decoder también. Del decoder saqué las señales directamente hacia los servos.

En www.e-radiocontrol.com.ar vas a encontrar mucha información respecto de las señales RC.