My problem is similar to this one: Measure Sine Wave Amplitude from ADC Signal

I have a microcontroller that produces a sine wave by means of its DAC. I can choose the frequency anywhere between about 1 kHz to 10 kHz. The sine is 3 Vpp and has 1.5 V offset, so that it is an unipolar signal. I use this sine wave to excite a passive network, and the network responds with a signal having a phase shift and a loss. What I want to do now is to estimate the loss in my network, so I need to measure its output voltage (which is also a sine wave with the same frequency).

Does it make sense to use something like a sliding FFT or a Goertzel to precisely determine the amplitude of the sine at the network's output, or is there maybe an even better approach?

My first thought after reading the linked question was that I could also use an FFT and determine the magnitude of the corresponding bin. I assume some CPU time could be saved if I implement it as a sliding FFT, or even use a Goertzel, since I am only interested in one frequency.


1 Answer 1


If you can be sure that your passive network is perfectly linear (does not create harmonics) you can just use the raw min/max values that you read from the ADC and compare them (correctly scaled) to the min/max values that you put into the DAC. Some inaccuries will arise for sure, ie. because the DAC and ADC are not perfectly linear. If your passive network has low impedance, you would also have to take into account the internal resistance of the DAC. If you need high precision, doing a FFT or Goertzel is the way to go.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.