# Reading negative and positive voltages on UNO

I'm trying to design a voltmeter using Arduino and wish to read voltages from -50V to +50V and with a max current of 1A . Since arduino cannot read negative voltages i would like to ask if there are any ways to do this or a circuit to do the same. i also wish to be able to read the voltage irrespective or the polarity and be able to detect if the polarity is reverse as shown in a multimeter.
PS. Do not recommend to buy a multimeter because this is a part of a project.

You cam build a [u]precision full-wave rectifier[/u].

I've forgotten exactly how it works, but there might be half-wave signal you can tap-into to get the positive voltages (to detect polarity). If not, you can add a precision half-wave rectifier.

Of course, you'll need a voltage divider (2 resistors) and if there is a chance of voltages over the expected 50V you'll need an over-voltage protection circuit (a couple of diodes added to the voltage divider).

with a max current of 1A

Are you measuring current? (A voltmeter has very high input impedance so virtually no current flows into the meter.)

If you use a 3-resistor voltage divider, then you can measure positive and negative voltages.
One from voltage to pin, one from pin to ground, one from pin to VCC (5volt?).
Leo..

Many multimeter chips have a serial connection.

ListenTonothing:
I'm trying to design a voltmeter using Arduino and wish to read voltages from -50V to +50V and with a max current of 1A .

How about a better description of what you are trying to do?

The bit about maximum current makes little sense so far.

How about a better description of what you are trying to do?

I'm trying to measure DC voltage from a range of -50v to +50v which will have 1A max current this would be used as a voltmeter (DC only) to measure voltages or current in curcuit. The Aim is to build microcontroller based voltmeter and current meter but since arduino cannot read negative voltage DC i want a way to read the above range into arduino which accepts a voltage range of 0-5V DC.

As said, a low-tech ±50volt (one decimal place) voltmeter can be made with three resistors.
Try 12k from pin to ground, 56k from pin to 3.3volt, 1Meg from pin to the voltage to measure.
Enable 1.1volt Aref in setup(), and subtract a ‘zero voltage’ offset from the A/D value before converting remaining A/D value to volt.
Example sketch attached (untested).
Leo…

``````int offset = 512; // calibrate zero volt here
float span = 0.1987; // calibrate 50volt here
float voltage;

void setup() {
Serial.begin(9600);
analogReference(INTERNAL); // enable internal/stable 1.1volt Aref
}

void loop() {
voltage = (analogRead(A0) - offset) * span;
Serial.print("Voltage: ");
Serial.print(voltage, 1); // one decimal place
Serial.println(" volt");
delay(500);
}
``````

"Negative voltage" is an interesting concept. My little red HF multimeter measures it when I'm not paying attention to what I'm doing.

Thanks @wawa will surely try that