OpenScale Calibration Above Single Digit Weights

I’ve been setting up a series of individual strain gauges through a SparkFun load combinator, in addition to an HX711 breakout board.

In order to simplify things and have tare/calibration support I decided to move to the OpenScale board.

The strain gauges are correctly mounted to a piece of steel and I’m trying to measure thousands of pounds of worth of strain deflection.

I’m not able to calibrate the OpenScale to pounds over single digits, trying to pass anything like 12.000000000000 into the OpenScale calibration settings ends up reading infinite load values and sets the calibration value to 0.

Passing the calibration function any integer without 12 trailing zeroes hangs the code and board and won’t do anything until I reset it.

How can I make the HX711/OpenScale more sensitive to smaller deflections and changes in voltage, as well as calibrate the program to larger pound values?

Hi das_hoffman,

I am not really sure what your issue is here. I tried to replicate the error regarding the calibration input over 10lbs but do not have any issues when calibrating with a 15lb weight. Are you running the calibration step in the firmware or trying to use it in a modified version of the firmware?

One suggestion, assuming you are just running the stock firmware on the OpenLog and connecting via terminal program, is to make sure you are using the latest version of the firmware for the OpenScale. The steps for updating it can be found in [this section of the Hookup Guide.](https://learn.sparkfun.com/tutorials/openscale-applications-and-hookup-guide#upgrading-the-firmware)

Hey Mark,

I only just bought the OpenScale this week, but I’ll go into the hookup guide to check/update the firmware.

When you’re inputting the 15 lbs in the serial comm, how are you formatting it? ex. 15, 15.0, 15.000 etc.

Normally when I input the weight as just 15 without a decimal and trailing zeros the program just hangs. Might be able to solve this with a firmware update.

The only time it does not hang is when I type 15.000000000000 (specifically 12 decimal places) and then the calibration value sets to “0”, leaving all calculations as “inf lbs” since I assume the code is dividing by the zero calibration value.

I’ll get on the firmware update and update!

If you’re putting on exactly 15 lbs, 15 will be fine. You don’t need to worry about decimal points unless you already know what they are.

Hey Guys,

Getting this firmware updated and running into some issues with the .ino file - everything else went smooth with regards to the update guide found on the hookup page.

The OpenScale.ino will not compile for the selected Arduino/Genuino Uno board selected as is mentioned in the hookup guide.

Arduino: 1.8.9 (Windows 10), Board: "Arduino/Genuino Uno"

C:\Users\GARRET~1\AppData\Local\Temp\ccGrAeyc.ltrans2.ltrans.o: In function `__static_initialization_and_destruction_0':

C:\Users\Garrett-GE\Documents\Arduino\libraries\OpenScale-master\OpenScale-master\firmware\OpenScale/OpenScale.ino:95: undefined reference to `HX711::HX711()'

C:\Users\GARRET~1\AppData\Local\Temp\ccGrAeyc.ltrans0.ltrans.o: In function `setup':

C:\Users\Garrett-GE\Documents\Arduino\libraries\OpenScale-master\OpenScale-master\firmware\OpenScale/OpenScale.ino:105: undefined reference to `HX711::begin(unsigned char, unsigned char, unsigned char)'

C:\Users\Garrett-GE\Documents\Arduino\libraries\OpenScale-master\OpenScale-master\firmware\OpenScale/OpenScale.ino:136: undefined reference to `HX711::set_scale(float)'

C:\Users\Garrett-GE\Documents\Arduino\libraries\OpenScale-master\OpenScale-master\firmware\OpenScale/OpenScale.ino:137: undefined reference to `HX711::set_offset(long)'

C:\Users\GARRET~1\AppData\Local\Temp\ccGrAeyc.ltrans0.ltrans.o: In function `powerUpScale':

C:\Users\Garrett-GE\Documents\Arduino\libraries\OpenScale-master\OpenScale-master\firmware\OpenScale/System.ino:45: undefined reference to `HX711::power_up()'

C:\Users\GARRET~1\AppData\Local\Temp\ccGrAeyc.ltrans0.ltrans.o: In function `loop':

C:\Users\Garrett-GE\Documents\Arduino\libraries\OpenScale-master\OpenScale-master\firmware\OpenScale/OpenScale.ino:162: undefined reference to `HX711::get_units(unsigned char)'

C:\Users\Garrett-GE\Documents\Arduino\libraries\OpenScale-master\OpenScale-master\firmware\OpenScale/OpenScale.ino:181: undefined reference to `HX711::read_average(unsigned char)'

C:\Users\GARRET~1\AppData\Local\Temp\ccGrAeyc.ltrans0.ltrans.o: In function `system_setup':

C:\Users\Garrett-GE\Documents\Arduino\libraries\OpenScale-master\OpenScale-master\firmware\OpenScale/Menus.ino:114: undefined reference to `HX711::tare(unsigned char)'

C:\Users\Garrett-GE\Documents\Arduino\libraries\OpenScale-master\OpenScale-master\firmware\OpenScale/Menus.ino:115: undefined reference to `HX711::read_average(unsigned char)'

C:\Users\GARRET~1\AppData\Local\Temp\ccGrAeyc.ltrans0.ltrans.o: In function `calibrate_scale':

C:\Users\Garrett-GE\Documents\Arduino\libraries\OpenScale-master\OpenScale-master\firmware\OpenScale/Menus.ino:291: undefined reference to `HX711::read_average(unsigned char)'

C:\Users\Garrett-GE\Documents\Arduino\libraries\OpenScale-master\OpenScale-master\firmware\OpenScale/Menus.ino:296: undefined reference to `HX711::get_units(unsigned char)'

C:\Users\Garrett-GE\Documents\Arduino\libraries\OpenScale-master\OpenScale-master\firmware\OpenScale/Menus.ino:336: undefined reference to `HX711::set_scale(float)'

C:\Users\Garrett-GE\Documents\Arduino\libraries\OpenScale-master\OpenScale-master\firmware\OpenScale/Menus.ino:342: undefined reference to `HX711::get_units(unsigned char)'

C:\Users\GARRET~1\AppData\Local\Temp\ccGrAeyc.ltrans0.ltrans.o: In function `system_setup':

C:\Users\Garrett-GE\Documents\Arduino\libraries\OpenScale-master\OpenScale-master\firmware\OpenScale/Menus.ino:165: undefined reference to `HX711::set_scale(float)'

C:\Users\GARRET~1\AppData\Local\Temp\ccGrAeyc.ltrans1.ltrans.o: In function `calcMinimumReadTime()':

C:\Users\Garrett-GE\Documents\Arduino\libraries\OpenScale-master\OpenScale-master\firmware\OpenScale/Menus.ino:492: undefined reference to `HX711::get_units(unsigned char)'

C:\Users\Garrett-GE\Documents\Arduino\libraries\OpenScale-master\OpenScale-master\firmware\OpenScale/Menus.ino:493: undefined reference to `HX711::get_units(unsigned char)'

C:\Users\Garrett-GE\Documents\Arduino\libraries\OpenScale-master\OpenScale-master\firmware\OpenScale/Menus.ino:497: undefined reference to `HX711::get_units(unsigned char)'

C:\Users\Garrett-GE\Documents\Arduino\libraries\OpenScale-master\OpenScale-master\firmware\OpenScale/Menus.ino:543: undefined reference to `HX711::read_average(unsigned char)'

C:\Users\Garrett-GE\Documents\Arduino\libraries\OpenScale-master\OpenScale-master\firmware\OpenScale/Menus.ino:547: undefined reference to `HX711::read_average(unsigned char)'

C:\Users\GARRET~1\AppData\Local\Temp\ccGrAeyc.ltrans1.ltrans.o: In function `_GLOBAL__sub_D_setting_uart_speed':

C:\Users\Garrett-GE\Documents\Arduino\libraries\OpenScale-master\OpenScale-master\firmware\OpenScale/OpenScale.ino:95: undefined reference to `HX711::~HX711()'

collect2.exe: error: ld returned 1 exit status

exit status 1
Error compiling for board Arduino/Genuino Uno.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

I tried again inputting just “15” into the calibration step of the current code and the program just hangs. The lights on the OpenScale just stop blinking and the code never returns to the menus or output readings.

Judging from that error, it looks like you do not have the HX711 library installed. You can download it from this [GitHub Repository and once it is installed, the firmware should have no issues compiling and uploading.](GitHub - bogde/HX711: An Arduino library to interface the Avia Semiconductor HX711 24-Bit Analog-to-Digital Converter (ADC) for Weight Scales.)