Electronic – Measure both positive and negative voltages using ADC


I am looking into measuring both positive and negative voltages using ADC. My input voltage is in range from -55 to +55V, which is total of 110V. ADC I am using is MCP3424, since it is relatively easy to pair it with Raspberry Pi. MCP3423 is differential ADC with positive and negative inputs for each port. I am looking to connect negative(-) port to gnd, so I feed the voltage to the positive input. It gives me range from 0 to 2.048V. (readings of ADC are 18-bit)

I am looking to convert -55V to +55V range into 0 – 2.048V range. With some googling and my limited electronics knowledge I came into the following circuit:


simulate this circuit – Schematic created using CircuitLab

Questions/problems are:

  • would this work fine?
  • to which voltages I should connect op-amp voltage rails? OA1 to +5 and gnd, and OP2 to +55V and -55V? In that case, I would need high voltage op-amp, for example LTC6090?
  • do I need protection diodes at input or at output?

Are there any other issues I am not seeing?

Best Answer

@Andyaka's answer is basically the same as what I was going to put, but he used the inverting amp topology. So +1 to his answer.

Anyway, given I've already done the calculations, I'll post this too. The following non-inverting topology circuit should also work:


simulate this circuit – Schematic created using CircuitLab

The values of R3 and R4 can be calculated based on your supply voltage (simple potential divider). The values of R1 and R2 I have calculated based on E12 resistors. It may not be as accurate as you want - yielding a 0.175 to 1.94V output range for +/-55V input range.

If you use higher accuracy resistors, you can get closer. For example, the corresponding E48 series values (1%) will be 133k and 2.49k for R2 and R1 respectively. For that you need to generate a 1.04V reference using a potential divider of R3 and R4. You then get quite close to your desired range, getting an output range of 0.01V to 2.031V for a +/-55V input.