I have a few external input probes on a device I'm making which are connected to an ADC. Is there an electrical (i.e. non-mechanical) method of detecting whether the ADC input is floating/disconnected/tristate or actually connected to a signal source, without altering the input signal? The signal should be considered analog; not necessarily a digital logic signal.

The purpose is to ascertain whether the ADC data being read is significant or not, so that the gaps when the probe is disconnected can be noted with respect to time.

  • The question seems similar to How can I design a circuit that will turn on when a wire is cut? – alexan_e Feb 14 '14 at 8:34
  • In general, you can't detect a floating analog signal without disturbing it, by definition. If you don't like Brian Drummond's suggestion you might look for some time-varying characteristic of your signal that could serve as an indication. – Joe Hass Feb 14 '14 at 13:34
up vote 5 down vote accepted

If the ADC is part of a typical microcontroller (MSP430, the AVR in an Arduino for example) you will probably find there are optional pullup and pulldown resistors with high values (50kilohms for example).

If you enable the pullup only, read the ADC, enable the pulldown only, read the ADC again, and the two readings are very different, you can reasonably conclude the signal is floating without any additional hardware.

[EDIT] assuming the ADC is monitoring a slow moving voltage. If it is monitoring high amplitude noise, a single pair of readings may not be enough to make the decision. Nevertheless the pullup/pulldown resistors should pull the signal close to the appropriate rail.

Usually with "probes", a pull-up or pull-down can be added that would put the ADC input reliably into what would be unreasonable territory for a working connection (and reasonably quickly). For example, a thermocouple probe might have a pullup of a few tens or hundreds of nA to +3.3V and the ADC going overrange would be interpreted as an open probe. A broken leadwire compensation line on a resistance sensor might drive the signal underrange.

If that is not practical, another method that can be used is to briefly apply something like a known current to the input, temporarily disturbing the reading, but allowing the integrity to be tested.

It's case-by-case depending on the sensor, and generally these techniques add a bit of error or have other undesired side effects. Certainly these methods are not often practical if you're going straight into a typical microcontroller or other unbuffered ADC input, and imply some kind of signal conditioning that provides a high-impedance input.

We use analogue switches to briefly connect a pull-up and a pull-down to signal lines coming into our measurement systems. Normally, all the inputs are scanned but we reserve space in the "frame" to scan one extra sensor input with pull-up and pull-down applied. Thus, if we have 16 inputs (usually thermocouples), we use a 17th measurement slot to be one of the 16 thermocouples retested with pull-up/pull-down.

Thus, after 16 frames of data we have acquired all 16 inputs 16 times and will have checked all 16 inputs with pull-up/pull-down at least once. For mulitplexed thermocouple systems this is easy to implement because all the analogue switch multiplexing is in place and you reserve one combination of multiplexers to be active at the same time as your real measurment: -

enter image description here

The main multiplxer in the above diagram deals with 6 pairs of inputs (6 shown to make the drawing less cluttered). The output from each multiplxer feeds an Instrumentation amp and both lines can be pulled-up/down with resistors to check cable and source integrity.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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