# ADC Value from load cell to MSP430 not correct

I have a 1000lb load cell (LC302 from omega) being fed through an INA125 OPAMP then to the ADC10 of a MSP430G2553 with 2.5V as reference.

2.5V is coming out of the OPAMP that's being fed into the load cell, and it's being amplified to 2.5V (actual is about 2.49V) from the INA125 which then feeds the signal into the MSP430. I have set the ADC to REF2_5.

When I tried to apply a load (my own weight, 175lb) to the load cell, it would only go up marginally, maybe up to 32. When there's no load, it would normalize to 22. I'm expecting the value to be close to 170, but clearly it isn't. Why might this be happening?

I tested this set up by substituting the load cell with a potentiometer. I fed the 2.5V ref from the INA125 into the POT and then fed the signal into the ADC. I twisted it from left to right and it was giving me a lower bound of 0 and a upper bound of about 1010. This should mean that the setup is okay.

Advise on how to diagnose would be appreciated.

Note: if this matters, I am powering everything with a switching regulator (MAX756 set for 5V, boosted from 3V (actual is about 2.66V))

Edit: I thought about this a little more, I forgot to account for the accuracy of the measurement. With a zero balance accuracy of +/- 2%, the 22 value read seems to make sense. However with a +/- 0.5% accuracy, with 175lb, I should still be expecting about 170 steps.

## 2 Answers

What is the gain of the INA125 set to?

It sounds like you need a lot more gain in the instrumentation amplifier. If you don't have a resistor $R_{G}$ between the pins 8 and 9 of the instrumentation amplifier, your overall gain of the load-cell output will be only 4.

The load cell you have specced has a 1 mV/V output. Since it sounds like you're feeding the load-cell with your 2.5V reference, this means the full-scale output of the load-cell will be 2.5 mV. With the 4X gain in the INA125, that is 10 mV into the ADC input.

With a 10-bit ADC and 2.5V reference, your bit-size is ~0.0024 v/bit ($\frac{2.5V}{2^{10}}$), you should expect a change of $\frac{0.010V}{0.0024V}$, or approximately ~4 LSBs, and that's for the maximum load the load-cell is rated for.

So... Unless you have something else going on that you have not described, it sounds like you're getting significantly more output then would be expected. I would guess you have some gain in the INA125 that you have not described.

The solution here, of course, is to put a voltmeter on the interconnect between the INA125 and the MCU's ADC. That way, you can measure the real voltage going into the MCU, which will tell you where your error is coming from (MCU's ADC, or the INA).

• Yes, I believe this is the issue. I was utilizing another LC before with a 2mV/V nominal output and I forgot the change the value of the resistor for the appropriate gain. Jul 12, 2013 at 5:41

You diagnose these things by breaking them into functional blocks and removing unknowns. For example, you say your ADC value is incorrect. Two real choices

1. There's a problem with the ADC. You could be using it incorrectly, reading the value incorrectly, or maybe its even broken.
2. The voltage being provided to the ADC input isn't what you think it is.

Start with (1). Instead of using the load cell, provide a known voltage to the ADC input, and see if you understand the reads you get. Obviously, you tried to do this with a potentiometer, but you're not quite there. Your "upper bound" of 1010 makes no sense to me, and suggests that you're looking at one byte of a two-byte word. Maybe your microcontroller is giving you a right-justified 12-bit reading, and you're only reading the top 4 bits. READ THE DATASHEET of your microcontroller until you understand what the data should look like. In any case turn a known voltage into a reading, do the conversion math, and make sure it makes sense before you move on.

As for (2), that will probably fix itself after dealing with (1), but I suggest you look at the outputs of each analog stage unloaded and with a known weight, and once again, do the math to make sure you understand what you're seeing.

In short, you're dabbling around the problem and hoping it gets resolved. Roll up your sleeves, read the relevant data sheets, do the math, and put your casual debugging exercises into a rigorous framework that will allow you to understand your observations. It sounds tedious, but its the approach that will reliably work.

UPDATE:

Ooops, 1010 is probably decimal, not 0b1010, huh. The reply still stands, but I'm pushed a bit more towards track (2) now.