A simple loadcell calibration program based on a load cell and HX711 amp. Using HX711 by Bertrand Bouvier. Calibration code comes from SparkFun example at https://learn.sparkfun.com/tutorials/load-cell-amplifier-hx711-breakout-hookup-guide?_ga=1.169212841.987765858.1442369657.

Dependencies:   HX711 mbed

Committer:
mcragun
Date:
Sat Nov 28 19:35:24 2015 +0000
Revision:
0:5f789b9ae213
A sample loadcell calibration program.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mcragun 0:5f789b9ae213 1 #include "mbed.h"
mcragun 0:5f789b9ae213 2 #include "HX711.h"
mcragun 0:5f789b9ae213 3
mcragun 0:5f789b9ae213 4 DigitalOut gpo(D0);
mcragun 0:5f789b9ae213 5 DigitalOut led(LED_BLUE);
mcragun 0:5f789b9ae213 6 HX711 scale(A0, A1);
mcragun 0:5f789b9ae213 7
mcragun 0:5f789b9ae213 8 AnalogIn scaleRaw(A3);
mcragun 0:5f789b9ae213 9 Serial pc(USBTX, USBRX); // USB Serial Terminal
mcragun 0:5f789b9ae213 10 float calibration_factor = 1000; //-7050 worked for my 440lb max scale setup
mcragun 0:5f789b9ae213 11 int averageSamples = 100;
mcragun 0:5f789b9ae213 12
mcragun 0:5f789b9ae213 13 int main(void)
mcragun 0:5f789b9ae213 14 {
mcragun 0:5f789b9ae213 15 pc.printf("Starting Scale");
mcragun 0:5f789b9ae213 16 pc.printf("HX711 calibration sketch");
mcragun 0:5f789b9ae213 17 pc.printf("Remove all weight from scale");
mcragun 0:5f789b9ae213 18 pc.printf("After readings begin, place known weight on scale");
mcragun 0:5f789b9ae213 19 pc.printf("Press + or a to increase calibration factor");
mcragun 0:5f789b9ae213 20 pc.printf("Press - or z to decrease calibration factor");
mcragun 0:5f789b9ae213 21
mcragun 0:5f789b9ae213 22
mcragun 0:5f789b9ae213 23 scale.setScale(0);
mcragun 0:5f789b9ae213 24 scale.tare(); //Reset the scale to 0
mcragun 0:5f789b9ae213 25
mcragun 0:5f789b9ae213 26 long zero_factor = scale.averageValue(averageSamples); //Get a baseline reading
mcragun 0:5f789b9ae213 27 pc.printf("Zero factor: %.4f\n" , zero_factor); //This can be used to remove the need to tare the scale. Useful in permanent scale projects.
mcragun 0:5f789b9ae213 28
mcragun 0:5f789b9ae213 29 while (true) {
mcragun 0:5f789b9ae213 30 scale.setScale(calibration_factor); //Adjust to this calibration factor
mcragun 0:5f789b9ae213 31 float weight = scale.getGram();
mcragun 0:5f789b9ae213 32 //float raw = scaleRaw.read();
mcragun 0:5f789b9ae213 33 pc.printf("Reading: %.2f\n", weight);
mcragun 0:5f789b9ae213 34 //pc.printf("Raw Value: %.7f\n", raw);
mcragun 0:5f789b9ae213 35 pc.printf(" calibration_factor: %.2f\n", calibration_factor);
mcragun 0:5f789b9ae213 36
mcragun 0:5f789b9ae213 37
mcragun 0:5f789b9ae213 38 if(pc.readable()) {
mcragun 0:5f789b9ae213 39 char temp = pc.getc();
mcragun 0:5f789b9ae213 40 if(temp == '+' || temp == 'a')
mcragun 0:5f789b9ae213 41 calibration_factor += 10;
mcragun 0:5f789b9ae213 42 else if(temp == '-' || temp == 'z')
mcragun 0:5f789b9ae213 43 calibration_factor -= 10;
mcragun 0:5f789b9ae213 44 }
mcragun 0:5f789b9ae213 45 gpo = !gpo; // toggle pin
mcragun 0:5f789b9ae213 46 led = !led; // toggle led
mcragun 0:5f789b9ae213 47 wait(0.2f);
mcragun 0:5f789b9ae213 48 }
mcragun 0:5f789b9ae213 49 }