Daqarta
Data AcQuisition And Real-Time Analysis
Scope - Spectrum - Spectrogram - Signal Generator
Software for Windows  The following is from the Daqarta Help system:

# Voltmeter RMS

Controls: Options >> Voltmeter >> RMS
Macro: VoltMode=RMS

The Voltmeter RMS option computes the true Root Mean Square value of the waveform, over an integer number of waveform cycles. RMS is computed by taking the square of each data point, summing all the squares together, dividing by the number of data points, and then taking the square root of the result.

Note that this true RMS method responds to DC, unlike many conventional voltmeters (even some that claim 'True RMS'). This is important if you are using the DaquinOscope macro mini-app that utilizes an inexpensive Arduino board for data acquisition. It only measures DC, but you can use it with a simple AC-to-DC Input Level Shifter and Limiter that will shift AC signals in the +/-2.5 V range (such as the output of a sound card running the Daqarta Generator) up to the 0-5 VDC range of the Arduino. However the Voltmeter does not remove that added DC, so the RMS value will not reflect that of the original AC source.

The RMS computation assumes that enough data points are included to get a good representation of the average value of the signal. For low-frequency repetitive waveforms, highest accuracy is obtained when the computation includes an integer number of cycles. In order to obtain this, the trace must be Triggered and the 1024 trace samples must include at least one full cycle of the waveform. The lowest frequency you can measure this way is thus the sample rate divided by 1024:

``` 96000    93.750  Hz
48000    46.875
44100    43.066
22050    21.533
11025    10.767
```

For still-lower frequencies, all 1024 samples are used and the reported value may fluctuate over time, as the readout shows the average value for any given 1024 samples.

All 1024 samples are also used if Trigger is off. Since there will not in general be an integer number of cycles, the accuracy of the reading may be reduced for low frequencies. Note that for a symmetrical wave, an integer number of half-cycles is as good as an integer number of cycles for ultimate accuracy. The worst case, assuming more than one cycle is present, is when there are 1.25 cycles included; the instantaneous error may be several percent. However, the displayed value is further smoothed using the same time constant (TC) as for trace cursors, so the reading will usually quickly settle down to an error of less than one percent using the default TC of 5. You can increase the effective averaging time by increasing the TC.

As the signal frequency increases, the error due to non-integer cycles diminishes because any fractional cycle is a smaller part of the total.

Random noise measurements should always be made with Trigger off.

The RMS option can be used with file data, but since there is no Trigger available for single-trace files, only long (DDisk) files can use Trigger to get the most accurate reading... even though only waveforms that fit into 1024 samples will be able to take advantage of this.

Note that the RMS Voltmeter option is essentially the same process as the Sigma cursor readout option applied to the waveform, but RMS Voltmeter uses Trigger information instead of manual cursor positions to automatically set the optimal summation region.

For signal or noise bursts, note that the true RMS value (effective heating energy) must consider the overall cycle time of the burst, including the dead time between bursts. For burst cycles that are shorter than 1024 samples, the RMS reading will be correct because every calculation will include at least one full cycle. That will be true whether Trigger is active or not.

However, for longer bursts or longer cycle times, you will need to turn Trigger off and rely upon the averaging effect of the Voltmeter Time Constant to get the true RMS value. This depends upon bursts falling randomly within the 1024-sample data set of each update; some updates may see only the On portion of the burst, and some may see only the Off portion, but the average of many updates should yield the true RMS value.

Macro Notes:

VoltMode=RMS or VoltMode=0 sets the Voltmeter to RMS mode. You can use either mnemonic names or numeric values (or variables or expressions) for setting, reading, or IF testing:

```    0 = RMS
1 = Peak
2 = Pos
3 = Neg
4 = dB
```

Note that if you use a name instead of a value in an IF test, it must be in quotes: IF.VoltMode="RMS".

Posn?S is a read-only macro that reports the samples used for RMS measurements. Note that this value may include a fractional part due to interpolation to find the effective (fractional) sample number where the signal would have exactly hit the Trigger Level between integer sample numbers. The value is rounded off by the Voltmeter to get the actual number of samples to be included in the computation.

Note that this value may be read even if the Voltmeter is not active, or is active but using some other mode. A macro can use this to find the waveform-synchronous RMS value for any channel, even a channel other than the triggered channel, as long as it is correlated with the triggered channel. This is useful for RMS measurements of input-channel responses to output-channel driving signals, where the response may include noise or interference that would cause triggering difficulties. Instead, you trigger on the "clean" output channel and measure on the "dirty" response channel.

For example, assuming the trigger parameters have been set for the desired output channel, and you want to measure the response on Left In (channel 0), you could use:

```Buf5="<=W0"            ;Copy Left In to Buf5 (arbitrary)
Ch=5                   ;Set Buf5 channel select for BwSig()
V=BwSig(0,Posn?S-1)    ;Sigma function returns V = RMS
```

Notice that the BwSig Sigma function includes Posn?S samples (0 to Posn?S-1), but doesn't actually care if the 0th sample was the first sample in a waveform cycle; as long as it includes an integer number of cycles, and the waveform is repetitive, it can start on any point in the waveform cycle.

Posn?S is used by the _Multi_Mtr_Task of the Multiple Meters mini-app for RMS readings in Main Trig Sync mode. 