Autor Tema: Calcular RMS por software  (Leído 4892 veces)

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

Conectado Eduardo2

  • PIC24F
  • *****
  • Mensajes: 947
Re:Calcular RMS por software
« Respuesta #15 en: 26 de Enero de 2019, 08:52:54 »
....
Otra cosa que acabo de ver, es conveniente que el periodo de cálculo sea múltiplo del periodo de red.

Mas que conveniente, es indispensable.

Calculando el promedio con una ventana múltiplo del intervalo el resultado es exacto.  Cuando no lo sea, habrá una oscilación en el resultado dependiente de la fase donde comenzaron las lecturas, mas baja cuanto mayor sea el tiempo de lecturas.

Si se lo piensa solo para 50Hz, cualquier ventana de 20ms,40ms,60ms etc  será exacta.  Pero si se se lo piensa para 50/60Hz habrá que usar de 300ms,600ms..etc.
Y si se piensa por ejemplo en la salida de un grupo electrógeno, cuya frecuencia es solo cercana 50Hz exacta y encima variable segun la carga. Y mas cuanto mas viejo es el grupo --> Hay que usar un promedio ponderado (lo que hace un filtro).  La contra respecto a la suma simple es que debe usarse punto flotante o tunear las operaciones para minimizar el error en punto fijo.

Desconectado Robert76

  • PIC24F
  • *****
  • Mensajes: 562
Re:Calcular RMS por software
« Respuesta #16 en: 26 de Enero de 2019, 09:34:38 »
Viendo el cálculo que proporciona Picuino, en cuánto a la variable RMS, si el ADC captura a 8 bits, pues NO se podrá tomar más de una muestra, ya que usando variables a 16 bits, tiende a  desbordarse con una 2da. muestra, al sumar RMS a todo lo anterior.

Me refiero a ésta parte "RMS = RMS + ADC * ADC"

« Última modificación: 26 de Enero de 2019, 09:42:06 por Robert76 »

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:Calcular RMS por software
« Respuesta #17 en: 26 de Enero de 2019, 10:04:57 »
Se puede hacer también una media móvil rápida con números enteros. Pero el error será de 1% para un periodo de respuesta de 2 segundos, es poca precisión para tanto tiempo.

La solución de compromiso, un poco más compleja, sería tomar unas 128 muestras por ciclo (cada 20ms) y calcular el valor RMS de ese ciclo. Se puede hacer con la variable Muestras de un byte y la variable RMS como entero largo de 32 bits. No habrá desbordamiento ni siquiera con un ADC de 12 bits. La multiplicación se puede hacer en ensamblador para optimizar, ya que los dos valores a multiplicar son de 12 bits y el resultado de la multiplicación es de 24 bits. En caso de hacer la multiplicación en c sin optimizar se pueden utilizar enteros largos de 32bits.

A continuación haría una media móvil de los valores RMS por ciclo calculados anteriormente. El error será pequeño y la respuesta rápida.

Habría que hacer algo semejante con el valor de DC, para restarlo del resultado.

Un saludo.
« Última modificación: 26 de Enero de 2019, 10:07:12 por Picuino »

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:Calcular RMS por software
« Respuesta #18 en: 26 de Enero de 2019, 10:08:18 »
Pero lo anterior es demasiado complejo para lo que quiere Holgorio. Lo mejor es seguir el algoritmo que comenté al principio.


 

anything