Author Topic: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp  (Read 18901 times)

0 Members and 1 Guest are viewing this topic.

Offline gildasdTopic starter

  • Frequent Contributor
  • **
  • Posts: 935
  • Country: be
  • Engineering watch officer - Apprentice Officer
    • Sci-fi Meanderings
Thanks to forum suggestions, I was able to set up basic three wire load cells to have insignificant drift (less than 0.01mV per day).
I've tweaked that circuit during the last 2 weeks (long test times) and it's better than what I can measure  :-+

Now the output must be converted from it's 0.01mv/0.30mV range to the Arduino ADC 3.2mV/3.3V range.
That means that each 0.01mV must become about 3.2mV, or amplified 320 times.
No worries for an Op Amp, 10kOhm on the positive and 3MkOhms between the negative and the output! No?
Not really, I have about 1.645 V of common mode voltage to remove and the noise on the ground is higher than my signal (must use 6V Samsung phone chargers).

So I have to make a difference amplifier. So far I've only tested three version of instrumentation amplifier:

This is my "learning" circuit, a solder copy of what I was taught in class:



Red = 6V
Black = Ground
Green = -2.8V
Top white wire = reference sensor, not loaded.
Bottom white wire = test sensor.
Sorry about the crap soldering, tried going fast.

10K and 100K to work with round numbers to learn.
LM741's will be replaced by 14pin 4ex RC4136 or TL084 in definitive version.
It does not amplify anything, but manages to reference the signal to ground effectively:
I am just wondering that the trimmer (Cermet 100kOhms) is affecting the sensitivity but not amplifying?
Thusly should the 10k resistor with the question marks be replaced by a 100k or 1M Resistor?

Before this I did 3 test boards, I tried solving it on my own but I have only solder burn marks to show for it...

Edi: Added extra view with a previous 4 ex TL084 - that did not work - doing the LM741 version to be able to trouble shoot it.
« Last Edit: November 20, 2015, 11:41:12 pm by gildasd »
I'm electronically illiterate
 

Offline gildasdTopic starter

  • Frequent Contributor
  • **
  • Posts: 935
  • Country: be
  • Engineering watch officer - Apprentice Officer
    • Sci-fi Meanderings
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #1 on: November 20, 2015, 11:39:07 pm »
What is the frequency of the signal you are measuring?
It's DC.
I'm electronically illiterate
 

Offline Aodhan145

  • Frequent Contributor
  • **
  • Posts: 403
  • Country: 00
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #2 on: November 20, 2015, 11:52:58 pm »
There is no gain on the differential amplifier.
Vout = (V2-V1)*(R3/R1)
Therefore:
     Vout = (V2-V1)*(10k/10k)
     Vout = (V2-V1)*1
Increase the 10k resistor going across the inverting input and the output of the differential amplifier to 3M resistor.
That would be a gain of 300 which should be suffice for the arduino adc.
 

Offline gildasdTopic starter

  • Frequent Contributor
  • **
  • Posts: 935
  • Country: be
  • Engineering watch officer - Apprentice Officer
    • Sci-fi Meanderings
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #3 on: November 20, 2015, 11:57:34 pm »
There is no gain on the differential amplifier.
Vout = (V2-V1)*(R3/R1)
Therefore:
     Vout = (V2-V1)*(10k/10k)
     Vout = (V2-V1)*1
Increase the 10k resistor going across the inverting input and the output of the differential amplifier to 3M resistor.
That would be a gain of 300 which should be suffice for the arduino adc.
Will do first thing tomorrow. Thanks!
But what is the use of the central trimmer? Sensitivity?
Is worth trying to get rid of the 10mV of common mode voltage left over  after the first stage?
« Last Edit: November 21, 2015, 12:01:23 am by gildasd »
I'm electronically illiterate
 

Offline Aodhan145

  • Frequent Contributor
  • **
  • Posts: 403
  • Country: 00
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #4 on: November 21, 2015, 12:07:32 am »
There is no gain on the differential amplifier.
Vout = (V2-V1)*(R3/R1)
Therefore:
     Vout = (V2-V1)*(10k/10k)
     Vout = (V2-V1)*1
Increase the 10k resistor going across the inverting input and the output of the differential amplifier to 3M resistor.
That would be a gain of 300 which should be suffice for the arduino adc.
Will do first thing tomorrow. Thanks!
But what is the use of the central trimmer? Sensitivity?
Is worth trying to get rid of the 10mV of common mode voltage left over  after the first stage?

Just remembered this is an instrumentation amplifier the equation is different.  :palm: Don't make the last change sorry. The central trimmer is for gain.
« Last Edit: November 21, 2015, 12:12:30 am by Aodhan145 »
 

