analogreference and resolution question (STILL NEED HELP)

Hi everyone,

Im new to arduino and I wanna know something about analogread and reference. I have an input from a shunt that measures amps of a circuit. It outputs a value between 0 and 50 mV. I wanna use the analogreference and the aref pin to lower my upper limit to 50 mV, So then I can read in raw voltage between 0 and 50 mV with 1023 steps because its 10 bit?

Is there a way to set aref to 50 mV using a 5 volt power supply?

Also, do I need a resistor in the analog input? safety? or a diode? im not sure.


No, you cannot use Aref below 1.1V - you need to amplify your signal before conversion.

There is an internal 1.1V reference voltage you could use. However you can apply a lower external voltage than this but there is little point because then you get into the noise of the system and the values returned in the least significant bits are meaningless. This is true of all A/D converters when you use them with lower than the recommended reference voltage.

Ok, so how would I amplify the signal coming out of the shunt? And just for practice, how do I lower the 5V pin to around 100 mV for the aref pin.


Use a non inverting operational amplifier.

Not sure where you get 100mV from. The 1.1V reference is built in and switched to by software.

So like this?

How would I even hook that up?

I hate how they never give you specs...

If you don't know how to hook up an op-amp, then you need to start a little closer to ground zero. I'd find a tutorial and learn a little.

In case you didn't get what Grumpy_Mike is trying to tell you: The minimum allowable Vref is 1.0 volts. You can't use 100 mV. You'd be better off using the internal reference, Vint, since you don't gain anything by supplying your own.

May be you can change shunt value, to get higher voltage?

Normally shunt resistances are chosen so as to not effect the circuit they are measuring. The OP possibly doesn’t have the option of raising the shunt resistance enough to help. If he doesn’t want to amplify the signal, an alternative would be to use an external ADC with a large enough dynamic range to accurately handle the 0-50 mV signal and read it into the Arduino for further processing and display. A 24-bit ADC would give you about 0.1 microvolt resolution with a 1 volt reference. Ought to do the trick.

I can't agree with your logic. If OP have no knowledge to build simple OPA amplifier, how he/she could follow your advise to implement external 24-bit ADC? It doesn't make any sense. I just assume, that OP probably doesn't work on something high power or high precision, when increasing shunt resistance wouldn't be desirable. The same time it is the easiest way for someone w/o electronics background. If shunt resistor "build-in" IC, there is always option to add external one.

I wasn't using any logic. I was just suggesting an alternative. If OP is going to have to wire something up based on a tutorial or suggestion rather than from their own knowledge, an external ADC is no more complicated than an op-amp. You didn't say how much higher you would suggest raising the shunt resistance. You have to worry about compliance voltage problems if you raise it to much.

I would like to hear more about the application.

Well the OP didn't state what full scale amps through the shunts creates the 50mv drop, but typically one doesn't like the wasted power and decreased voltage that results when raising the resistance of the shunt. I would think a op-amp set for a gain of 20 and using the internal band-gap reference would get the best results for the least complexity. A good low noise op-amp with rail to rail output capablity is not a hard component to spec, design, and build these days.


Agreed. I wouldn't use the 741 from Radio Shack in the link in this application.

I hate how they never give you specs

This is a very old OP amp, I was using them in the 1970s you need something more modern. However the data sheet is readily available on line.

How about this one:-

How would I even hook that up?

Start by reading the theory of them here:- and here:-

Remember you need to work out the resistors for a gain of about 20.

You may want to consider as a possible alternative to a shunt, the current sensing device here:

So i decided to go with an op amp. specifically the lm781cn from radioshack.

What i have done so far is:

V+ to the +5V pin V- to ground inverting input to output with 100K resistor, then 1K to ground non inverting is the signal

Is there anything wrong with this setup or am i good to go?


specifically the lm781cn

Are you sure, when I search for this I get either an LED or voltage regulator.

inverting input to output with 100K resistor, then 1K to ground

No, put the 1K to a signal reference ground. This can be made with two 1K resistors connected like a potential divider giving 2.5V, this is the point where you put the end of your 1K resistor. Also put two 0.1uF caps across each of the two potential divider resistors.

oh sorry it was 741.

And i dont really understand what you are saying. divide what voltage? I understand what a voltage divider is. but why?

As of what i have now im getting a output signal of 4.5 volts with no input. what is going on?

Then if i disconnect the V- from ground the output drops to 3 Volts.

help please?

im confused.

divide what voltage?

The supply voltage.

but why?

To give a signal ground.

Op amps require a positive and negative power supply. You haven't got one, so to trick it you make a false signal ground at +2.5V with a potential divider and use some capacitors to lower the impedance.

oh sorry it was 741.

Look at the data sheet, it won't work with just a 5V supply. The data sheet says it needs a +/- 12V supply. That's 24V in total. You are only giving it +/- 2.5V.

An op amp has a gain of several thousand, when you say no input do you mean the two inputs connected together, that is the only way to have no input on an op amp.