Hola a todos:
Llevo ya varios días trabajando con un PIC16f818 para realizar un controlador de tensión gracias a PWM.
Básicamente el circuito tiene que fijar una tensión de salida (variable) independiente de la carga. Para ello se utiliza un control PWM y se realimenta la tensión de salida para realizar los campios en el duty del PWM.
Y mi problema es el siguiente:
Al cambiar el duty muchas veces el programa se pierde e incluso "sale" del bucle while(true)
Lo he depurado lo siguiente como para saber que el problema está al cambiar el duty del PWM.
Os dejo la parte del codigo del bucle de control a ver si podis decirme algo:
set_pwm1_duty(ciclopositivo);
while (1)
{
taux = 0;
for (i=0 ; i<4; i++)
{
taux += (int16) (read_adc()>>6);
delay_us(40);
}
tension = taux>>2; //Se realiza una media de la tension (filtro paso bajo) para evitar picos
if ((tension <= (tref - HYS))&&(ciclopositivo < DUTYMAX))
{
ciclopositivo++;
set_pwm1_duty(ciclopositivo);
}
else if ((tension >= (tref + HYS )) && (ciclopositivo != 0))
{
ciclopositivo--;
set_pwm1_duty(ciclopositivo);
}
delay_ms(400); //Retardo para antes de volver a controlar la salida
}
Muchas gracias por todo.
Salu2