Hola amigos como están. Tengo un problema con mi driver cada dos horas de funcionamiento salta la alarma, a veces la alarma de error posición a veces la de sobrecorriente que es un estimador. Decidí desactivar la alarma de sobrecorriente y el driver esta en su segundo dia sin fallar, solo la alarma de error de posición detectaría una alteración.
Mi estimador de corriente viene de la ecuación de armadura de un motor DC:
Vom=Ra*Ia+La*(Ia-Iap)/T+Kv*V;
donde:
Vom=voltaje de salida al motor.
Ra, Ia=Resistencia e Inductancia de la armadura.
Iap, Ia=Corrientes en el estado pasado y actual.
Kv=Constante contraelectromotriz
V=velocidad.
T=periodo
Entonces en el dspic tengo esto:
.....
#define T 0.001
#define Ra 1.2
#define La 1.2e-3
#define Kv 0.6313
float ILim=50;
......
......
// estimador de CORRIENTE (A)
vel=(int)((pos.act-pos.actp)*60/T); // vel(mm/min)
pos.Ia=La/(T*Ra+La)*pos.Iap+1/(Ra+La/T)*Vom-1/(Ra+La/T)*Kv*vel*0.020943;
pos.Iap=pos.Ia;
pos.actp=pos.act;
// protección contra sobrecorriente
if ((pos.Ia>ILim) | (pos.Ia<-ILim))
{
_LATD2=1;
_LATD0=1;
enable();
}
......
......
Alguno de ustedes ha tenido problemas con divisiones de este tipo, talves el denominador (Ra+La/T) falle en algun momento y dispare a la corriente o tal ves el estimador me modifique alguna variable, no lo se.
Lo he simulado en el mplabsim para varios puntos y los calcula bien, tambien he llevado la grafica al labview y la curva se ve como debe ser. Los saltos de sobrecorriente han ocurrido cuando el motor está en marcha libre, sin cambios de giro y sin cargas fuertes.
saludos;