0% found this document useful (0 votes)
12 views4 pages

Weighing Scale Caibration of Arduino

Uploaded by

fgiet.aero
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views4 pages

Weighing Scale Caibration of Arduino

Uploaded by

fgiet.aero
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

//---------------------------------------------------------------------------------

----
// HX711_ADC.h
// Arduino master library for HX711 24-Bit Analog-to-Digital Converter for Weigh
Scales
// Olav Kallhovd sept2017
// Tested with : HX711 asian module on channel A and YZC-133 3kg load cell
// Tested with MCU : Arduino Nano
//---------------------------------------------------------------------------------
----
// This is an example sketch on how to use this library for two ore more HX711
modules
// Settling time (number of samples) and data filtering can be adjusted in the
config.h file

#include <HX711_ADC.h>
#if defined(ESP8266)|| defined(ESP32) || defined(AVR)
#include <EEPROM.h>
#endif

//pins:
const int HX711_dout_1 = 4; //mcu > HX711 no 1 dout pin
const int HX711_sck_1 = 5; //mcu > HX711 no 1 sck pin
const int HX711_dout_2 = 6; //mcu > HX711 no 2 dout pin
const int HX711_sck_2 = 7; //mcu > HX711 no 2 sck pin
const int HX711_dout_3 = 8; //mcu > HX711 no 3 dout pin
const int HX711_sck_3 = 9; //mcu > HX711 no 3 sck pin

//HX711 constructor (dout pin, sck pin)


HX711_ADC LoadCell_1(HX711_dout_1, HX711_sck_1); //HX711 1
HX711_ADC LoadCell_2(HX711_dout_2, HX711_sck_2); //HX711 2
HX711_ADC LoadCell_3(HX711_dout_3, HX711_sck_3); //HX711 3

const int calVal_eepromAdress_1 = 0; // eeprom adress for calibration value load


cell 1 (4 bytes)
const int calVal_eepromAdress_2 = 4; // eeprom adress for calibration value load
cell 2 (4 bytes)
const int calVal_eepromAdress_3 = 8; // eeprom adress for calibration value load
cell 3 (4 bytes)
unsigned long t = 0;

void setup() {
Serial.begin(57600); delay(10);
Serial.println();
Serial.println("Starting...");

float calibrationValue_1; // calibration value load cell 1


float calibrationValue_2; // calibration value load cell 2
float calibrationValue_3; // calibration value load cell 3
calibrationValue_1 = 56.36; // uncomment this if you want to set this value in
the sketch
calibrationValue_2 = 105.59; // uncomment this if you want to set this value in
the sketch
calibrationValue_3 = 57.16; // uncomment this if you want to set this value in
the sketch
#if defined(ESP8266) || defined(ESP32)
//EEPROM.begin(512); // uncomment this if you use ESP8266 and want to fetch the
value from eeprom
#endif
//EEPROM.get(calVal_eepromAdress_1, calibrationValue_1); // uncomment this if you
want to fetch the value from eeprom
//EEPROM.get(calVal_eepromAdress_2, calibrationValue_2); // uncomment this if you
want to fetch the value from eeprom

LoadCell_1.begin();
LoadCell_2.begin();
LoadCell_3.begin();
//LoadCell_1.setReverseOutput();
//LoadCell_2.setReverseOutput();
//LoadCell_3.setReverseOutput();
unsigned long stabilizingtime = 2000; // tare preciscion can be improved by
adding a few seconds of stabilizing time
boolean _tare = true; //set this to false if you don't want tare to be performed
in the next step
byte loadcell_1_rdy = 0;
byte loadcell_2_rdy = 0;
byte loadcell_3_rdy = 0;
while ((loadcell_1_rdy + loadcell_2_rdy + loadcell_3_rdy) < 2) { //run startup,
stabilization and tare, both modules simultaniously
if (!loadcell_1_rdy) loadcell_1_rdy = LoadCell_1.startMultiple(stabilizingtime,
_tare);
if (!loadcell_2_rdy) loadcell_2_rdy = LoadCell_2.startMultiple(stabilizingtime,
_tare);
if (!loadcell_3_rdy) loadcell_3_rdy = LoadCell_3.startMultiple(stabilizingtime,
_tare);
}
if (LoadCell_1.getTareTimeoutFlag()) {
Serial.println("Timeout, check MCU>HX711 no.1 wiring and pin designations");
}
if (LoadCell_2.getTareTimeoutFlag()) {
Serial.println("Timeout, check MCU>HX711 no.2 wiring and pin designations");
}
if (LoadCell_3.getTareTimeoutFlag()) {
Serial.println("Timeout, check MCU>HX711 no.3 wiring and pin designations");
}
LoadCell_1.setCalFactor(calibrationValue_1); // user set calibration value
(float)
LoadCell_2.setCalFactor(calibrationValue_2); // user set calibration value
(float)
LoadCell_3.setCalFactor(calibrationValue_3); // user set calibration value
(float)
Serial.println("Startup is complete");
}

void loop() {
static boolean newDataReady = 0;
const int serialPrintInterval = 0; //increase value to slow down serial print
activity

// check for new data/start next conversion:


if (LoadCell_1.update()) newDataReady = true;
LoadCell_2.update();
LoadCell_3.update();
//get smoothed value from data set
if ((newDataReady)) {
if (millis() > t + serialPrintInterval) {
float a = LoadCell_1.getData();
float b = LoadCell_2.getData();
float c = LoadCell_3.getData();
Serial.print("Back Pressur: ");
Serial.print(a);
Serial.print(" \tPitch moment: ");
Serial.println(b);
Serial.print(" \n\tWing moment:");
Serial.println(c);
newDataReady = 0;
t = millis();
}
}

// receive command from serial terminal, send 't' to initiate tare operation:
if (Serial.available() > 0) {
char inByte = Serial.read();
if (inByte == 't') {
LoadCell_1.tareNoDelay();
LoadCell_2.tareNoDelay();
LoadCell_3.tareNoDelay();
}
}

//check if last tare operation is complete


if (LoadCell_1.getTareStatus() == true) {
Serial.println("Tare load cell 1 complete");
}
if (LoadCell_2.getTareStatus() == true) {
Serial.println("Tare load cell 2 complete");
}
if (LoadCell_3.getTareStatus() == true) {
Serial.println("Tare load cell 3 complete");
}

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy