Arduino as a V-A multimeter

Hi, I have a PSU and I want to use an Arduino with ATmega328 for a PSU's multimeter. The Voltage and Current should be displayed on a 16x2 character LCD. My question is what I need to measure the voltage and current and how to convert it.
Regards.

Measure the voltage - use a divider so the highest voltage you see is <5 , then connect to an analot pin & read it:
voltage_measure = analogRead (A0); for example.

http://arduino.cc/en/Reference/AnalogRead

For the current, add a shunt resistor just above the ground point for your returns, then measure the voltage across the shunt.
Current will equal voltage measured/shunt resistance.
Or find any known place in your circuit where current is flowing thru a resistor measure the 2 sides of the resistor
(Voltage_high - Voltage_low)/resistor = current.

The PSU is 30V and 3A, but I'll use separate power supply for the Arduino board.

Shunt resistor examples

Keep Vout <5V for voltage measurement. Pick R1 + R2 so their total is greater than 30V/.001amp = 30K ohm

I'm looking at implementing this too in a bench top power supply I am building. I had a quick question, do the analog pins read negative values as well? I'm looking at having a +/-12v adjustable supply and didn't know if I would be able to directly read the negative values off of that branch.

No, you cannot exceed 0 to +5V.
However if the arduino ground is not connected to the PS ground, that is, floating like a multimeter, you can connect the arduino ground to -12 and the analog-in to the voltage divider above, and take a reading that way. Make sense?

Thanks! That's exactly what I wanted to know. I like the idea but since I am using the arduino to monitor other voltages as well I think I may use a simple inverting amplifier with a gain of 1 to switch the polarity. I was also thinking of using a sinple amplifier circuit to amplify the volatge across the shunt resistor so I can use a smaller shunt and still maintain a high level of granularity in my measurement. Any thoughts?

Those would would work, you do have the +/-12V to work with.
You have 6 inputs you could scan thru, or you could set up some analog switches to scan thru. Lots of options.

I was also thinking of using a sinple amplifier circuit to amplify the volatge across the shunt resistor so I can use a smaller shunt and still maintain a high level of granularity in my measurement. Any thoughts?

Depends if your shunt is high-side or in the ground-return. A high gain opamp circuit will work in the latter case, but then ground isn't quite at ground because of the voltage drop across the shunt. There are modules that can do voltage and high-side current sensing/amplification yielding outputs in the 0--5V range.

I was wondering if an amplifier would work with a high side shunt or not. I don't know of anything that would work on the high side but have not had a chance to look yet.

High side shunt, you could set up a differential amplifier and feed that output to the arduino.
Make sure the voltages on the shunt are within the range of your opamp +/-supply or use voltage divider to get them down.
Or measure both sides separately and just do the math.

Hey,

Well, i don't know what is the range of current and voltage you're looking for measurement. There is a simple way out though-

Go for an I2C measurement IC. I have worked on Texas instruments INA219 before with arduino fio. It works perfectly well, though for voltage till 26V and current 4Amps. Best part is, you need to make only 4 connections(Data, clock, Vcc and ground. I2c code is also simple to work out.
Here's a good tutorial to start with I2c
http://naneau.nl/2009/01/18/arduino-and-an-i2c-temperature-sensor/

Good luck.

AWESOME that is exactly what I am looking for, I just put some of those INA219 chips on order to play around with. Will need to work out the code. Although I know the basics of C++ haven't done much with Arduino code yet. Will need to figure out the bus code and what not, should be fun.

I am working on a load simulator for solar panel testing. The load simulator circuit is pretty straightforward and has been discussed in literature:

http://www.springerlink.com/content/778809q969528p42/

The hard part is measuring 0-100V on the Arduino accurately for the panel voltage and current (I am using a current shunt). I was thinking of using a simple voltage divider circuit, however I am afraid I will not get good accuracy. Connecting the voltage divider to a digital Arduino pin (0-5V) means that I would need a tolerance of about 0.05V on the digital pin to achieve single volt accuracy. Is this feasible on the Arduino?

Edit: The end goal here is to simultaneously measure current and voltage during a load sweep and write the values to a memory card. This would be a portable handheld device

Arduino accuracy is 0.0048V/bit with a 0 to 5V input into an Analog pin (not digital).
So 100/20 = 5V = a reading of 1023
Thus 1 bit = 0.0048 * 20 = 0.098V.

However, if your arduino is a handheld device, that means your ground is not really ground - and if you connect across the shunt with arduin ground on 1 side side and the Analog input on the other, you should be seeing much less voltage.
For example, this 10mOhm shunt available at dipmicro.com. You would have to put 500A thru it to see a 5V across it (5V/0.01ohm = 500).
How many amps are you expecting?

My mistake - that would be an analog pin.

I'd like to test panels that generate anywhere from 0.1A to 6A, and eventually panels around 10A.

I have two working PCBs for the PSU. Now I'm trying to make LCDs which will display the voltage and the current. I'm going to use Arduino for measurment and voltage deviders. My question is, could I use only one Arduino board to measure voltage and current from both PCBs (because of the common ground, which I should use for the Arduino board)?

Morpheus,
This thread has been all over the place, so I can't say.
If you are only measuring Voltages between Gnd & a positive level, then I would think you would want the Grounds of both boards connected together also to the arduino ground.
If you are measuring voltage across a shunt resistor like a floating multimeter, then you may not want to be connected to ground at all.

CrossRoads:
Morpheus,
This thread has been all over the place, so I can't say.
If you are only measuring Voltages between Gnd & a positive level, then I would think you would want the Grounds of both boards connected together also to the arduino ground.
If you are measuring voltage across a shunt resistor like a floating multimeter, then you may not want to be connected to ground at all.

I want to measure voltage and current, so I'll use a shunt resistor. But how I can measure like a floating multimeter, without connect the ground to the Arduino?

When you use a multimeter, do you connect anything but the 2 leads?
Use the Arduino the same way.
Gnd to the lower voltage, and Analog in to the higher voltage.
DO NOT SWAP - Ground must always be lower, or you will damage the analog pin.