Electrical – How to ‘average’ a sine wave of RMS values

acrmssinewave

Lock-in amplifiers (Stanford Research Systems 830) display sine wave signals in RMS values SR830 Manual (page 3-3). One can use the internal buffer to rapidly measure a signal, storing up to 16000 points with a measurement rate of 512Hz. These points are RMS values of the original signal, if I'm not mistaken, and often slowly oscillate (due to a small frequency component not completely filtered out by the low pass filter). How does one 'average' these buffered points?

I'm not sure it makes sense to calculate the RMS value of a wave build up from RMS values, but taking the simple average of this wave also feels incorrect.

Thanks in advance!

Best Answer

First of all, you should rephrase your question like: How to get an average value from measurings. The term RMS makes just confusion as it makes no difference if you want to get an average of peak, rms,...whtever values. Simplest method is a moving avearage filter, you need a circular buffer FIFO where you fill the measurings. At each new input, you discard the oldest and compute the new average recursively. https://en.wikipedia.org/wiki/Moving_average

Average = Average + NewestValue/n - OldestValue/n; purge OldestValue from FIFO and insert NewestValue in.

NewValue: xyz;
Average: xyz or float or double;
FIFO: array[0..63] of xyz; //curcular buffer of 64 elements
Pointer: int;

//at init:
FIFO[from 0 to 63]=NewValue;
Average = NewValue;
Pointer = 0;

//at each measuring
Average = Average + NewValue/64 - FIFO[Pointer]/64;
FIFO[Pointer] = NewValue; // purge last and overwrite with new
Pointer= (Pointer + 1) AND 63; //increment pointer with roll over, circular buffer