Offline Aodhan145

  • Frequent Contributor
  • **
  • Posts: 403
  • Country: 00
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #5 on: November 21, 2015, 12:12:13 am »
What about using a 9k resistor instead of the trimer. It would get your desired gain. If it still does not work check your soldering..
 

Offline Aodhan145

  • Frequent Contributor
  • **
  • Posts: 403
  • Country: 00
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #6 on: November 21, 2015, 12:34:31 am »
Another possibility is getting an instrumentation amplifier IC. All you need is a gain resistor.
http://www.farnell.com/datasheets/1837576.pdf
 

Offline gildasdTopic starter

  • Frequent Contributor
  • **
  • Posts: 935
  • Country: be
  • Engineering watch officer - Apprentice Officer
    • Sci-fi Meanderings
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #7 on: November 21, 2015, 08:37:22 am »
Another possibility is getting an instrumentation amplifier IC. All you need is a gain resistor.
http://www.farnell.com/datasheets/1837576.pdf
I think I will...
This a bit of an honest demonstration to my teachers that if amplifying such a small signal using stand alone op amps is possible, that doing it across 8 sensor is a bit nuts.
The final boards as well as supplying data for my project, are part of the pcb designing class, so I must keep some parts on it, if I put a single fat IC in the middle, 4 leads in, one lead out and a power connector, the prof would not be amused!

I'm looking at that IC, seems pretty cool. Thanks.

Here is the schematic from last year's class:

The formula given is:
vs1-vs2=(1+R2/R1+R3/R1)(v1-v2)
As I need to find R1:
R1=  (R2+R3)/(((vs1-Vs2)/(v1-v2)-1))
If I replace the values:
R1=  (10000+10000)/(((0.0032/0.0001)-1))=645 Ohms.

But it does not seem to be doing this...
I did a pin by pin check of resistance and continuity, did not find anything amiss.
« Last Edit: November 21, 2015, 11:05:12 am by gildasd »
I'm electronically illiterate
 

Online Zero999

  • Super Contributor
  • ***
  • Posts: 19566
  • Country: gb
  • 0999
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #8 on: November 21, 2015, 01:45:32 pm »
LM741's will be replaced by 14pin 4ex RC4136 or TL084 in definitive version.
It does not amplify anything, but manages to reference the signal to ground effectively:
I am just wondering that the trimmer (Cermet 100kOhms) is affecting the sensitivity but not amplifying?
Thusly should the 10k resistor with the question marks be replaced by a 100k or 1M Resistor?

Before this I did 3 test boards, I tried solving it on my own but I have only solder burn marks to show for it...

Edi: Added extra view with a previous 4 ex TL084 - that did not work - doing the LM741 version to be able to trouble shoot it.
I doubt you'll be able to get the desired sensitivity with general purpose amplifiers. You need an op-amp with a low offset voltage, bias current and high common mode rejection. The OP07 is probably the cheapest and most widely available which would be adequate but the OP747, LT1014, OP747, AD704 would be good.
 

Offline Dave

  • Super Contributor
  • ***
  • Posts: 1352
  • Country: si
  • I like to measure things.
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #9 on: November 21, 2015, 01:49:29 pm »
I am not surprised that the trimmer isn't actually altering the gain of your circuit. Nodes C and D from your original schematic are merely buffered versions of A and B.
The way you have your circuit wired, you have a gain of exactly 1.
You need to connect the inputs of the differential amplifier to the outputs of the first two opamps, not the feedback nodes. See attached image.
<fellbuendel> it's arduino, you're not supposed to know anything about what you're doing
<fellbuendel> if you knew, you wouldn't be using it
 

Offline Andreas

  • Super Contributor
  • ***
  • Posts: 3252
  • Country: de
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #10 on: November 21, 2015, 02:13:26 pm »
Now the output must be converted from it's 0.01mv/0.30mV range to the Arduino ADC 3.2mV/3.3V range.
That means that each 0.01mV must become about 3.2mV, or amplified 320 times.
No worries for an Op Amp, 10kOhm on the positive and 3MkOhms between the negative and the output! No?
Hello,

You should use the "right" OP Amp for this purpose.
E.g. a LTC2053

with best regards

Andreas
 

Offline poorchava

  • Super Contributor
  • ***
  • Posts: 1672
  • Country: pl
  • Troll Cave Electronics!
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #11 on: November 21, 2015, 02:20:41 pm »
Yep,  using the jellybean general purpose amps won't cut it here. Unless you're trying to proove some point,  I'd go for integrated instrumentation amp. It's hard to beat performance of those using discrete solutions.

