Load cell problems

Hi all,

I too am trying to use arduino as a load cell daq unit. I did a tutorial thing but still have problems. Underneath is a photo of my connections. What is weird that if i excite the load cell with 10V from a source, the difference in voltage between the two load cell wires is first in the hundreds of mv and then goes down to 0. If i push on the load cell nothing happens or changes.
I tried to measure the A0 wire too with a multimeter, i only get 1.7mV, which also doesn't change on the multimeter if i push. I also used an INA 125 amplifier.

i used the same code as here:

I did change some things to be able to use it with plx-daq. But that's not much of course. I'm starting to wonder if the load cell i use is any good. It recommends an excitation voltage of 10V with a maximum of 15V. I use 5V of the board, but even with 10V from a source it acts weird.


Anyone an idea what could be wrong? It's not really the code as its basically the load cell on itself which gave problems.

For any useful help you are going to have to post a complete electrical schematic drawing of the whole system. A load cell can be excited by a wide range of DC voltages, but when used in a arduino based system it is useful/safer to utilize +5vdc for exciting the bridge circuit.

Sorry :slight_smile:


The yellow wire is a blue one with the load cell i use. A friend of mine who also works with arduino says it could be a faulty arduino. If i run the code I always get the same value. if I remove the load cell this value keeps on going no matter what.

What i notice in his code is that he declares float analogValueAverage= 0 . Anyone why he does that?
This is what i have done on the board, without looking at other schemes i took it over from the board:

This is the spec sheet of the load cell i bought. It's a cheap Chinese one, but don't see why it wouldn't even work with this one.

I will reset the arduino and have a look at my connections again.
thank you for your help!

  1. What value does analogRead return? You have said it always gives the same value, but you haven't said what value.

  2. Have you tried swapping the Vin+ and Vin- inputs to the INA125?

It always gives 1.25, but that doesn't really matter i guess as the code is not yet optimized for my specific load cell. Even if I switch the Vin+ and Vin- it stays 1.25. I'll try to move the INA125 on the board, you never know if there's a bad contact somewhere.
This is what i get now:

If i push on the load cell it goes up again. Could it be something with the resistor I use? or the configuration in the code(still have to change it to my values).

After trying to measure it again, i now get a flucating load at A0 compared to the GND. If i push on the load cell the voltage changes. Good improvement. Now i placed some weights on the load cell and noted the voltage A0. Put my phone on it (124g), excitation of 130,3mV. Put nothing on it and i get around 149mV. If I fill in those values in the code i still get a load of 1,94kg instead of 0..
Another strange thing that occurs to me: I measure between A0 and the ground of the arduino. I get around 149mV. If I print inside arduino on my pc it says that the A0 is 28.0. Am i correct to say that 1 of these respresents 4.88mV?

The analog reading is a count between 0 and 1023 so 1 count is a bit less than 5 mV on a 5 volt arduino. 4.88 sounds about right.

Ok, thanks!
I did switch Vin+ and Vin-, and if i change it like on the schemes above, it doesn't react. So i guess the scheme is wrong?
The weird thing than is, if I press the load cell the displayed load decreases.
I used the code above and this code:

// Arduino with load cell

// Put two known loads on the sensor and take readings. Put those values
// here.
float aReading = 192.0;
float aLoad = 15.0; // lbs.
float bReading = 344.0;
float bLoad = 24.3; // lbs.

long time = 0;
int interval = 500; // Take a reading every 500 ms

void setup() {
Serial.begin(9600);
}

void loop() {
float newReading = analogRead(0);

// Calculate load based on A and B readings above
float load = ((bLoad - aLoad)/(bReading - aReading)) * (newReading - aReading) + aLoad;

// millis returns the number of milliseconds since the board started the current program
if(millis() > time + interval) {
Serial.print("Reading: ");
Serial.print(newReading,1); // 1 decimal place
Serial.print(" Load: ");
Serial.println(load,1); // 1 decimal place, println adds a carriage return
time = millis();
}
}

instead the aReading i used my values, being the 124grams and 138,6mV (divided this by 4,88). I'm happy it doesn't seem the load cell which is the problem, as i waited 4 weeks for this item to arrive. Now If i could make the program work it would be awesome!

I'm starting to believe that this load cell is broken. Measured the complete board, the in and so on.
Or the load cell, or the INA125 or the arduino is broken in my opinion. Anyone else an idea?

You haven't aswered my question:

dc42:

  1. What value does analogRead return? You have said it always gives the same value, but you haven't said what value.

I'm talking about the value returned by analogRead, not the value after you do some calculation on it.