How to interface load cells with an Arduino Mega

I have several 3-axis load cells that I need to connect to an Arduino, I have done this before with smaller, simpler load cells which came with their own amplifiers, but now with these larger load cells, I do not know which amplifiers to get, where to get them, or which parameters to look for.

Here is some information about the load cells, the specifications vary between axes. I have also attached an image of the ‘calibration summary’.

Range: Fz=5KN, Fx=2KN, Fy=2KN
Output: 2mV/V Fx/Fy, 0.33mV/V Fz

No model number or other identification?

You could probably do this with 3 HX711's

The HX711 is what I used for the smaller load cells, wouldn't I need a higher gain to boost the voltage to the correct level for the bigger ones?

The HX711 works with bare load cells with no amplifier. One of the main functions of this chip is an amplifier.

Since you posted no details on the "smaller" ones, how could we possibly compare? We can't see what is in front of you.

Here is the smaller load cell, which works with the HX711 amplifier, but I don't think the HX711 would work with the other load cells which I mentioned in my first post.

From what I understand, an amplifier boosts the voltage from the load cell by a specific gain, to an appropriate level for the Arduino, and so I don't think I could just stick a HX711 in front of these new load cells, which likely outputs a completely different voltage, and expect it to work.

But the HX711 is not just an amplifier. We use it in Arduino projects because it has a lot of features, is relatively easy to talk to and it is very versatile for lots of different purposes.

Since you seem to have all the components, you should test it for yourself.

Let us first get the meanings of the following specifications of your load cell and then decide if HX711 is suitable or not,

Range: Fz=5KN, Fx=2KN, Fy=2KN
Output: 2mV/V Fx/Fy, 0.33mV/V Fz

If we apply 5 kilo-Newton force (weight) along the z-axis of the load cell with 1V bias supply (excitation), the load cell will produce 0.33 mV signal. Let us bias the load cell with standard 5V supply and then we will get about 0.33x5 = 1.65 mV signal.

If we apply 2 kilo-Newton force (weight) along the x-axis of the load cell with 1V bias supply (excitation), the load cell will produce 2 mV signal. Let us bias the load cell with standard 5V supply and then we will get about 2x5 = 10 mV signal.

If we apply 2 kilo-Newton force (weight) along the y-axis of the load cell with 1V bias supply (excitation), the load cell will produce 2 mV signal. Let us bias the load cell with standard 5V supply and then we will get about 2x5 = 10 mV signal.

I have tested my single axis load cell on UNO (which produces 0 - 10 mV signal at 5V excitation and 30 kg rated load) successfully with HX711 Module which contains a x128 gain amplifier for Ch-A and 24-bit serial ADC. It should be alright for your load cell; but, you have to use 3 HX711 Modules and then handle/process the signals as per formula given in the load cell manual.
hx711+loadcell.png

You may use the following sketch to read raw counts from your load cell (functional check).

/* This program takes 10 samples from LC + HX711B at
   1-sec interval and then computes the average.
*/

unsigned long x = 0, y = 0;
unsigned long dataArray[10];
int j = 0;
void setup()
{
  Serial.begin(9600);
  pinMode(A1, INPUT); //data line  //Yellow cable
  pinMode(A0, OUTPUT);  //SCK line  //Orange cable
}

void loop()
{

  for (int j = 0; j < 10; j++)
  {
    digitalWrite(A0, LOW);//SCK is made LL
    while (digitalRead(A1) != LOW) //wait until Data Line goes LOW
      ;
    {
      for (int i = 0; i < 24; i++)  //read 24-bit data from HX711
      {
        clk();      //generate CLK pulse to get MSB-it at A1-pin
        bitWrite(x, 0, digitalRead(A1));
        x = x << 1;
      }
      clk();  //25th pulse
      Serial.println(x, HEX);
      y = x;
      x = 0;
      delay(1000);
    }
    dataArray[j] = y;
  }

  Serial.println("===averaging process=========");
  unsigned long sum = 0;

  for (j = 0; j < 10; j++)
  {
    sum += dataArray[j];
  }
  Serial.print("Average Count = ");
  sum = sum / 10;
  Serial.println(sum, HEX);
}

void clk()
{
  digitalWrite(A0, HIGH);
  digitalWrite(A0, LOW);
}

hx711+loadcell.png