Posted Fri, 22 Dec 2023 18:41:55 GMT by Sotnikov, Stanislav
Setting the NPLC value to 5 or greater on either DMM6500 or DMM7510 results in the effective sampling period to be twice the expected value. The effective sampling period is inferred from the relative timestamps in the DMM buffer. I looked at data collected with various NPLC settings, and here is what I got (power line frequency is 60Hz):
 
NPLC Sampling period (ms) Sampling frequency (Hz)
0.1 0.167 600
1 16.67 60
2 33.33 30
4 66.67 15
5 166.67 ? 6 ?
10 333.33 ? 3 ?
Posted Thu, 04 Jan 2024 15:35:51 GMT by Odhner, Bradley
Hi there, I'm guessing autozero was on?

The reference measurements will insert themselves wherever the unit decides, so you should always turn off autozero for tight timing control (and manually take them with dmm.measure.autozero.once() ).
Posted Thu, 04 Jan 2024 15:40:52 GMT by Odhner, Bradley

Some TSP code and results to check this:

dmm.measure.autozero.enable = dmm.OFF
dmm.measure.count = 2
for i = 1, 10, 1 do
    dmm.measure.nplc = i
    dmm.measure.read()

    diff = defbuffer1.relativetimestamps[defbuffer1.n] - defbuffer1.relativetimestamps[defbuffer1.n-1]
    diff = diff*1000
    print("sample period ="..16.67*i.." , actual time = "..diff.."nplc = "..i)
end

sample period =16.67 , actual time =16.706666 nplc =1
sample period =33.34 , actual time =33.368485 nplc =2
sample period =50.01 , actual time =50.038273 nplc =3
sample period =66.68 , actual time =66.703666 nplc =4
sample period =83.35 , actual time =83.374394 nplc =5
sample period =100.02 , actual time =100.037848 nplc =6
sample period =116.69 , actual time =116.704788 nplc =7
sample period =133.36 , actual time =133.37103 nplc =8
sample period =150.03 , actual time =150.036636 nplc =9
sample period =166.7 , actual time =166.704273 nplc =10

dmm.measure.autozero.enable = dmm.ON
dmm.measure.count = 2
for i = 1, 10, 1 do
    dmm.measure.nplc = i
    dmm.measure.read()

    diff = defbuffer1.relativetimestamps[defbuffer1.n] - defbuffer1.relativetimestamps[defbuffer1.n-1]
    diff = diff*1000
    print("sample period ="..16.67*i.." , actual time = "..diff.."nplc = "..i)
end

sample period =16.67 , actual time =16.707213 nplc =1
sample period =33.34 , actual time =33.373909 nplc =2
sample period =50.01 , actual time =50.040182 nplc =3
sample period =66.68 , actual time =66.704819 nplc =4
sample period =83.35 , actual time =168.76 nplc =5
sample period =100.02 , actual time =202.091 nplc =6
sample period =116.69 , actual time =235.426 nplc =7
sample period =133.36 , actual time =268.759 nplc =8
sample period =150.03 , actual time =302.093 nplc =9
sample period =166.7 , actual time =335.427 nplc =10

Posted Thu, 04 Jan 2024 17:33:17 GMT by Sotnikov, Stanislav
Just curious, is there any reasoning why autozero-ing takes up half of the sampling rate when `nplc >= 5`?

I would think from looking at the data that when `nplc < 5`, autozeroing causes small periodic gaps in timing. These timing gaps can be clearly seen on the attached plot (nplc is 1). the behavior at other `nplc < 5` values is consistently similar, and the actual sample timing is near the expected value. But when nplc is 5 and above autozero-ing suddenly takes over half of the sampling rate?

 
Posted Thu, 04 Jan 2024 18:33:46 GMT by Odhner, Bradley

Autozero measures at the same nplc as the measurement it's taking a reference for, so I would expect it to ~double the reading time of measurement.

There are a number of things that dictate when autozero measurements happen, but larger nplc will generally cause them to happen more often, perhaps even every measurement. Larger nplc reduce external error factors so the DMM attempts to reduce internal error factors by autozero-ing more often. Also, autozero measurements are considered valid for some amount of time independent of the nplc setting, so larger nplc will burn through that valid time after fewer readings. Temperature is another factor and autozero frequency can be impacted by the system uptime.

You must be signed in to post in this forum.