¿Es esto verdadero RMS?

3

Esta pregunta es acerca de cómo obtener una lectura de voltaje RMS real de un ADC de muestreo en ejecución. ¿Esto me da una verdadera lectura de RMS o dónde cometí un error?

Construya un búfer de anillo de un tamaño suficientemente grande y comience a escribir en él las lecturas de ADC. El RMS de la señal es aproximadamente el RMS de todos los números en ese búfer de anillo.

- EDIT -

¿O es una buena idea?

Tiene una variable, n , como promedio de cuadrados. Cada vez que aparece una nueva muestra \ $ k_i \ $ esto se calcula:

$$ n_ {i + 1} = \ frac {2n_i + k_i ^ 2} {2} $$

y RMS se calcula tomando la raíz cuadrada de este número. (Las raíces cuadradas son más caras que cuadradas, incluso en un Xeon de 12 GHz de 12 núcleos)

Aclaración

No estoy hablando de si el ADC es RMS o no, en realidad mi ADC captura valores instantáneos. Estoy hablando de cómo tomar este valor instantáneo y aplicarle un algoritmo, para aproximar una medición RMS.

Tampoco estoy hablando de programación integrada con recursos limitados. El sistema en cuestión, que no es relevante para esta pregunta, tiene un servidor poderoso en él y puede (y será) utilizado para procesar a la mayoría, si no a todos los números.

    
pregunta Maxthon Chan

4 respuestas

5

Una cosa importante a tener en cuenta es que la longitud de su búfer debe ser mucho mayor (en orden de decenas, cientos o más veces) que el período de la señal que desea medir, dependiendo de la precisión que desee lograr.

En esta respuesta no detallaré las matemáticas detrás de RMS, tengo la impresión de que el algoritmo en sí es claro, aunque la longitud del búfer puede presentar un efecto interesante.

Para tener una idea del error de medición que quiero analizar en esta respuesta, imagine que su búfer es relativamente corto, está lleno de muestras y su contenido (por el bien del argumento) es estático. Digamos que se ajusta un poco más de 1.25 veces en un ciclo completo:

Luegoimaginequecopiaelcontenidodelbúferasupropioextremodeformaindefinida.Laformadeondaqueobtieneseslaseñalquerealmenteestásmidiendo.

Observe que la escala x cambia entre las dos gráficas.

En otras palabras, usted quiere que su búfer sea mucho más grande que el período de la señal que está tratando de medir. De esa manera, el error será promedio.

    
respondido por el jippie
4
  

Esta pregunta es acerca de cómo obtener una lectura de voltaje RMS real de un   DAC de muestreo en ejecución

En primer lugar, estoy convencido de que te refieres a un ADC o un convertidor analógico a digital en lugar de un convertidor digital a analógico (DAC).

Entonces, tiene una serie de muestras que provienen del ADC y desea calcular RMS. En resumen: -

  1. Cuadrar cada muestra matemáticamente,
  2. Agregue un número de esas muestras cuadradas para obtener un número acumulado,
  3. Divida entre la cantidad de muestras que acumuló y luego
  4. Saca la raíz cuadrada de ese número acumulado.

Aquí hay una idea, para una señal de onda sinusoidal muestreada: -

Aquíestánlosvaloresalcuadrado:-

El valor acumulado es

0 + 0.146 + 0.5 + 0.854 + 1 + 0.854 + 0.5 + 0.146 + 0 + 0.146 + 0.5 + 0.854 + 1 + 0.854 + 0.5 + 0.146 = 8

La media de estos valores es 8/16 = 0.5

Y el valor RMS resultante es \ $ \ sqrt {0.5} \ $ = 0.707

Imágenes bonitas tomadas de aquí

Cosas interesantes a tener en cuenta: se usaron 16 muestras, pero si se tomaran 8 muestras todavía obtendría el mismo resultado de RMS. Por ejemplo: -

0 + 0.146 + 0.5 + 0.854 + 1 + 0.854 + 0.5 + 0.146 = 4 y con solo 8 muestras la media sigue siendo 0.5. El punto aquí es que almacenar un montón de números y luego repetir ese conjunto de números no tiene ningún beneficio.

Para esa forma de onda podría tomar 8 muestras consecutivas como las siguientes: -

1 + 0.854 + 0.5 + 0.146 + 0 + 0.146 + 0.5 + 0.854 = 4 es decir, el mismo resultado. 0.5 + 0.854 + 1 + 0.854 + 0.5 + 0.146 + 0 + 0.146 = 4 ídem

Esto funciona porque la media de la señal original no contenía dc offset y el período acumulado durante el cual se tomaron las muestras (8 muestras en este caso) fue suficiente para capturar completamente la "esencia" de la onda sinusoidal. Menos de 8 y tendría errores.

Esto le informa que para calcular RMS debe tomar suficientes muestras consecutivas para satisfacer la parte de frecuencia más baja del espectro de la señal original.

