In my application I need to sample a number of bipolar signals coming from piezo sensors, and detect their relative time difference (for multilateration based on difference time of arrival).

I expect the signals themselves have a fairly low bandwidth, around 10kHz, but I'd like to determine (among others) when their zero-crossings happen with an accuracy of 1-2μs.

I'm considering the ADS8661 as the ADC: its sampling rate of 1.2MSPS seems accurate enough, and the presence of a built-in analog frontend would make my schematic simpler.

I see that the frontend has a low-pass filter with a cutoff frequency of 15kHz. Given that it will remove all higher frequencies, is there a risk that it will make zero-crossing detection less precise?

  • 4
    \$\begingroup\$ Yes. ---------- \$\endgroup\$ – Olin Lathrop Jun 14 '17 at 16:29
  • \$\begingroup\$ Yes, but not sure if this will impact the triangulation calc. since all the signals will be delayed by the same amount of time. \$\endgroup\$ – Marko Buršič Jun 14 '17 at 17:03
  • \$\begingroup\$ You could probably simulate this. \$\endgroup\$ – mkeith Jun 15 '17 at 7:39

Zero-crossing is the wrong way to do this, as it only uses two samples on the period (ignoring the rest) and is thus very sensitive to noise.

If your signal is a sine of constant amplitude (at least over a few periods) then the best way is to acquire the signal, and multiply it in the digital domain with sine and cosine waveforms. This IQ demodulatoin gives you a complex number, whose angle allows measuring the phase shift with extreme precision.

For example, it is possible to measure nanosecond phase shifts between two sine waves using a simple PC soundcard, as long as SNR is adequate.

This is equivalent to computing only one bin on a FFT.


Will a low-pass filter make zero-crossing detection less precise?

I assume you are comparing one signal against another and that all signals are processed using the same hardware. In other words, it is the relative delay uncertainty that concerns you and not the absolute delay.

If you can arrange for all channels to be sampled simultaneously and you can rely on the internal digital filter of the ADC (which you usually can) then I would say no, you should be OK.

If in fact the internal filter is somewhat analogue in nature (maybe an anti-alias filter) then you can't rely on it having exactly the same time delay characteristics and the answer would have to be yes, it will be less precise.

Looking at fig 51 in the data sheet I have to say that I don't think you can rely on its timing accuracy. It is an analogue anti alias filter and it doesn't appear to be toleranced in the data sheet.

enter image description here

As another measure, if you look at the 10 kHz response, it suggests there is a phase change of 45 degrees and this is simply a time delay of 12.5 us. At 1 kHz the phase change is possibly around 5.6 degrees (about one-eighth of 45 degrees) and this represents a time delay of maybe 15.6 us. Already you have an error of about 3 us between 1 kHz and 10 kHz (for just one channel) and it may be too much for your application given that the channel to channel stuff might be twice this amount.

  • \$\begingroup\$ The phase diagram of the filter does indeed tell that the signal will be subject to unwanted and unpredictable delays, especially across ADCs. So it's actually causing more harm than good. I might do the zero crossing detection with a simple comparator and the rest of measurements with an ADC with a smaller bandwidth. \$\endgroup\$ – ris8_allo_zen0 Jun 14 '17 at 21:11

This particular part does not appear to be designed for your type of application- the 15kHz 2nd order analog anti-aliasing filter is going to have different cutoff frequencies from unit to unit, and you obviously will need more than one unit to compare two signals.

I would expect you'd want bandwidth in the hundreds of kHz to compare zero crossings (or, more generally, phase relationships) in the low microseconds.

  • \$\begingroup\$ Indeed I thought that 1MSPS was high enough to measure zero crossings with that accuracy, until I saw the anti-alias filter with that surprisingly low cutoff frequency. Is that normal for an ADC of that sampling rate? \$\endgroup\$ – ris8_allo_zen0 Jun 14 '17 at 21:20

Assuming the piezo transducers will catch the same source of the excitation signal, then doing the cross correlation between the received signal stored in a buffer would give you the time difference between two signals with the highest probability.
Searching for zero cross would involve some heuristic approach that would give a non deterministic result.

Let the both signals passing through identical filters have the same filter delay, then upon finding the relative delay between two signals, the filter delay is cancelled.

  • \$\begingroup\$ Do you mean analog, anti-alias filters? If so, how can I guarantee that such filters will be identical? \$\endgroup\$ – ris8_allo_zen0 Jun 15 '17 at 6:45
  • \$\begingroup\$ By using elements with tight tolerances. \$\endgroup\$ – Marko Buršič Jun 15 '17 at 6:53

The analogfrontend will merely attenuate higher frequencies, not remove all higher frequencies. If any sensors have FASTER edges than the other sensors, the faster edge will achieve an earlier zero crossing. This is because you can model the 15KHz filtering as an integrator (simplistically) and an integrator DOES RESPONSE to squarewave input, producing an instantaneous output.


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.