can arduino read Millivolt values from analog input

Ok, so I'm not getting something like negative voltages and stuff right, lol sorry I do not know how to post up a figure here

So yea like i was saying if there i'm not getting any negative voltages or anytihng that sort, its all going to be relative voltages.

cool,
And the op amp seems to saturate at 8.6mV input of output 1.87V anyway to increase this.

Peter , thanks so much for being with me on this

And ok Like i said I made a ref ground its like i divided a 10 Dc into two using a voltage divider liek making it -5 +5 cos this op amp cannot run of 0V to 5V, it needs -5 V to +5V

SO , i was thinking again, arduino works on 0to5V right, so If i have a voltage divider on my circuit (im about print one using Eagle PCB ) so would the voltage divider divide the 0 to 5 to -2.5 to +2.5??

and yes, I'm looking for the differential pressure I dont not need absolute pressure for my project.

Did you tell which Arduino board you use ? I can't find it.

When you click the "REPLY" button, there is an option below the text input field called "Attachments and other options", you can use that to attach a picture.

The INA125 is the chip to use with Arduino for a bridge sensor, because there is no voltage divider needed when the INA125 is used with a bridge sensor.

This is the manufacturer's page : http://www.omega.com/pptst/PX26.html
The "zero balance" is +/- 1.5mV. I think that is the initial offset for zero pressure.
The output would be (almost) 0V for zero pressure and it is linear. That's very good. I never had a silicon pressure sensor, only piezo pressure sensors which have different specifications.

I think the optimal voltage for the sensor is 10V. That can be +5V and -5V or just 10V and GND.
You can map the output of the opamp around 2.5V with a voltage divider between 5V and GND.

An idea for later:

Perhaps it is even possible to use the 3.3V of the Arduino, and use a voltage divider for 3.3V/2.
The 3.3V more stable, the 5V could be from the USB which is not a good 5V. The reference voltage can be set to 3.3V by connecting the AREF to the 3.3V pin. That is dangerous, you have to set analogReference() before calling analogRead().

I think you really have to build something and see what it will be for real.

I'm using arduino mega 2560, look for the attached circuit.

ok, i'm trying to reframe my quesiton, tell me i'm making my self clear peter.

  1. I'm using this around a valve to know the differential pressure, lets say side A and side B
    Now if side A>B i get a positive voltage in milli volts, what if side B>A would it give a negative voltage? so would I get a range of voltages for its full functionality from negative to positive like say -8mv to +8mv?

2)I'm using an op amp to amplify the reading so I could amplify 8.6mv to 1.8V and then the opamp saturates, is there any way around this?

  1. the opamp AD620AN which is a instrumental amp to be precise , needs voltage ranges -5 t0 +5 so i used a 10 volts dc, made a voltage divider, created a virtual ground. So what if I connect this system to arduino (0to5V range) would the divider cut off the system to (-2.5 to +2.5)? If so, should I check my circuit by using a 5V Dc and using the divider and check how the opamp responds?

1 ) Yes.

2 ) With a high gain, the output clips/saturates. You can lower the gain to avoid that. But if you only want to measure low voltages (low pressures), let it clip.

3 ) The AD620 is an intrumentation amplifier with high impedance inputs and seperate gain resistor. That is perfect for a bridge sensor. It also has a opamp output stage with 'REF' (pin 5) to shift the signal. Very nice, that's what we need :stuck_out_tongue:

The 5V virtual ground, would map the output signal around the 5V. I would use 2.5V. With no pressure, the +OUT and -OUT of the sensor are the same, and the output of the AD620 would be 2.5V. Higher pressure makes it higher than 2.5V and lower pressure (negative pressure) makes it lower than 2.5V.

Did you calculate the 220 ohm gain resistor, or did you copy it from the other drawing ?

With 10V, the output of the AD620 is from 1.1V to 8.8V. The Arduino would use 1.1V to 5.0V. It is possible to use a voltage divider after the AD620, I don't know if that is better than a protection resistor.

The attached schematic is how I see it. I can change the voltages with +5V and -5V, but the 2.5V with voltage divider would stay the same.

px26_ad620.png

nice,
so i was using a voltage divider to create a virtual ground thats 5V
I'll change that to 2.5V for our use with arduino board

i measured it using multimeter gain is 216.9 on my breadboard.

I was thinking to use the pressure sensor ( bridge sensor) with a with arduino so 5v instead of 10v to get a clear picture of the amplification.

one thing that im trying to figure out.

