Strange data from wheatstone bridge via ADC and Arduino

  adc, arduino, c++, sensors

I’m using a CS1237 ADC with an Arduino Mega to look at data from a Wheatstone bridge load cell. I didn’t build the load cell or wire it to the ADC, it’s in a store scale and I just lifted the clock pins of the chip that was controlling the ADC and have been bit-banging the ADC clock from the Arduino.

The code I’m using is in the accepted answer to my previous question:

The issue I’m having now, is that when I put weight on the scale in order to calibrate, I’m getting data that seems to be related to weight but isn’t proportional. It also seems oddly quantized; when I lean gradually, or slowly lower weight onto the scale, the values that come in don’t gradually change. They stay unchanged until a certain threshold is reached, then shoot up by some unexpected amount.

I tested it with half-liter water bottles (which should be roughly half a kg each) and here is what Arduino IDE’s serial plotter showed:
graph of serial input data from load cell

Why would each half-kilogram of weight change the value that the serial plotter receives, by such wildly varying amounts? The three reference weights are unopened commercially produced water bottles that seem identical.

Also, what could be producing this quantizing effect, where slowly leaning more weight onto the scale produces a sudden large jump instead of a gradual curve?

Source: Windows Questions C++