I have a design with resistor dividers and low pass RC filters dropping down 0-32V to ADC range of 0-1.8V. With multiple channels, I attempt to measure voltages from different voltage sources on a boat - battery voltage, voltage over the engine temperature sensor, voltage over the oil pressure sensor etc. All sources share common ground, but the problem on fibreglass boats is that all devices and grounded with a wire, not a chassis therefore it's easy to get ground level difference. Prime example is when someone flushes the toilet, the voltage measure on the engine temperature sensor drops slightly down, thus the calibrated temperature value goes up (the higher voltage on the sensor represents lower temperature) and leads to triggering false alarms. Here is my current solution:


simulate this circuit – Schematic created using CircuitLab

How do I resolve the issue? I have been thinking of the following new implementation:


simulate this circuit

where V1 is the ground connection of the measured voltage (0V) and V2 is the positive Connection of the measured voltage (0 to +32VDC) The Op Amps I have selected are NCV20074DTBR2G https://www.onsemi.com/pub/Collateral/NCS20071-D.PDF I'm using 6 ADC channels of STM32 Wroom32U https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32d_esp32-wroom-32u_datasheet_en.pdf

The requirements I'm trying to meet are:

  • Measure 0-32V DC voltage of 6 to 8 independent channels and display the value 10per second on a separate gauges (my SW already does the display portion).
  • Resolution 0.05V
  • Avoid ground loop measuring issues. Tolerate about +/- 0.5V ground differences.
  • When wires on the input are reversed by mistake, do not cause short circuit (this is a potential problem with my current solution as it has ground connection on the one of the input connectors)
  • Ideally have an offset on the output of the op amp to avoid the non linear portion of the ADC (downfall of using cheap uC). On the Op Amp the input should be 0-32VDC and the output should be 0.15V to 1.8V in order to compress the output and to use the almost linear portion of the ADC, otherwise my lower voltage measurement (below 5V) will be questionable and unfortunately this range is where the most sensor output voltages are.

I have some doubts of my new differential measurement solution as I'm not sure if using isolated PS for powering the ADC and the OpAmp and having floating ground with regards to the ground I'm measuring is or could be an issue.

  • What happens if the wires on the input are reversed and I feed negative to the positive input of the Op Amp and vice a versa.
  • How do I protect the input for EMI and other transient Voltages?
  • do I add caps to ground on each input after the input resistors?

Thank you in advance for your time reading my post! Cheers!

  • \$\begingroup\$ Why do you say you are using an STM32...what does this have to do with the ESP32-WROOM? Why don't you solve the toilet flush problem in software with averaging? What makes you say "the almost linear portion" of the ADC range? Are you planning to calibrate the ADC? How far will the op amps be located from the ADC? \$\endgroup\$ Commented Aug 25, 2019 at 21:59
  • \$\begingroup\$ Sorry my mistake with mentioning STM32. Should have been ESP32. Yes, there is known issue with the nonlinearity in the bottom and top portion of the range. I'm planning to use the relatively linear portion of the range and calibrate to second order. I did some experimenting and I think this will give me the result I need. ADC and the OpAmps are on the same PCB and 1-1 1/2 inch from each other \$\endgroup\$
    – JordanS
    Commented Aug 26, 2019 at 5:11

4 Answers 4


Use differential ADCs

I had a similar problem with instrumenting a generator, which meant taking readings from various oil pressure, temperature and current gauges, whilst tolerating a large ground rise when the starter motor was running.

In my case the easiest solution was just to use differential ADCs, bringing back each signal as a twisted pair, and measuring the true delta to each "local" ground. The use of twisted pair and differential measurement also provides good protection against RFI pickup on low level signals.

This is similar to what is suggested in an earlier answer which talks about a quiet ground, but is effectively a quiet ground per sensor.

There are very nice, cheap, 18bit quad differential DACs such as the MCP3424 which are easy to interface to a range of systems over I2C. As long as the ADC is powered with a ground going directly to the most negative point in the systems, you know all the other negative references / "grounds" will be above zero, so compatible with the differential input.

In my case resistive dividers with clamp diodes were all that I needed to achieve scaling and good readings in a hostile environment.

The reason I selected the MCP3424 is that they are cheap, configurable to allow you to chose the best balance between conversion speed and resolution, and have programable gain amps for low level signals.

Finally, being accessed over I2C means you have the option of using buffered I2C, placing the ADCs near the sources, and connecting to them remotely from a central location.


If you have ground offsets, then use an instrumentation amplifier and do a differential measurement.

An instrumentation (or instrumentational) amplifier (sometimes shorthanded as In-Amp or InAmp) is a type of differential amplifier that has been outfitted with input buffer amplifiers, which eliminate the need for input impedance matching and thus make the amplifier particularly suitable for use in measurement and test equipment. Additional characteristics include very low DC offset, low drift, low noise, very high open-loop gain, very high common-mode rejection ratio, and very high input impedances. Instrumentation amplifiers are used where great accuracy and stability of the circuit both short and long-term are required. Ref: Wikipedia

enter image description here

Instrument op-amp takes differential voltage as input and you don't need to worry about your circuit (just make sure you stay within the rails), as it can be quite complex if you want to achieve accuracy. They have very good CMMR and are very easy to use (a single resistor set the amplification).

It's fairly simple as they come altogether in a chip like AD8220 and will be much more accurate.

Make sure the in-amp is able to drive the rest of your circuit (like an A/D) you may need to add an opamp as buffer.

  • \$\begingroup\$ Thank you for your comment. It is clear that the best solution is in-amp, but the cost in a multichannel solution makes the use of the in-amps prohibitive for what I'm trying to do. There must be a way to meet my requirements with general purpose op-amp. After all, I'm trying to measure DC @ about 10Hz and bandwidth is not really an issue. \$\endgroup\$
    – JordanS
    Commented Aug 26, 2019 at 22:25
  • \$\begingroup\$ The INA2332AIPWR would cost you 0.9$ per channel for 100 pcs. It would be more than a simple op-amp but you would have a robust solution that would work. \$\endgroup\$
    – Damien
    Commented Aug 27, 2019 at 8:47

Your cleanest implementation here would be to run a separate "quiet" ground for your sensors which doesn't carry significant current. Then you would use differential amplifiers with the negative coming from the quiet ground.

Since the quiet ground isn't carrying significant current, you won't get the I-R losses that you'll see with a common ground.

  • \$\begingroup\$ Thank for your advice. I'm piggy backing from existing sensor on the engine/engines that are installed with analog gauges. If I run the signal and ground from the analog gauge, to my differential input as V2 and V1 respectively, would that accomplish what you were referring to? \$\endgroup\$
    – JordanS
    Commented Aug 26, 2019 at 22:21
  • \$\begingroup\$ It would, assuming the input range of your differential input includes ground. \$\endgroup\$ Commented Aug 27, 2019 at 14:00
  • \$\begingroup\$ the power supply that feeds the op-amp and the digital circuit is isolated and does not share ground with the rest of the vessel. Im debating if I should have a separate connector that grounds the power supply ground to the boat negative. Any advice on that? \$\endgroup\$
    – JordanS
    Commented Aug 28, 2019 at 9:22
  • \$\begingroup\$ You'll have to establish some relationship between your supply ground and your sensor ground in order to ensure your inputs remain within their active range. If not, the circuit will establish some relationship that you may not particularly care for. \$\endgroup\$ Commented Aug 28, 2019 at 13:01

How about using a 3-resistor ladder at each point where you want to take a measurement, then you can measure the voltages on each side of the middle resistor and determine both the local supply voltage and the supply and return losses, which may be useful to know.


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.