I have a strain-gauge (SG) in a Wheatstone-bridge (WB) configuration that I would like to measure on the 0-250Hz band on 16 bit resolution. Before the amplification stage, I expect the bridge voltage to vary between +/-2mV when excited from 5.5Vdc. I cannot assume that the SG's output is band limited to any sensible low-frequency value and my aliasing rules are therefore extremely strict.

Since my configuration requires very high-gain amplification and the PCB is heavily space-limited, I would like to use synchronous detection to reduce the 1/f noise generated by the instrumentation amplifier to achieve the required SNR. Therefore, I'm planning to excite the bridge with a 0-5.5V 1kHz sine wave. Let's call this \$v_e(t) = A (sin(\omega t + \Phi) + \frac{1}{2})\$ and call the signal generated by the strain-gauge \$x(t) = \frac{1}{2}-\frac{r(t)}{R+r(t)}\$, where \$R\$ is the resistance off all WB resistors and \$r(t)\$ is the SG's resistance that changes over time. Note that the \$\Phi\$ phase shift is added as the signal-processing chain will have altered the phase of the modulated carrier with respect to the original excitation voltage.

Hence, I expect the WB's bridge voltage to vary as: $$v_{bridge} = v_e(t)\cdot x(t) = Ax(t)\left[sin(\omega t + \Phi) + \frac{1}{2}\right]$$

In order to demodulate this signal, I need to high-pass filter the above to remove any DC components and low-frequency noise, multiply the result by sin(wt) and cos(wt) and low-pass filter the signal to get the in-phase \$I\$ and quadrature \$Q\$ components. From this I can reconstruct the signal as

$$ x(t) = \sqrt{I^2+Q^2}$$

What I fail to understand is say that the SG signal \$x(t)\$ spawns the 0-1kHz range. After the above multiplication I will have 3 "copies" of the SG's frequency content instead of 2 due to the excitation voltage's DC component: one with an amplitude \$\frac{A}{2}\$ centred around 0Hz [-1kHz; 1kHz] and the other 2 centred around -1kHz [-2kHz; 0Hz] and 1kHz [0Hz-2kHz] with \$\frac{A}{2}\$ amplitude. If we focus on the positive side of the frequency domain, we can see that the band at [0Hz-1kHz] overlaps with the modulated band at [0Hz; 2kHz]. Since they overlap, I would expect that after the LFP and demodulation I would have aliased some of the unmodulated signal in my modulated one.

Where am I going wrong here? It feels wrong that the whole thing would work fine if I had shifted my voltage reference such that the excitation voltage had no DC component (floating WB). I am very new to the topic of synchronous detection and I could not find any reference to this problem which suggests that some of my assumptions may be incorrect.

Edit1 - clarification

Say that the following is the frequency spectrum of x(t) (FFT of \$2000 sinc(2000t)\$), \$X(f)\$ enter image description here

When x(t) is multiplied by \$5.5(sin(2pi\cdot 1000)+\frac{1}{2})\$ we get the following: enter image description here

If we pass this through an ideal box HPF with cutoff at 750Hz, we get: enter image description here

Taking the inverse FFT of this to multiply by \$sin(2\pi\cdot 1000)\$ indeed gives our (scaled) signal at 0-250Hz from the [-1000; -750] part of the previous plot. enter image description here

Is this general for all \$x(t)\$ inputs. For a sinc^2 (triangle FFT), this is the result: enter image description here

This is really odd and intuitively I cannot really explain why it works and how the DC component is not messing things up :)


1 Answer 1


In order to demodulate this signal, I need to high-pass filter the above to remove any DC components and low-frequency noise

Yes, this eliminates both DC component and 1/f noise. Since you're exciting the Wheatstone bridge with 1kHz, this high-pass filter cut-off frequency can be 1kHz (actually, should be somewhat below 1kHz).

You also need a low-pass filter too, to eliminate noise above 1kHz. This low-pass filter is also required to eliminate aliases due to ADC sampling rate.

All this filtering amounts to a band-pass filter with a centre frequency of 1kHz, and bandwidth of 250 Hz...(750 Hz to 1250 Hz). This filtering should be done after the preamp, and before ADC.
Just to be clear: the process of exciting the bridge with 1kHz instead of DC, has resulted in your sensor information in the 750 Hz to 1250 Hz band instead of 0 Hz to 250 Hz band.

The stop-band of this filter is particularly important above 1250 Hz, depending on sampling frequency. There should be no noise content going into ADC near its sampling frequency. To ease the specs for the stop-band of this filtering, an ADC sampling frequency higher than 4000 samples-per-second should be chosen.


simulate this circuit – Schematic created using CircuitLab

The result of this filtering should block any Wheatstone bridge offsets, 1/f noise below 1kHz, noise above 1kHz. The \$\sqrt{I^2+Q^2}\$ result of demodulation will be only due to your sensor, free of aliases.

Since OP has spec'd synchronous demodulator, the ADC samples must be multiplied by a replica of the 1kHz bridge excitation (OP refers to a multiplier of sin(wt), cos(wt)). This part of the demodulator is not addressed in the schematic above.
One might use a DAC to generate the 1kHz bridge excitation, which provides a convenient signal source for the multiplier.

  • \$\begingroup\$ Thanks, glen_geek! My ADC runs at 2MHz to ease my AA filter's response. This filter has an "unattenuated" passband (aka. <1mdB ripple) of 380Hz and has -96dB attenuation at Nyquist. I'm generating the sine wave from a 12bit DAC with a low-pass filter and a high-current buffer. All analogue components are in single-supply operation and are referenced to an analogue ground, including the DAC. I was planning to do the high-pass filtering in my DSP but this may be too late to prevent aliasing. I also need to shift my AA filter's response to above 1.25kHz instead of 380Hz. Am I correct? \$\endgroup\$ Oct 10, 2023 at 16:49
  • \$\begingroup\$ Yes, I do high-pass in DSP too (in your case, it must pass 750 Hz and above). Yes, AA filter ahead of ADC must pass everything below 1250 Hz. With 2MHz sampling, this is a simple filter, since its stopband begins far above 1250 Hz. You might add a DSP low-pass filter to \$\sqrt{I^2+Q^2}\$ output - passing 0-250 Hz, \$\endgroup\$
    – glen_geek
    Oct 10, 2023 at 17:53
  • \$\begingroup\$ I've edited my post to include some MATLAB plots for better visualisation. While I was doing this, I had to realise that the reconstruction does work, even with the DC component in the excitation signal. I cannot really explain this intuitively :) I guess here the negative part of the frequency spectrum that holds the key, which in my mind I normally ignore. \$\endgroup\$ Oct 11, 2023 at 11:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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