Sent from my HTC One M8s using Tapatalk.

I love the smell of FR4 in the morning!
 

Offline gildasdTopic starter

  • Frequent Contributor
  • **
  • Posts: 935
  • Country: be
  • Engineering watch officer - Apprentice Officer
    • Sci-fi Meanderings
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #12 on: November 21, 2015, 03:02:06 pm »
Dave, Well seen, will do.
I got some more appropriate op amps to test, the 741 was a test with a known quantity.
I 'm checking  out data sheets of discrete instrumentation amps, the only major problem is that my comon mode current is too high. I think I can cheat by shifting the sensor current from 0v/3.3v to -1v/2.3v.

Thanks for all the help.
« Last Edit: November 21, 2015, 03:36:43 pm by gildasd »
I'm electronically illiterate
 

Offline Marco

  • Super Contributor
  • ***
  • Posts: 6726
  • Country: nl
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #13 on: November 21, 2015, 03:37:13 pm »
You really need an auto-zero differential amplifier for this if you actually want that 10uv accuracy. Like an autozero inamp, AD8293, MAX4208/9, etc.
« Last Edit: November 21, 2015, 03:46:24 pm by Marco »
 

Offline Aodhan145

  • Frequent Contributor
  • **
  • Posts: 403
  • Country: 00
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #14 on: November 21, 2015, 03:40:18 pm »
He says its going to a micro so can't he just calibrate it in software? Then he could use general purpose op amps.
 

Offline Marco

  • Super Contributor
  • ***
  • Posts: 6726
  • Country: nl
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #15 on: November 21, 2015, 03:44:18 pm »
He says its going to a micro so can't he just calibrate it in software? Then he could use general purpose op amps.

A couple degrees change in temperature will destroy the calibration.

With analog switches there are various ways he could make his own auto-zero mechanism of course.
« Last Edit: November 21, 2015, 03:45:56 pm by Marco »
 

Offline gildasdTopic starter

  • Frequent Contributor
  • **
  • Posts: 935
  • Country: be
  • Engineering watch officer - Apprentice Officer
    • Sci-fi Meanderings
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #16 on: November 21, 2015, 03:52:29 pm »
He says its going to a micro so can't he just calibrate it in software? Then he could use general purpose op amps.
Sorry, I did not explain propely, I'm going for ready made instrumentation amps.
« Last Edit: November 21, 2015, 03:56:05 pm by gildasd »
I'm electronically illiterate
 

Offline Marco

  • Super Contributor
  • ***
  • Posts: 6726
  • Country: nl
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #17 on: November 21, 2015, 03:55:41 pm »
As I said, you need to be looking at auto-zero inamps.
 

Offline gildasdTopic starter

  • Frequent Contributor
  • **
  • Posts: 935
  • Country: be
  • Engineering watch officer - Apprentice Officer
    • Sci-fi Meanderings
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #18 on: November 21, 2015, 04:50:40 pm »
He says its going to a micro so can't he just calibrate it in software? Then he could use general purpose op amps.

A couple degrees change in temperature will destroy the calibration.

With analog switches there are various ways he could make his own auto-zero mechanism of course.
The sensor to sensor drift is taken care by an unloaded sensor used as a common reference.
As for global drift, it does not matter (if in the single mV range) as long as the sensor to sensor drift is the same (all the sensors on the same board sharing refs, voltage channels etc).
I want to measure difference between sets of 4 sensors, no the weight on a single sensor.

I'll be doing some filtering of data with software, right now the problem is getting it between the goal posts.

I did a 24 hour sensor test outside, and the sensor drift was barely visible ( less than 0.01mv). I hope the IC's will fare the same!
I'm electronically illiterate
 

Offline Aodhan145

  • Frequent Contributor
  • **
  • Posts: 403
  • Country: 00
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #19 on: November 21, 2015, 05:59:06 pm »
Prototype it if you have the general purpose op amps. but when making the pcb for your class change the opamps.
 

Offline gildasdTopic starter

  • Frequent Contributor
  • **
  • Posts: 935
  • Country: be
  • Engineering watch officer - Apprentice Officer
    • Sci-fi Meanderings
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #20 on: November 21, 2015, 08:56:45 pm »
I am not surprised that the trimmer isn't actually altering the gain of your circuit. Nodes C and D from your original schematic are merely buffered versions of A and B.
The way you have your circuit wired, you have a gain of exactly 1.
You need to connect the inputs of the differential amplifier to the outputs of the first two opamps, not the feedback nodes. See attached image.
Did your fix, here are some quick results:
Trimmer at 9kOhms
1) AB no load =  0.005mV
Approx max range = 0.7mV
2) CD = -2.668mV (fluctuates from -2.74 to -2.63mV)
Approx max range = 2mV
3) Vo to Ground =-8.32mV (fluctuates from -8.34 to -8.31mV)
Approx max range = 2mV

