Hola amigos,
Sigo teniendo problemas. No encuentro donde esta el error. Voy a ser lo mas explicito posible:
El motor tiene el sensor de disparo unos 20º antes del pms. Yo quiero lograr que el avance sea antes de 20º, por ejemplo, 30º.
Para ello, lo que hago es: Cuando se produce la interrupcion externa, miro el tiempo del timer1. Con eso, saco la frecuencia para usarla en el calculo del retraso de la chispa. Ese calculo es: esperar casi una vuelta completa y disparar la chispa unos 10 grados antes que se produzca la nueva interrupcion, que en ese caso seria 30º antes del pms.
Por ejemplo: a 6000 rpm, el tiempo en en dar una vuelta es 10000 us. Entonces la ecuacion de retraso calcula 9150 us: 9150/10000*360= aprox 30 grados. Tiene que esperar 9150 us para producir la chispa a 30 grados
EN la teoria, todo bien.
En la practica, no se mantiene a 30º, sino que al acelerar el motor atrasa. Dentro de la interrupcion, hago el calculo del valor "retaso". Ese valor lo uso en el main para generar la chispa:
WHILE (TRUE)
{
output_high(PIN_A0);
delay_us(100);
output_low (PIN_A0);
while(get_timer1()>retraso);
}
Yo creo que mi problema esta en el momento de esperar ese retraso.
Espero que me ayuden a encontrar el problema porque yo se poco de programacion, y el que me ayuda sabe programar C pero no tiene mucha experiencia en PIC. Practicamente estamos aprendiendo con este proyecto.
Saludos y gracias