Looking for help with reading load cell

Hi all,

For my project I need to measure weight up to 800 g and 0.1g accuracy.
I tried doing that with a load cell out of a cheap pocket scale, a INA125 instrumntation amplifier and a ADS1211 ADC (Probably overkill but was cheap and there is a library for it).
My problem is that the accuracy is nowhere near the 0.1g I need (more like 1g).
Right now I'm feeding the signal from the INA125 directly into the ADC, will adding a low pass filter there help?
If yes, what would be a easy way to implement it?

Or is there a easier way read the load cell?



Cheap pocket scales usually have an accuracy of about 2g. Why do you think that you can achieve 0.1g accuracy with it? It's not just a question of the ADC, the load cell itself often is also the limiting factor.


thanks for your reply.
The pocket scale I got the load cell from had 0.1g accuracy and a range of 1000g.
My problem is that the value I read from the ADC is not stable enough.


What do you mean by ADC is not stable enough?

The value the arduino reads from the adc "jumps around" too much. I guess there is too much noise in the circuit, but I don't know how to get rid of it.

Are you powering the Arduino from the USB, and using the default 5V analog reference? If so, then part of the problem will be that your analog reference isn't stable. The voltage coming out of a USB port is around 5V but is neither precise nor stable.

To get round this, use the precision voltage regulator in the INA125 to produce 2.5V that you feed to both the load cell and to the Arduino AREF pin, and set the analog reference to Internal. Read the documentation for the analogReference function and take heed of the warning in it.

I'm not using the ADC on the Arduino but a external one.

Ok, so what are you using as the ADC reference, and what are you using to power the load cell?


the load cell is powered by the precision reference of the ina125. I'm using the 2.5V reference, as the datasheet says that input voltage has to be at least 1.7V higher than the reference voltage used. The ADC has a internal reference of 2.5V as well, which I am using as ADC reference. Both the INA125 and the ADS1211 ADC are powered by the Arduino, which is powered via USB (I have also tried batteries, but no change). Would it be better to use only one reference voltage for both the INA125 and the ADC?
Thank you for your help.


Yes, it would be better to use the same reference for both, so that any drift of the reference with temperature or supply voltage will cancel out. I suggest you feed the 2.5V from the INA125 that is powering the load cell into the REFin pin of the ADC. Here are some other suggestions, bearing in mind that you are trying to measure with a resolution of about 1 part in 10000:

  1. Ensure you have supply decoupling capacitors close to the INA125 and the ADS1211.

  2. Design the ground wiring carefully, so that any varying ground currents don't affect the reading. In particular, the AGND pin of the ADC, the IAref pin of the INA125 and the ground wires to the load cell should be grounded at the same point.

  3. Because you are trying to measure signals with such a high resolution, the INA125 inputs will be sensitive to interference, e.g. from mains wiring and radio signals. You can minimize this by using shielded wiring from the load cell to the INA125. Alternatively, connect a capacitor between each of the INA125 inputs and ground. The optimum value depends on the resistance of the load cell. Too high a value will make the reading slow to settle when the weight had changed. If you don't know the resistance, try 0.01uF or 0.1uF.

  4. Consider adding a low pass filter between the INA125 output and the ADC. Something like 1K between the INA125 output and the ADC input, and 0.1uF between the ADC input and its AGND pin.

  5. The system will be sensitive to vibrations transmitted through whatever the load cell + load is standing on. You will probably need to damp out the vibrations by standing them on e.g. a heavy block which it itself standing on think rubber feet.

  6. The system may be sensitive enough to respond to air currents.

  7. Consider taking several ADC readings over a period of time and averaging them.


thank you for your advice. Unfortunately I wasn't very lucky with my project today:
I tried to rebuild the ADC circuit with better grounding and decoupling on a protoshield.
After turning it on for the first time, all that happened was the wires getting warm (panic!).
Turns out there is a short in the traces of the protoshield itself!
So now that I have to order a new chip anyway, I'm thinking about switching to the ADS1232.
Thanks for all the help so far!


So now that I have to order a new chip anyway, I'm thinking about switching to the ADS1232.

That looks a nice chip - it combines the instrumentation amplifier, 24-bit ADC, offset correction and a digital filter - although it is (unsurprisingly) a little expensive.


Did you have any success with ADS1232 for improving the load cell accuracy. I am trying something similar and will be very useful if you let me know if it works.

Many thanks

Unless you need more than one input, you can save some money by using the ADS1231 instead.

I very much doubt that your scale originally had a range of 800 grams and 0.1 gram accuracy.

The fact that it calculates and displays a number with one decimal figure, does not actually make it accurate.