Autor Tema: Estimador de Corriente  (Leído 2614 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Renatox_

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 541
    • máquinas cnc
Estimador de Corriente
« en: 31 de Octubre de 2008, 19:45:52 »
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:

Código: [Seleccionar]
.....
#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;
control de movimiento

Desconectado blackcat

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 600
Re: Estimador de Corriente
« Respuesta #1 en: 31 de Octubre de 2008, 20:32:03 »
Porque no manejas a (Ra+La/T) como una sola constante ... Si bien entiendo seria: (Ra+La/T) = 2.4 ...

Ademas creo que por aqui anda el error ... esta la siguiente línea:

Código: [Seleccionar]
vel=(int)((pos.act-pos.actp)*60/T);    // vel(mm/min)
... 60/T = 60 / 0.001 = 60000 luego multiplicado la diferencia entre la posicion actual y la pasada ...


luego la conviertes a INT ... pero INT solo esta definido entre 0 y 65536 ... si no tuvieramos signo ... con signo (como lo estas haciendo) seria -32768 a 32767 ...

Esto quiere decir que la diferencia entre la muestra actual y pasada tiene que ser por lo menos menor que 0.5 para que la conversión a INT no desborde ..

Cabe la posibilidad que esa multiplicación se desborde en algún momento ... creo que MPLAB no satura conversiones .. digamos ... si de una operacion en flotante resulte 100000 la conversion a INT no es posible y ocurre desbordamiento ....  creo que es mejor que todo lo dejes en FLOAT, operaciones tan largas y con muchas variables es mejor dejarlo todo en manos de metodos numericos de rango no determinable como es el FLOAT.

Ademas, ¿¿ Será necesario estimar la corriente ?? ... porque no mejor la mides ...

Saludos!
« Última modificación: 31 de Octubre de 2008, 22:36:32 por blackcat »
Control Automático, DSP & Microcontroladores

Desconectado Renatox_

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 541
    • máquinas cnc
Re: Estimador de Corriente
« Respuesta #2 en: 01 de Noviembre de 2008, 19:14:29 »
Gracias Blackat por los comentarios, el resultado si superara los +-32767 saturaria al dspic, pero las velocidades de mi sistema están por debajo de los 4000mm/min, es decir Vel es menor de +-4000 no llegaria a +-32767, de todas formas voy a tratarlo como flotante a ver como va.

Otra posibilidad de error que estaba pensando es en el encoder que esta referenciado a masa y no es diferencial como el 422.

Intenté medir la corriente con una resistencia en el osciloscopio vi la forma de onda correcta, pero al llevarla al dspic le entraban picos a este y la alarma saltaba a poca velocidad. Por el momento voy a usar el estimador, protege bien al drive pero a veces salta, eso creo, la corriente voy a medirla con un sensor de efecto hall.

Seguiré probando ya les contaré.

saludos.
control de movimiento

Desconectado blackcat

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 600
Re: Estimador de Corriente
« Respuesta #3 en: 02 de Noviembre de 2008, 01:13:04 »
Hola ...

Entiendo que estas midiendo velocidad con un encoder ... ahora POS.ACT es un flotante o un int? ... creo que es flotante ... cual es el rango de valores?

Es muy peligroso medir altas corrientes directamente ... ya tengo varios pics achicharronados por lo mismo  :D ... por ahi me encontre un integrado de efecto Hall que sirve para medir corriente:

http://media.digikey.com/pdf/Data%20Sheets/LEM%20USA%20PDFs/FHS%2040-P%20SP600.pdf

Nunca he usado uno de esos ... pero ahi me cuentas como te va si usas uno.  :o

Saludos!

Control Automático, DSP & Microcontroladores

Desconectado Renatox_

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 541
    • máquinas cnc
Re: Estimador de Corriente
« Respuesta #4 en: 04 de Noviembre de 2008, 14:20:44 »
Gracias por el dato del sensor de corriente lo voy a estudiar. Medir la corriente con una resistencia parece fácil pero no lo es. Los drives comerciales me parecen que no usan resistencia para medir corriente, por ejm GSK usa dos sensores de efecto hall.

pos.act es flotante. La diferencia entre (pos.act-pos.actp) es siempre menor que 0.08mm ya que la protección por error de posición esta en ese valor y no salta. Estoy probando otra ves el drive y le he quitado unos leds con su resistencia que estaba en paralelo al gate-source de cada mosfet, ya ha estado varias horas sin fallar, lo seguiré probando hoy.

saludos.
control de movimiento

Desconectado Renatox_

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 541
    • máquinas cnc
Re: Estimador de Corriente
« Respuesta #5 en: 01 de Diciembre de 2008, 03:31:48 »
Las operaciones matemáticas del dspic están trabajando muy bien no fallan, son lentas pero seguras y precisas. Era un problemita en el puente H.

saludos,

control de movimiento


 

anything