So it's working (if not sufficiently yet), the base voltage is a bit high, I would like to see below 3.2mV, but this just a first "test".
Thanks!
« Last Edit: November 21, 2015, 08:59:38 pm by gildasd »
I'm electronically illiterate
 

Online mk_

  • Regular Contributor
  • *
  • Posts: 229
  • Country: at
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #21 on: November 21, 2015, 09:27:30 pm »
Thanks to forum suggestions, I was able to set up basic three wire load cells to have insignificant drift (less than 0.01mV per day).
I've tweaked that circuit during the last 2 weeks (long test times) and it's better than what I can measure  :-+

Now the output must be converted from it's 0.01mv/0.30mV range to the Arduino ADC 3.2mV/3.3V range.
That means that each 0.01mV must become about 3.2mV, or amplified 320 times.
No worries for an Op Amp, 10kOhm on the positive and 3MkOhms between the negative and the output! No?
Not really, I have about 1.645 V of common mode voltage to remove and the noise on the ground is higher than my signal (must use 6V Samsung phone chargers).



Even if you are learning a lot doing it this way - take a look at the AD8237. This tiny (and cheap) Diff-Amp will  -with some low tempco-Resistors - do it much better then you can do it....

BTDT.

Good luck

 

Offline gildasdTopic starter

  • Frequent Contributor
  • **
  • Posts: 935
  • Country: be
  • Engineering watch officer - Apprentice Officer
    • Sci-fi Meanderings
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #22 on: November 21, 2015, 09:45:22 pm »
Thanks to forum suggestions, I was able to set up basic three wire load cells to have insignificant drift (less than 0.01mV per day).
I've tweaked that circuit during the last 2 weeks (long test times) and it's better than what I can measure  :-+

Now the output must be converted from it's 0.01mv/0.30mV range to the Arduino ADC 3.2mV/3.3V range.
That means that each 0.01mV must become about 3.2mV, or amplified 320 times.
No worries for an Op Amp, 10kOhm on the positive and 3MkOhms between the negative and the output! No?
Not really, I have about 1.645 V of common mode voltage to remove and the noise on the ground is higher than my signal (must use 6V Samsung phone chargers).

Even if you are learning a lot doing it this way - take a look at the AD8237. This tiny (and cheap) Diff-Amp will  -with some low tempco-Resistors - do it much better then you can do it....

BTDT.

Good luck

Not a bad part.
But for this use, I would have to redesign the sensor supply to be negative... And the sense sensors to be positive.
That's not a good idea with the sensors I have...

Meanwhile,
I've been testing the circuit:
At 504 Ohms, the range is 23mV
A 8 Ohms, the range is 740mV. Below that it becomes unstable.
The results I'm finding are not linear nor correspond to the math model I was given...

I'm going to do a final test board with a RC4136N.
I'm electronically illiterate
 

Online Zero999

  • Super Contributor
  • ***
  • Posts: 19566
  • Country: gb
  • 0999
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #23 on: November 21, 2015, 09:50:45 pm »
I'm going to do a final test board with a RC4136N.
Why? Do you not have access to decent precision op-amps?
 

Offline gildasdTopic starter

  • Frequent Contributor
  • **
  • Posts: 935
  • Country: be
  • Engineering watch officer - Apprentice Officer
    • Sci-fi Meanderings
Re: Amplifying a 0.01mV to 3.2mV signal to Arduino ADC strength - Op Amp
« Reply #24 on: November 21, 2015, 10:23:25 pm »
I'm going to do a final test board with a RC4136N.
Why? Do you not have access to decent precision op-amps?
I've got what my local Chippy (Gotron.be) has for now.
The sensor supply and output was only finished Tuesday. Been fooling around with TL084, LM324 and RC4136 to understand the problem before ordering parts.
I really want to avoid a professor going "you could have done this with a 741 for less" during the defence stage of my thesis...
I have to dedicate a page to "developing" each part, thus rejecting components.

Having been an industrial designer, this is a bit senseless to me, but that's how they want it in my Uni...

Testing the RC4136N is just prove it's not the excessive dead bug wiring that is causing problems (if they have to ask)...
The INA126/2126 seems to be near perfect, I only need to shift my voltage a bit.
I'm electronically illiterate
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf