This question already has an answer here:

Hope all is well.

I need the arduino UNO to read negative voltages, and I am worried that it might destroy the arduino.

What I am trying to do with the Arduino is to be able to read voltages from two of its analog inputs, then graph them in Labview.

Graph required

The arduino will read voltages that makes the above graph.

If UNO can't do negative voltages, are there any other arduino model that is capable of reading negative voltages?

If it can't read negative voltage, do you guys have any suggestion how to make this happen? Because OPAMP inverter won't solve this issue.

Thanks a lot.


marked as duplicate by Matt Young, Voltage Spike, Dmitry Grigoryev, Wesley Lee, Nick Alexeev Mar 27 '17 at 13:40

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.


You cannot read negative voltages with the Atmel MCU on an Arduino board. They are only capable of reading positive voltages.

To solve your problem you need to design a positive referenced voltage divider or an op-amp circuit that includes scaling of the total delta voltage of the input to the min/max conversion range of the Atmel MCU. The circuit will also need to provide a DC offset to the input signal so that the resultant scaled output is centered within the conversion range of the A/D on the MCU.

If you use an op-amp circuit it could be necessary to provide a bipolar power supply depending upon the configuration of the op-amp circuit.

Note that the op-amp circuit can have a decided advantage over the simpler voltage divider circuit in that it can (a) offer a higher input impedance as a load to your analogue source and (b) is able to drive the A/D input of the MCU with a significantly lower source impedance. Both of these factors can lead to higher performance of the data conversion interface.

  • \$\begingroup\$ A voltage divider with two resistors is enough. Instead of using the GND as the 'base' of the voltage divider, the +5V is used. If the voltage to measure can be below 0V and above 5V then three resistors are needed as shown in the link that Matt Young mentioned. If voltages can be negative but don't have to be measured, then the resistor values of a voltage divider can be choosen to limit the current to/from a pin to 1mA (it is allowed to pull 1mA from a pin for the 8-bit AVR chips with a negative current). \$\endgroup\$ – Jot Mar 27 '17 at 4:54
  • \$\begingroup\$ @Jot - I edited my answer to indicate that a voltage divider is a possible option but at same time describe the advantage of the op-amp approach. Hopefully of you were the downvoter here can see fit to undo that vote. \$\endgroup\$ – Michael Karas Mar 28 '17 at 4:25
  • \$\begingroup\$ I was the downvoter and I have undone it for you. A OpAmp is the classical analog approach, but the Arduino Uno often don't need it. The circuit impedance for an analog signal to an analog pin is preferred to be 10k, but 100k will still work although less accurate. The OpAmp itself might introduce a offset and gain inaccuracy by the resistors. It all depends on what is measured. For example a Wheatstone bridge works well with a instrumentation amplifier. Maybe this is a xy-problem xyproblem.info after all, and it is the output of a hall sensor that is connected wrong. \$\endgroup\$ – Jot Mar 28 '17 at 16:25

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