TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado 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);
}
}
}
-
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.
-
Cambia el Fuse HS por XT
HS--- cristales >= 20Mhz
XT--- Cristales = 4Mhz
-
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 :( ;
-
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.
-
Gracias Diego E. lo intentare si alguein tiene otras ideas se los agredeceria :D
-
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
-
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.