Load sensors readouts are wildly inaccurate

I wanted to build a round platform with for 50kg load cells, a combination board and an amplifier, to read the changes of the water softener brine barrel weight (and not miss the point at which more salt needs to be added).

So I got a round wood board from HD, and all electronic components from Sparkfun:
4 x 50kg load sensors SEN-10245
SparkFun Load Sensor Combinator
BOB-13878

SparkFun RJ45 Breakout
BOB-00716

SparkFun Load Cell Amplifier - HX711
SEN-13879

2 x RJ45 8-Pin Connector
PRT-00643

Assembled the platform semi-permanently. Crimped wires from the four load sensors with DuPont connectors and connected them to a header on the combination board. Combination board is terminated with RJ45 8-Pin Connector

The HX711 amplifier is connected to the platform via CAT-5 cable and RJ45 breakout board. Then HX711 digital output is hooked up to an ESP32 MCU board with DuPont jumper wires in a very drafty/sketchy way just to test if it works.

ESPHome configuration looks like this:

sensor:
  - platform: hx711
    id: "barrel_weight"
    name: "Salt Brine Barrel Weight"
    dout_pin: 14
    clk_pin: 27
    gain: 128
    update_interval: 10s
    accuracy_decimals: 0
    filters:
      - calibrate_polynomial:
          degree: 2
          datapoints:
            - -523868 -> 0
            - -912518 -> 45
            - -1330491 -> 90
            - -1746161 -> 135
            - -2153132 -> 180
            - -2551189 -> 225
            - -2952697 -> 270
            - -3405533 -> 320
            - -3855746 -> 370            
      - quantile:
          window_size: 6
          send_every: 6
          send_first_at: 3
          quantile: .9      
    unit_of_measurement: lbs

After initial calibration in my living room, using multiple 45 lbs weight plates, I got it to read the correct weights consistently. But when I placed the platform under the brine barrel in the garage, after a week or so I started to get a wildly-inaccurate readings. The weight readings were jumping all over the place and could easily change to 2x or 0.5x the previous readout.

Weight readouts on this screen are from the platform without any load on it (it just sits next to the barrel on the floor)

So far I suspect that it may be caused by either

  1. Garage floor imperfections (it’s covered with epoxy with some flakes, adding a texture to it). I tried to make sure all four load cells are in on the same plane, but it doesn’t help if the floor is not flat.
  2. Wood round warping/temperature changes causing inconsistent readouts.
  3. DuPont style connection between the cells and combination board provide inconsistent resistance due to contact surface oxidation. This affects readings from the Wheatstone bridge
  4. HX711 is too far from the combinator board (~5ft of CAT-5 cable). Cable + RJ-45 connectors add to inconsistent resistance values taken off the combination board/bridge.
  5. It’s just typical behavior for the cheap load cells and there’s nothing I can do with it.

I hope that this is caused by 3 & 4 and thus can be mitigated.
The whole chain looks like this:

4 x load cells -> DuPont -> Combinator Board -> RG45 -> CAT5 -> RG45 -> DuPont -> Amplifier Board -> DuPont -> ESP32

I can get rid of DuPont and RJ45 connections in the analog part of the schematics by:

  • soldering the load cell wires directly to the combinator board (trimming all wires to the minimum length, same for all four cells)
  • placing the HX711 next to the combinator board and connecting them with a short wires of the same length soldered directly

Then the chain would look looks like this:

4 x load cells -> Combinator Board -> Amplifier Board -> RJ45 -> CAT5 -> RJ45 -> DuPont -> ESP32

Then the analog readouts (resistance) would be handled more consistently and with minimum variations of the parasitic resistance, while digital interface of the amplifier board can be connected to ESP32 using RG45 breakouts and CAT5 cable, since these are not as easily affected by parasitic resistance in the transmission line.