Im using another voltage divider to check my gain and opamp circuits right as shown in the circuit so right now i can make upto 8mv and test it and then it hits saturation as you know for the gain im using , i was wondering how to make -ve voltages for testing the behavior of the amp, what would you suggest.

the differential pressure sensor according to its data sheet says +-16mV, so it would give me +16 or -16mV voltage readings based on the pressure change right?. So is there any way to simulate a say somthing -6mv and see how its amplified? As you know the need for amplification is to make arduino read the signal.

Sir, you have been with me helping with my questions I really appreciate your help.
Thank you!

and also, i notice if i use 400 gain the resolution of the amplification is reduced , this wouldnt effect what arduino can read right? approximately how many bit is a related to a rane of 0 to 1 volt after amplification

so its like 1 volt/1023 bits? thats how much each bit worth? how much should it be for a good analog read for arduino.
? I'm starting to get all this i guess:)

The default voltage reference is 5V for the Arduino Mega.
Note that, when the USB is used to power the Arduino board, the 5V could be 4.5 to 5.0V, that is not so good for analog measurements. You may need a power supply 7.5...9V and connect it to the DC barrel power jack.

With the voltage reference of 5V, a ADC value of 0 for 0V, and a ADC value of 1023 is for 5V.
That means 1023 steps over 5V is 5mV resolution.

To create +10V or -5V, a DC-DC converter can be used.
It is even possible to make it yourself with a voltage pump.
Here is a test I did, which didn't work very well : toneAC v1.2 - Twice the volume, higher quality, higher frequency, etc. - #70 by Peter_n - Audio - Arduino Forum
I think you better buy one of those DC-DC converters, with an isolated output of 5V, it can be used for -5V as well.

It is possible to use a voltage divider with three resistors as shown in your picture to create 6mV.
Suppose with 10V, resistors of 10k (upper and lower resistor) and 10 ohm in the middle makes about 5mV.

I think the pressure sensor will work at 5V. Also the AD620 will work at 5V. It might be worth to try it.

Yes, I'l try to power it externally that will be a good idea like you said.

one thing i was still trying to figure out is that the differential pressure sensor according to its data sheet says +-16mV, so it would give me +16 or -16mV voltage readings based on the pressure change right?. So is there any way to simulate a say something -8mv and see how its amplified? like i was saying i could simulate a positive mV to check my amp settings, how do i check -8mV?

what my understanding was, even if the signal is negative the op amp would still show me same reading that's for +8mV and -8mV , i mean to say each mv has a multiplied by certain gain used, and the negative and postive are just what sides of the differential pressure measured, but nothing to do with voltages.
is this right?

Thanks & Regards

Yes.
I read in the datasheet 16mV per psi. If the pressure (or flow) is reversed it will be -16mV.

If the +IN has 3.008V and the -IN has 3.000V, the input is +8mV.
If the +IN has 3.000V and the -IN has 3.008V, the input is -8mV.

To create -8mV you can also exchange the AD620 inputs.
Or when you use resistors, exchange the 10V and GND that is going to the resistors.

When i try to exchange the polarity for the Dc out, its acting strange,I'l try to swap the inputs and see

Don't change the voltage for the AD620, only for the three resistors.

I tried swapping the inputs +In and -In, I get about the same result for the mV voltages, so think its working right , right?

But this amp can only amplify a little, not full I tried changing the gain but it cant really go full range and amplify 16mv

You were saying something about -Vs+1.9 what was that about

I think now im getting a clear picture of whats happening, thanks peter :slight_smile:

Suppose the AD620 is powered with 10V, then output of the AD620 can go as low as 1.1V and as high as 8.8V.
That is not ideal for an Arduino.
The ideal amplifier would work at 5V and have a output range of 0V to 5V. I think that is called: rail to rail output.

I think it is working right, I don't know. I would have to know every voltage and resistor.

I increased the input to 15 volts, and the voltage divider splits it into 2 -7.5 +7.5 and then I get full amplification ( 0 to 16mv) , but I dunno how arduino would take this.

The arduino can not read negative voltages of course.
The maximum current that can pulled from an input or pushed into an input is 1mA.
Current is pulled/pushed from/into an input if the input voltage is below 0V or above 5V.
To protect the input, you can use a protection resistor.

Is the graph with measured data ? I think it is okay, the middle section is linear. It seems to clip to 3.3V which I don't understand.

I'm using +7.5 -7.5 inputs for the amp to get required amplification for my needs, but now the ground is 7.5 So the potential diff is 7.5 pso my system ref goes to that ground and, i'm not sure how to feed in Vout and ref to arduino with 7.5 diff, wouldnt that be a problem.