Prev: Goertzl Algorithm
Next: eliptic iir filter attenuation
From: evilzucchini on 1 Mar 2010 14:54 I am fairly new (or, more accurately, still very wet behind the ears) to DSP. I have very little formal training and got thrust into the duties of handling the embedded DSP programming for our project. So please forgive me if I ask something that is very basic. . .and I believe it is kind of basic. At first my duties were pretty simple: sampling some sine waves, correlating them to determine magnitudes/angles/etc. I handle this fine and well within the specs given to us by our customers. However, now our customers want more (big surprise). One of the requests was to do a Total Harmonic Distortion analysis of the currents (we are working in the power industry). I have no problem finding and understanding the mathematics for determining the total harmonic distortion, however, whenever I do it I get numbers that I believe to be very high. I am seeing 11-20% THD on "perfectly" smooth sine waves that I am generating. Perfect in the sense that I am adding in no harmonics and they look very clean on an oscilloscope. I am using Exocortex 2D FFT algorithm to generate the power of each harmonic on our sine wave. I suspect the problem is that I am not sampling perfectly in sync with the 60 Hz sine wave due to imperfections in the clock (like the rate I am sampling at would not be exactly 128 samples per cycle, but more like 128.5) and that this is making it look like there is more distortion than there is. I believe that if you are expecting to see 1 cycle in 128 samples, but you are really only seeing .9 cycles per 128 samples, it may appear that you have a lot of power in harmonics other than the fundamental when, in the real world, it is actually a sine wave with very low distortion. Would a slightly incorrect sampling rate give significantly incorrect harmonic data? If so, how do you correct this? Is there a good algorithm for "locking" onto a signal so that your sampling rate becomes more perfect? Or am I just totally wrong and it is probably some other problem? I did do a search trying to find the solution to this problem or at least some guidance, but I am not exactly sure what it is called so I have been unsuccessful trying to find a solution or even if I am barking up the right tree. For reference, I am coding in C for a 16 bit Freescale 56f8367 Digital Signal Controller and doing the FFT calculations in C# for .Net (after downloading the raw sampled data from the ADC in our unit). Thank you, Charlie
From: Rune Allnor on 1 Mar 2010 15:15 On 1 Mar, 20:54, "evilzucchini" <cbar...(a)digitalgridinc.com> wrote: > I am fairly new (or, more accurately, still very wet behind the ears) to > DSP. I have very little formal training and got thrust into the duties of > handling the embedded DSP programming for our project. So please forgive > me if I ask something that is very basic. . .and I believe it is kind of > basic. > > At first my duties were pretty simple: sampling some sine waves, > correlating them to determine magnitudes/angles/etc. I handle this fine > and well within the specs given to us by our customers. > > However, now our customers want more (big surprise). One of the requests > was to do a Total Harmonic Distortion analysis of the currents (we are > working in the power industry). I have no problem finding and > understanding the mathematics for determining the total harmonic > distortion, however, whenever I do it I get numbers that I believe to be > very high. I am seeing 11-20% THD on "perfectly" smooth sine waves that I > am generating. Perfect in the sense that I am adding in no harmonics and > they look very clean on an oscilloscope. I am using Exocortex 2D FFT > algorithm to generate the power of each harmonic on our sine wave. > > I suspect the problem is that I am not sampling perfectly in sync with the > 60 Hz sine wave due to imperfections in the clock (like the rate I am > sampling at would not be exactly 128 samples per cycle, but more like > 128.5) and that this is making it look like there is more distortion than > there is. Wrong. Sampling rates have nothing to do with nonlinear distortion. You risk problems with aliasing if your sampling rates are too low, but that's a different problem. > I believe that if you are expecting to see 1 cycle in 128 > samples, but you are really only seeing .9 cycles per 128 samples, it may > appear that you have a lot of power in harmonics other than the fundamental > when, in the real world, it is actually a sine wave with very low > distortion. No. > Would a slightly incorrect sampling rate give significantly incorrect > harmonic data? No. > If so, how do you correct this? Is there a good algorithm > for "locking" onto a signal so that your sampling rate becomes more > perfect? Or am I just totally wrong and it is probably some other > problem? There are some books out, authored by Bendat either alone or along with Piersol, that address the question of harmonic distortion. Rune
From: Vladimir Vassilevsky on 1 Mar 2010 15:27 There is 1001 trick how to do harmonic analysis of truncated data. However, for power industry purpose, the basic approach would probably be good enough: 1. Sample 10 periods or more. 2. Apply Blackman window. 3. Then do the FFT. Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com evilzucchini wrote: > I am fairly new (or, more accurately, still very wet behind the ears) to > DSP. I have very little formal training and got thrust into the duties of > handling the embedded DSP programming for our project. So please forgive > me if I ask something that is very basic. . .and I believe it is kind of > basic. > > At first my duties were pretty simple: sampling some sine waves, > correlating them to determine magnitudes/angles/etc. I handle this fine > and well within the specs given to us by our customers. > > However, now our customers want more (big surprise). One of the requests > was to do a Total Harmonic Distortion analysis of the currents (we are > working in the power industry). I have no problem finding and > understanding the mathematics for determining the total harmonic > distortion, however, whenever I do it I get numbers that I believe to be > very high. I am seeing 11-20% THD on "perfectly" smooth sine waves that I > am generating. Perfect in the sense that I am adding in no harmonics and > they look very clean on an oscilloscope. I am using Exocortex 2D FFT > algorithm to generate the power of each harmonic on our sine wave. > > I suspect the problem is that I am not sampling perfectly in sync with the > 60 Hz sine wave due to imperfections in the clock (like the rate I am > sampling at would not be exactly 128 samples per cycle, but more like > 128.5) and that this is making it look like there is more distortion than > there is. I believe that if you are expecting to see 1 cycle in 128 > samples, but you are really only seeing .9 cycles per 128 samples, it may > appear that you have a lot of power in harmonics other than the fundamental > when, in the real world, it is actually a sine wave with very low > distortion. > > Would a slightly incorrect sampling rate give significantly incorrect > harmonic data? If so, how do you correct this? Is there a good algorithm > for "locking" onto a signal so that your sampling rate becomes more > perfect? Or am I just totally wrong and it is probably some other > problem? > > I did do a search trying to find the solution to this problem or at least > some guidance, but I am not exactly sure what it is called so I have been > unsuccessful trying to find a solution or even if I am barking up the right > tree. > > For reference, I am coding in C for a 16 bit Freescale 56f8367 Digital > Signal Controller and doing the FFT calculations in C# for .Net (after > downloading the raw sampled data from the ADC in our unit). > > Thank you, > Charlie > >
From: Jerry Avins on 1 Mar 2010 16:36 Rune Allnor wrote: > On 1 Mar, 20:54, "evilzucchini" <cbar...(a)digitalgridinc.com> wrote: >> I am fairly new (or, more accurately, still very wet behind the ears) to >> DSP. I have very little formal training and got thrust into the duties of >> handling the embedded DSP programming for our project. So please forgive >> me if I ask something that is very basic. . .and I believe it is kind of >> basic. >> >> At first my duties were pretty simple: sampling some sine waves, >> correlating them to determine magnitudes/angles/etc. I handle this fine >> and well within the specs given to us by our customers. >> >> However, now our customers want more (big surprise). One of the requests >> was to do a Total Harmonic Distortion analysis of the currents (we are >> working in the power industry). I have no problem finding and >> understanding the mathematics for determining the total harmonic >> distortion, however, whenever I do it I get numbers that I believe to be >> very high. I am seeing 11-20% THD on "perfectly" smooth sine waves that I >> am generating. Perfect in the sense that I am adding in no harmonics and >> they look very clean on an oscilloscope. I am using Exocortex 2D FFT >> algorithm to generate the power of each harmonic on our sine wave. >> >> I suspect the problem is that I am not sampling perfectly in sync with the >> 60 Hz sine wave due to imperfections in the clock (like the rate I am >> sampling at would not be exactly 128 samples per cycle, but more like >> 128.5) and that this is making it look like there is more distortion than >> there is. > > Wrong. Sampling rates have nothing to do with nonlinear distortion. > You risk problems with aliasing if your sampling rates are too low, > but that's a different problem. > >> I believe that if you are expecting to see 1 cycle in 128 >> samples, but you are really only seeing .9 cycles per 128 samples, it may >> appear that you have a lot of power in harmonics other than the fundamental >> when, in the real world, it is actually a sine wave with very low >> distortion. > > No. Don't be so quick with that no. If the sample train doesn't represent an integer number of cycles, then it represents all the of harmonics needed to create the abrupt the transition. The FFT "imagines" -- I put it that way to annoy you -- that its input is exactly one cycle of a periodic waveform. >> Would a slightly incorrect sampling rate give significantly incorrect >> harmonic data? ... >> If so, how do you correct this? Is there a good algorithm >> for "locking" onto a signal so that your sampling rate becomes more >> perfect? Or am I just totally wrong and it is probably some other >> problem? There are a few ways. One is sampling for a long time, so that any partial cycle is a small enough part of the whole not to matter. Another, which allows a somewhat shorter sample train, is determining the fundamental power after a jow-pass filter, and subtracting that number from the total power. Properly done, the second method can dispense with an anti-alias filter, capturing the rffect of harmonics higher than half the sample rate. > There are some books out, authored by Bendat either alone or > along with Piersol, that address the question of harmonic > distortion. The problem isn't distortion in the signal, but energy that the FFT adds to make the waveform fragment appear to be periodic. Jerry -- "I view the progress of science as ... the slow erosion of the tendency to dichotomize." --Barbara Smuts, U. Mich. �����������������������������������������������������������������������
From: Jerry Avins on 1 Mar 2010 16:38
Vladimir Vassilevsky wrote: > > There is 1001 trick how to do harmonic analysis of truncated data. > However, for power industry purpose, the basic approach would probably > be good enough: > > 1. Sample 10 periods or more. > 2. Apply Blackman window. > 3. Then do the FFT. Agreed, but for Hi-Fi nuts, the accuracy won't be adequate if one samples 10.5 cycles. Jerry -- "I view the progress of science as ... the slow erosion of the tendency to dichotomize." --Barbara Smuts, U. Mich. ����������������������������������������������������������������������� |