Openscale Calibration issues

I’ve been having a real hard time getting openscale to cooperate with my load cell ([ specs ) ([ datasheet ).

At one point, I had it reporting weight but found that it was only capable of reporting up to, but not beyond, the weight that I had calibrated it to. After enabling the raw readings, it appeared that I had reached some max signal limit, despite only being at 24% of the max capacity for my load cell. I then soldered it to amplifier pads and found that it is capable of reading beyond what I calibrate it to, but it behaves completely unpredictably. Sometime removing weight increases the reading. Sometimes removing weight only reduces the reading by a few lbs when it should be a ~40lb reduction. Sometimes I’ll calibrate and the calibration factor is 0 and my I get ‘inf’ for my readings.

I can’t even begin to guess what information is relevant, so here are some random ones:

Some details about how I’m calibrating:

The force I am trying to measure is expected to be around 120lbs. I don’t have 120lbs worth of weights, so I am using a lever fixture. The process I’ve been following is as follows:

Load cell goes into fixture:

Arm is lowered onto loadcell and openscale is tared

3x 5lb weights placed such that 120lb force is applied to load cell, and calibration process is initiated on openscale

That lever assembly will cause you loads of problems. A tiny position or angle change will significantly change the force applied to the load cell. It’s probably also prone to flexing which you don’t want. For example, just sinking into the carpet will be a problem.

Thank you for the reply. I’ll have access to a compression/tensile testing machine that will be much better suited to calibrating the load cell than this. Just to make sure I’m ready for that, is there anything else that seems suspect about how this setup? E.g. perhaps I have it wired wrong because of the weird color scheme, something causing the calibration/tare values, etc…

Any reason you’re using B-/+ rather than A-/+?

Also, double check your wiring. I’m willing to bet red and blue are excitation and white/ green are output.

YellowDog:
Any reason you’re using B-/+ rather than A-/+?

Just trying to get something to work. I had them on A +/- but ran into the issue I mentioned in my OP where it seemed like I was hitting some max raw value. I would increase the weight on the loadcell, the raw value wouldn't increase, and it wouldn't read above the weight I calibrated it to (~120lbs on a 500lb cell.)

YellowDog:
Also, double check your wiring. I’m willing to bet red and blue are excitation and white/ green are output.

I haven’t really been able to find guidance on how to wire these colors, but I’ll give that a try

YellowDog:
Any reason you’re using B-/+ rather than A-/+?

Also, double check your wiring. I’m willing to bet red and blue are excitation and white/ green are output.

I tried wiring it like you suggested but it doesn’t seem to have improved anything. I’ve attached a screenshot of how I wired it.

This is what the calibration looks like now

Getting Tare point: 8388607

Serial Load Cell Converter version 1.2
By SparkFun Electronics
No remote sensor found
System Configuration
1) Tare scale to zero [8388607]
2) Calibrate scale [0]
3) Timestamp [Off]
4) Set report rate [1884]
5) Set baud rate [9600 bps]
6) Change units of measure [lbs]
7) Decimals [0]
8) Average amount [20]
9) Local temp [Off]
r) Remote temp [Off]
s) Status LED [Blink]
q) Raw reading [Off]
t) Serial trigger [On]
c) Trigger character: [10 / '
']
x) Exit


Scale calibration
Place known weight on scale. Press a key when weight is in place and stable.
Tare: 8388607
Raw: 8388607
Current Reading: nanlbs
Calibration Factor: 0
Please enter the weight currently sitting on the scale: 120.0000000000
User entered: 120.0000
New Calibration Factor: 0
New Scale Reading: nan lbs

Please measure the voltage on the signal wires, unloaded and with the weights applied.

Given that 8388607 decimal is 0x7FFFFF (ie. fullscale), it sounds like it isn’t seeing the sensor.

Based on your picture, it should be wired

Red E+

Green E-

Yellow A+

Blue A-

/mike

I wired it as you described and it seems to be behaving a little more predictably. It will read the weight I calibrated it to just fine but when I remove one of the weights, the reading doesn’t reduce to what it should. I’m wondering if, as was suggested, my calibration fixture isn’t working out. I may just have to weight until I can calibrate it in the compression tester I am waiting on…

n1ist:
Given that 8388607 decimal is 0x7FFFFF (ie. fullscale), it sounds like it isn’t seeing the sensor.

I gave it another shot and found that I am unable to calibrate to anything over ~85lbs. Below that, I’m able to measure to +/-1% of the expected weight. Past a certain point, the raw value hits that ceiling of 8388607. If I calibrate that value to say 200lbs and start removing weights, the value doesn’t change until the load gets back to around 85lbs again.

My loadcell is rated for 500lbs, and I don’t see anything in the openscale documentation stating a max load. What could be causing this limitation?

@Wolf,

It has been quite some time since I last played with SFE’s OpenScale; but when I first started playing with it I did find it easier to simplify the operation of the scale by modifying/simplifying the provided code so I could better control and understand what was happening behind the scenes. At that time I created some articles to help me (and others) in the futures. Perhaps this can help you narrow down the issue you are observing.

https://www.electro-tech-online.com/art … scale.859/

Thank you for the reply. I’ve waded through the code quite a bit to get it to send the reading to a redboard, which in turn displays it on an alphanumerical display. Before I ran into this 8388607/0x7FFFFF cap issue, I was coding a LUT function in an attempt to bypass the need for Openscale’s built in calibration.

I read your article but I wasn’t able to find anything that helped me understand this cap issue. I looked into the the HX711 library to figure out what was happening behind the scenes when the raw value is determined:

    long rawReading = scale.read_average(setting_average_amount); // Take average reading over a given number of times

but that didn’t yield anything helpful either.

I would have guess it was some kind of datatype error but a long should be more than sufficient. I’m at a loss