I’m developing a fast battery charger and to check whether it meet the EMC limits for harmonic currents, I need to analyze the spectrum with FFT analysis. To do so, I had to find out how it works on my scope and to check if what I'm doing is correct. Strangely enough, I didn't find what I was looking for on the internet, that is why I wrote this article.

Rigol MSO5104 FFT analysis test
Rigol MSO5104 FFT analysis test

Take a square wave as exercise for fast Fourier spectrum analysis

Understanding spectrum analysis is not that easy and certainly not if you have been out of school for 40 years like me. To be sure that you get reliable FFT results, you can first practice with a square wave from which the harmonics are known. If all goes well than the FFT results exactly match the theoretical values obtained with Fourier analysis. Then you know for sure that the measurements are correct and that you interpret the data correctly. Because I want to measure the mains current, which is 50Hz, I use a square wave of also 50Hz. I use a UNI-T UTG962 function generator for this. The amplitude is 5Vrms.

The Fourier analysis of a square wave

See Wikipedia for the square wave.

Square wave Fourier analysis
Square wave Fourier analysis

Note that the amplitude of a square wave of 5Vrms is also 5V, so the whole formula has to be multiplied by 5.

With the formula above, the 5V square wave can be composed by the sum of the following series of sine voltages:
U(t) = 5*4/π (sin(2π50t) + 1/3sin(2π150t) + 1/5sin(2π250t) + 1/7sin(2π350t) + 1/9sin(2π450t)… )

How to interpret de FFT data from a scope?

With FFT, the amplitudes of the harmonics are displayed in Vrms, but the amplitudes in the formula are the peak voltages. So, the amplitudes must be divided by √2 to get the rms values.

For instance, the values for harmonic 3 are calculated as follows:
f=3x50Hz=150Hz
Vpeak = 1/3 * 5V * 4/π = 2.12V
Vrms = 2,12 / √2= 1.5V

If we calculate all harmonics at the same way, we get this table:

Harmonic Freq Vtop Vrms
1 50 6.37 4.50
3 150 2.12 1.50
5 250 1.27 0.90
7 350 0.91 0.64
9 450 0.71 0.50

Thus, the harmonics measured with FFT analysis should be 4.5V, 1.5V etc.

What is the accuracy of FFT analysis on a scope?

With FFT, the values are showed in dBV by default. But, for simplicity, I start with Vrms readings instead of dBV. Here you see how my Rigol MSO5104 performs the square wave FFT analysis:

Rigol MSO5104 FFT analysis on a 50Hz 5V square wave in Vrms
Rigol MSO5104 FFT analysis on a 50Hz 5V square wave in Vrms

Harmonic Freq Vtop Vrms Vrms scope Error [%]
1 50 6.37 4.50 4.54 0.9
3 150 2.12 1.50 1.55 3.3
5 250 1.27 0.90 0.928 3.1
7 350 0.91 0.64 0.646 0.5
9 450 0.71 0.50 0.514 2.8

As we can see, the Vrms values of the first 5 harmonics, are within 3% of the theoretical values. Note that, as we will see later, I have experimented beforehand to determine the optimal scope settings.

Here is the result with the more common unit dBV:

Rigol MSO5104 FFT analysis on a 50Hz 5V square wave in unit dBV
Rigol MSO5104 FFT analysis on a 50Hz 5V square wave in unit dBV

What is dBV and how to calculate it back to Volt?

dBV is the logarithmical voltage relative to 1 volt, regardless of impedance.
dBV = 20log(V)
V = 10^(dBV/20)

For instance, the Vrms for harmonic 3 is calculated as follows:
FFT value = 3.809dBV
Vrms= 10^(3.81/20) = 1.55V

If we calculate all harmonics at the same way, we get this table:

Harmonic Freq Vtop Vrms dBV scope Vrms scope Error [%]
1 50 6.37 4.50 13.1 4.52 0.4
3 150 2.12 1.50 3.81 1.55 3.3
5 250 1.27 0.90 -0.655 0.93 3.0
7 350 0.91 0.64 -3.81 0.64 0.3
9 450 0.71 0.50 -5.79 0.51 2.7

As we can see, the values of the first 5 harmonics in dBV are within 3% of the theoretical values.

How to choose the scope settings for FFT analysis?

The time base and the so-called window are the critical settings for FFT measurements. You can determine these as follow: Suppose you want to measure a signal of 50Hz. Then first measure a square wave of 50Hz as described above. Then play with the settings so that the measured values correspond as much as possible with the theoretical values. We can then assume that these settings are the best for all kinds of 50Hz signals.

How to get the optimal time base setting for FFT analysis

The time base setting is critical for FFT analysis. For the 50Hz square wave signal, I tested the range 100ms to 1s. Only 200ms and 500ms are accurate, 100ms and 1s are not accurate:

FFT - time base 100ms, 1st harmonic 4.059V instead of 4.5V
FFT - time base 100ms, 1st harmonic 4.059V instead of 4.5V

FFT - time base 1s, 1st harmonic  4.308V instead of 4.5V
FFT - time base 1s, 1st harmonic 4.308V instead of 4.5V

FFT - time base 200ms, 1st harmonic  4.543V ~ 4.5V
FFT - time base 200ms, 1st harmonic 4.543V ~ 4.5V

How to choose the optimal FFT window function?

Windowing is the kind of method used by the scope to correct the errors that are inherent with FFT.
The default window function of the Rigol scope is Hanning. However, this is not the best choice for our example. With Hanning, the 3th harmonic is not 1,5V as it should be but 1.352V:

FFT with Hanning window, 3th harmonic 1.352V instead of 1.5V
FFT with Hanning window, 3th harmonic 1.352V instead of 1.5V

So, I tried all window functions and came to the conclusion that the Flat top window has the most accurate readings for our 50Hz signal.

FFT with Flat top window function, 3th harmonic 1.552V ~ 1.5V
FFT with Flat top window function, 3th harmonic 1.552V ~ 1.5V

Do you have any comments about the website? Please let me know.