Aún tiene que obedecer a nyquist para los componentes de mayor frecuencia y, por ejemplo, muestrear una corriente de alimentación de CA requiere miles de muestras por segundo para obtener un verdadero RMS / poder razonablemente preciso.

    
respondido por el Andy aka
1

Si el cuadrado de su estimación actual del valor RMS es \ $ s_i ^ 2 \ $ (con índice de tiempo \ $ i \ $), y si \ $ x_i \ $ es su señal de entrada actual, entonces con un búfer longitud de \ $ N \ $ muestras

$$ s_i ^ 2 = \ frac {1} {N} \ sum_ {k = i-N + 1} ^ ix_k ^ 2 = \ frac {1} {N} \ sum_ {k = iN} ^ { i-1} x_k ^ 2 + \ frac {1} {N} \ left (x_i ^ 2-x_ {iN} ^ 2 \ right) = s_ {i-1} ^ 2 + \ frac {1} {N} \ left (x_i ^ 2-x_ {iN} ^ 2 \ right) \ tag {1} $$

ec. (1) define una recursión para \ $ s_i ^ 2 \ $ computada a partir de la estimación RMS al cuadrado anterior \ $ s_ {i-1} ^ 2 \ $, el valor de entrada actual \ $ x_i \ $ y el último valor en el búfer \ $ x_ {iN} \ $. Esta es una implementación recursiva de un promedio móvil aplicado a los cuadrados de la señal de entrada.

Si desea deshacerse del búfer, es posible que también desee considerar un promedio ponderado exponencial definido por

$$ s_i ^ 2 = \ alpha x_i ^ 2 + (1- \ alpha) s_ {i-1} ^ 2 \ tag {2} $$

donde \ $ 0 < \ alpha < 1 \ $ define la memoria efectiva de la recursión. Para \ $ \ alpha \ $ cerca de \ $ 1 \ $, la memoria es muy corta, mientras que para \ $ \ alpha \ $ cerca de \ $ 0 \ $ los valores de entrada pasados todavía tienen un efecto relativamente grande en la estimación actual de RMS. Tenga en cuenta que en la ec. (2) solo necesita la muestra de entrada actual \ $ x_i \ $ para actualizar su estimación, y no la muestra de entrada \ $ x_ {i-N} \ $ como es el caso con el promedio móvil de la ecuación. (1)

    
respondido por el Matt L.
1

De una forma u otra, usted desea filtrar las lecturas al cuadrado con un paso bajo, luego tomar la raíz cuadrada de eso cada vez que desee el último valor RMS.

Su primer método "Construya un búfer de anillo de un tamaño suficientemente grande y comience a escribir en él lecturas ADC. El RMS de la señal es aproximadamente el RMS de todos los números en ese búfer de anillo" won ' t trabajo No puede realizar RMS en lecturas individuales, luego el paso bajo los filtra para obtener el RMS de paso bajo filtrado. Tenga en cuenta que RMS de una sola lectura es solo el valor absoluto de esa lectura. Dicho de otra manera, las lecturas de RMS de filtrado de paso bajo no le permiten obtener otra lectura de RMS con menos ancho de banda. El resultado ya no es RMS. Tienes que pasar el filtro de paso bajo en el dominio de lectura al cuadrado.

Para obtener el RMS de una secuencia de lectura:

  1. Cuadrar cada lectura.

  2. Paso bajo filtra el resultado de # 1.

  3. Saca la raíz cuadrada del resultado del # 2.

Tenga en cuenta que toda esta conversación sobre los búferes es solo una forma particular de realizar un filtro de paso bajo. No necesitas un búfer para realizar un LPF. Podría, por ejemplo, usar uno o más filtros de un solo polo, tales como:

FILT < - FILT + FF (NUEVO - FILT)

Lo que se ha discutido muchas veces aquí anteriormente, como aquí .

El filtro es un compromiso entre responder a un nuevo nivel de RMS lo suficientemente rápido, pero no tan rápido como para responder a los semiciclos individuales de la forma de onda medida. Para un seno, el RMS va a cero dos veces por ciclo de línea.

Por ejemplo, supongamos que desea crear un medidor de voltaje RMS para una potencia de línea de 50 o 60 Hz. Los valores instantáneos subirán y bajarán a tan solo 100 Hz solo con la forma de onda de potencia. Sin embargo, esto sigue siendo rápido en comparación con la escala humana y la rapidez con la que un medidor debería responder. En ese caso, puede usar dos filtros como el de arriba en cascada, cada uno configurado a 4 Hz de reducción. 100 Hz se atenuaría entonces por un factor de 625 o 56 dB. Eso admitiría un valor RMS con una precisión de 9 bits, o superior al 0.2%.

No importa lo que hagas, no puedes hacer que la raíz cuadrada desaparezca la lectura final.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas