Electronic – Design dilemma: Are frequency counting methods better than voltage sensing when detecting ppm signals


I'm trying to design a precision spectrophotometer that only uses three wavelengths of light. The high level design involves using three laser diodes that pump photons of the three wavelengths. This light passes through the sample and is detected by three photodiodes.

I am using the AD9833 DDS chip to enable me to generate sine/square waves as need be. These are then fed to a current generation circuitry that forces currents resembling these waveforms to flow through the diodes.

I'm in a fix deciding what method to use for the detection circuitry(photodiodes) as the signal I'm trying to decode is in ppm/sub-ppm level. I have thought of two schemes:

1) Generate a sinusoidal light pattern of a frequency(say 1kHz). If I use an integrated package like TSL257, I should be able to read out the voltage with a precision ADC, then demodulate the received signal at the transmit frequency. This synchronous mod/de-mod should give me good accuracy/resolution.

2) Generate a square wave light pattern(0 to high) and then use a package like TSL237 to convert the light energy to frequency and use frequency counting to get the accuracy/resolution. With a base frequency of 1Mhz, a ppm of signal would cause a frequency shift of 1Hz while the noise floor is in 0.1Hz. This made me think this method could also work.

Which one is a better way to sense ppm-level signals?

Best Answer

You seem to be comparing apples with oranges giraffes for your light levels. The great advantage of the frequency output TSL237 is its dynamic range. The TSL257 will only handle 3uW with its output range of 0 to 5v, with the reference 2v at 1.54uW in the middle. The TSL237's equivalent output at the same irradiance is around 4kHz (2.3kHz/uW), while its max output will go to 500kHz min, 1MHz max, so a much larger maximum light signal. I'm not sure where you get your base frequency of 1MHz and noise level of 0.1Hz from (are you confusing 0.1Hz dark output with a noise level?), not in the data sheet I've downloaded. I strongly suspect that the effective noise of the 237 will be broadly equivalent to that of the 257 under the same illumination. If you want to use 500kHz output from the 237, then you need light levels 100 times those for the 257.

Generating a square light modulation and then trying to count pulses will be doomed to failure. If the 237 was sine or triangle output, you could read it with a fast ADC and estimate phase at the light change times. As it's square wave output, you have approaching a cycle uncertainty every time the light pulses on or off, which adds a huge amount of noise.

Your best bet is to use the traditional 'lock-in' amplifier, or something equivalent in DSP. That is, you generate a square wave modulation to your light stimulus (square gives you slightly higher modulation power for the same peak power than sine wave), then continue as in your suggestion (1).

The 257 suggests a noise density of 7uV at 1kHz offset, staying pretty flat to lower frequencies. If we compare that to the middle output voltage of 2v, that indicates that with a 1kHz modulation, the 1Hz SNR is about -10dB, so you'll need 10s averaging to get to tangential sensitivity for 1ppm, and 100s to get to 10dB SNR.

One other thing the 237 appears to have going for it is its response time, 1uS + 1 cycle, instead of the 160uS 10/90 response of the 257. That could work in your favour if the noise level turns out to be lower at higher modulation frequencies. There may be a way to 'count' the frequency suitable for synchronous demodulation. If you low pass filter the output square wave, then ADC the output fast enough to obtain 5 or so samples on each sloping edge, then you will be able to fit to those samples to nail the edge timing down to sub-sample resolution. The more bits you can use, the better will be your timing interpolation. If you then identify the cycles that correspond wholly to one or the other light level, and ignore those that straddle them, you might get a reasonable measurement you can average synchronously. Whether the noise level you get is better or worse than the 257 is a matter for experiment with a real 237 and digitiser. If you capture data with a digitising oscilloscope, you will be able to estimate timing off line, before implementing any DSP.

Aside from the specifics of these detectors and use with synchronous demodulation, counting methods can work well, as long as you use ADC and DSP to do phase/timing estimation, rather than the niave counting edges in a gate time.