Removing pre-load voltage difference for a load cell

1. Sep 8, 2011

bjh0003

I am trying to use a 0-5000 lb load cell with an Arduino. My issue is the 10 bit input on the Arduino. The load cell will actually be pre-loaded to about 3800 lbs. I just need to measure up to a couple hundred pounds difference. The load cell is a standard 4 wire and measures the difference in voltage between two of the wires. I need my resolution to be better than 5 lbs which is what it would be currently. Any help would be awesome, thanks.

2. Sep 8, 2011

fleem

I'm not sure I understand. Are you saying the A/D input does not have the dynamic range you need because its only 10 bits? Are you using two A/D inputs to receive the differential voltage and then subtracting them in software? If so, you could probably add a fairly simple circuit that adds a differential offset to the signal before you give it to the Arduino's A/D inputs.

3. Sep 8, 2011

dink

With a 10 bit ADC, you are already kinda sitting in the noise floor of your ADC. 4.88 lbs per bit is not very good if you need 5lbs of accuracy. I usually shoot for 10 x precision of what I am trying to measure. I assume the Arduino 10 bit input is a built in ADC input, correct? You may need to use an external device that uses SPI/I2C or whatever the Arduino can talk to.

4. Sep 8, 2011

bjh0003

I am using an instrumental amplifier and the output is a voltage that I'm putting into the A/D input. The load cell has four wires. One is power, one is ground, and the other two are used to actually get the measurement (difference in voltage). So I am thinking that the only way to remove the initial offset would be before the amp. Maybe run the two signals through individual op amps (the difference is only a few millivolts so it'll have to be amplified before adding in a voltage) and add in the appropriate voltage offset before running them into the instrumental amp. The circuitry I think I need is just a little above my knowledge level. I'm an ME and electrical is hard...

Oh and yeah the Arduino 10 bit is built in.

5. Sep 8, 2011

fleem

OK I think see now. Correct me if I'm wrong:

You have an amplifier that takes a differential signal from a load cell and outputs a single-ended signal to the A/D input. There is a minimum force on the load cell which is quite high. So the problem is that when you adjust the amplifier's gain to get enough resolution, the output voltage is (or may go, when even more force is added) outside the voltage range of the A/D input.

Assuming that's the case, then if the range of force is still within the acceptable range for the amplifier, then you can subtract some voltage from the single-ended signal that goes from the amp to the A/D input, which is pretty easy. You'd just need two resistors (as a voltage divider) and a negative power supply. Then account for the different gain and offset in the software.

However, if the output of the load cell is too much for the amplifier, then all I can say is you need another amplifier with a wider dynamic range. This is because if you try to make a simple voltage divider circuit with the signal from the load cell you are liable to cause nonlinear or indeterministic things to happen to that signal, because we don't know the circuitry driving that load cell output signal. If you try to avoid that problem by making a very high impedance voltage divider, then noise might become a problem or the amp's input impedance might start to make a difference. If you're going to make an op-amp preamp, then you might as well get rid of the main amplifier and just use the single-ended output of the op-amp to drive the A/D--and that's an OK solution as long as the op-amp ckt has the dynamic range you want and provides an offset.

Last edited: Sep 8, 2011
6. Sep 8, 2011

bjh0003

The problems with that are that the I am using the Arduino as my power supply and obviously my max output voltage is limited to the 5 volts of the Arduino. Also the A/D takes inputs from 0 to 5 volts. The full scale output is only 9mV (before amplification). So for my preload the sensor output will be a differential of around 7 mV. Is there any way to subtract that differential voltage to essentially zero out the load cell?

7. Sep 10, 2011

fleem

Hmmm, if it were me I'd just breadboard a high impedance differential amp like the one here http://freecircuitdiagram.com/2008/10/16/three-op-amps-instrumentation-amplifier/ but I'd replace R4 with a voltage divider between power & gnd made of two 1K resistors (where the center node of the divider is connected to the op amp + terminal). Then also connect that node to the wiper on a pot (multi-turn, and about 100K) that has its side leads connected to power and ground. Use a higher resistance pot for less sensitivity. Then use 500 ohms as the value for R2, also. And pick a value for R1 and R3 (same value) to get the approximate overall gain you want (~R1/R2). Once you've set the pot for a good offset, you'll need to empirically find the gain. You can only approximately calculate the gain because even if you knew the exact pot position you still don't know the exact values of the other resistors. Then account for the offset and gain in your software. Make sure the op-amp chip can run on 5V. If the load cell common-mode voltage is not near the rails then this should work fine (I imagine its somewhere about 2.5V?). If you're interested I can post the modified ckt. The text on that page discusses a pot for CMRR (common mode rejection ratio) which is the same as offset, in your case.

Here's a decent op amp: http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=497-2980-5-ND

And here's a pot: http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=490-2895-ND

Last edited: Sep 10, 2011
8. Sep 12, 2011

bjh0003

That sounds like it might really help us. I would appreciate it if you could post the modified circuit. To make sure I understand correctly, you use the pot to adjust the voltage coming from the voltage divider?

9. Sep 12, 2011

fleem

I suggest (approximately):

R2 = 100K
R4,R5 = 220K
R6 = 1M

R1 and R3 must be the same, and adjust them for the desired gain as described in the text on that page I linked in the previous post. For example, for a gain of 200, R1 and R3 need to be about 500 ohms each.

Since I changed my mind on the pot value, don't get the one I mentioned previously. This looks like what's needed:

http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=490-2896-ND

You can put it on a solderless bread board like this: http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=700-00012-ND

Or solder it on this: http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=3405K-ND [Broken]

Don't forget to connect power to the chip! The +V is 5V and the -V is ground from the Arduino.

Put a voltmeter on the output and adjust the pot for about 2.5 V output. Then have your software somehow output what it sees coming in the A/D and try different known forces so you can empirically find the gain and offset. Then make your software handle it however you want. You might want to glop some glue on the pot control so people don't play with it, but use something that can be peeled off if needed.

Disclaimer: This might nuke and/or invalidate the warranty on your Arduino. Obtain professional advice before attempting. Wear eye protection and have a large fire extinguisher handy. (Seriously. Connecting power backwards, among other things, can make a chip explode)

Attached Files:

• 3_op_amp_instrumentation_amplifier.gif
File size:
7.6 KB
Views:
228
Last edited by a moderator: May 5, 2017
10. Sep 14, 2011

bjh0003

Thanks a lot! We're working on building it today, I'll let you know how it goes.

11. Sep 15, 2011

fleem

*crosses fingers*

Thinking ahead, if it has problems other things to consider are:

Don't try to squeeze too much gain out of the op-amps. Generally speaking, resistor values might also need to be scaled.

If you have pretty long wiring, you might want to put common-mode and differential mode bypass caps on the signals and power lines near each device, and maybe even some common-mode and differential mode ferrite beads.

But don't do any of this unless a problem merits it.