The DFT and very fine frequency resolution

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Hi all!

Not *exactly* an audio question, but I think it's related...

We are doing PMU (phasor measurement unit) research, where we want to measure the frequency of the outlet power (nominally 60Hz here in North America) to the accuracy of .001Hz (1 milliHz).

--> I am not exactly sure how to do this, without making a REALLY long FFT (more FFT sampling points means finer frequency bin resolution). Are there alternative techniques that can be used to get this kind of frequency resolution, without using 10's of thousands of samples?
 
I don't think so. The more accurate an answer one wants, the more information/data one needs.
You could time zero crossings, perhaps with less data points. But anything that changes the harmonic content of your signal, like ANY change in loading on the line, will introduce noise into your measurements. But you would have to do some math to figure out how many samples would be required under typical loading conditions.

A better way might be to get one of those ultra-stable signal sources(like DigiKey sells them with an accuracy of like 20ppb(that's parts-per-BILLION accuracy) for a couple hundred bucks. Divide it down to 60Hz, and then put that and the line into a phase detector or analog multiplier. And of course all this would have to be well-designed, low-noise circuitry so as to introduce minimal measurement noise.

And don't forget that the clock on your ADC has to have enough stability/accuracy to do this as well. A crystal oscillator with 50ppm frequency accuracy, which is probably what one would see in most computers, and/or more than about 10ppm of phase noise or short-term stability isn't enough to do it. Taking more and more samples can overcome noise in your system, improving the repeatability of your measurements. But the accuracy has to be there, no matter how many samples you take.

As mentioned above, a high quality frequency counter might be the way to go.
 
Last edited:
you can trade S/N and observation time - a high S/N measurement of a high S/N signal can be fit to a sine estimating amplitude, phase and frequency in shorter time than the N*T length DFT 1/(N*T) bin resolution

google: fast frequency estimation, Cramer-Rao
 
Last edited:
I've used two methods in my day job in the power industry:

An 8192 point FFT followed by a frequency estimation algorithm, which interpolates multiple FFT bins to give you an answer with much higher resolution than the bin width.

A digital PLL that locks a software "oscillator" to the mains frequency. The frequency that the oscillator ends up running at is your answer. If the PLL loop filter is set up correctly this can be quite accurate, but it works best with continuous real time data acquisition. This is basically a deluxe version of counting hundreds of zero crossings and averaging.

Bear in mind that the frequency of the mains changes by as much as 0.05Hz on a timescale of 10s of seconds to minutes, as the grid responds to changes in loading. (It's currently 49.941Hz here.) So you will get a different answer depending on how long your measurement takes. Time-frequency duality applies: if you want to know the frequency very accurately, it has to be an average over a long time. If you want to know what the frequency is right now, you must settle for a less accurate answer.
 
Last edited:
0.001Hz has a period of 16.66 microseconds. This is a HUGE span of time in today's terms.

Build a fast counter (and a slow one). A few MHz. Use a crystal clock with a varicap to make it pullable. Calibrate it. Make the slow counter trigger the fast counter's start and stop. Measure the period of (say) 60 cycles of 60Hz. Do the maths.

I wouldn't be surprised if you could get enough resolution from the math functions on a modern digital scope to get a direct reading.

As scopeboy says you can't expect the period to be very stable.

Ask him what he read his 49.941 on.
 
Hi,

I happen to have relatinoship at hbm's edrive department, they use very sophisticatedzero crossing detection/period measurement, most complexity of which lies in the ability to compensate dc offset on a period per period basis. This works well with the kind of accuracy target that you have.

Regards
 
For an FFT-style approach use a chirp Z transform, it allows you to produce what is in essence a zoomed FFT that lets you focus on whatever frequency range you wish with very high resolution. You can find it in Matlab (Chirp Z-transform - MATLAB czt - look at the 'narrow band section of a frequency response' example). There is a nice explanation of the CZT at A DSP algorithm for frequency analysis | Embedded

An alternative approach is to use a parametric analysis, there is pretty thorough coverage of that in this doctoral thesis: http://www.diva-portal.org/smash/get/diva2:9111/FULLTEXT01.pdf
 
Disabled Account
Joined 2012
You would normally use a very high quality frequency counter (hardware) to do this.

That is what i would do, also....... very easy and plenty of them available new or used at low cost. Used ones can be even more stable due to the 'aging' of crystal used in the time-base.

Counter.jpg



THx-RNMarsh
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.