HX711初步处理记录

参考文档为极客工坊大神记录

http://www.geek-workshop.com/forum.php?mod=viewthread&tid=2315&highlight=hx711

hx711的库文件

库文件注释:

1 HX711(byte sck, byte dout, byte amp = 128, double co = 1); // 定义 sck、dout 接脚,增益倍数(默认128)和修正系数(默认1)
2 void set_amp(byte amp); // 改变增益倍数和对应的通道,至少调用一次 read() 后起作用
3 bool is_ready(); // 返回 hx711 是否可用,在 read() 函数中会被调用
4 long read(); // 返回传感器电压值,如果 hx711 不可用则程序会暂停在此函数
5 double bias_read(); // 返回:(read() - 偏移值) * 修正系数
6 void tare(int t = 10); // 将皮重添加到偏移值,影响每次 read(); 的调用
7 void set_co(double co = 1); // 修改修正系数(默认为1)
8 void set_offset(long offset = 0); // 修改偏移值(默认为0)

手动矫正的代码:

 1 #include <HX711.h> // 包含库的头文件
 2 
 3 HX711 hx(9, 10); // 数据接脚定义
 4 
 5 void setup() {
 6   Serial.begin(9600);
 7 }
 8 
 9 void loop()
10 {
11   double sum = 0;    // 为了减小误差,一次取出10个值后求平均值。
12   for (int i = 0; i < 10; i++) // 循环的越多精度越高,当然耗费的时间也越多
13     sum += hx.read();  // 累加
14   Serial.println(sum/10); // 求平均值进行均差
15 }

以此代码空载测试输出一次,负重测试输出一次即A和B!

实际值/B-A=误差系数

输出校准后的数据做对比参考

#include <HX711.h>
HX711 hx(9, 10, 64,0.009375 );//误差系数
void setup() {
  Serial.begin(9600);
  hx.set_offset(169600);//偏移值

}
void loop() {
  delay(500);
  double sum0 = 0;
  double sum1 = 0;
  for (int i = 0; i < 10; i++) {
    sum0 += hx.read();
    sum1 += hx.bias_read();
  }
  Serial.print(sum0/10);
  Serial.print(" ");
  Serial.println(sum1/10);
}

输出结果如下

 1 81613.21 166.37  实际物体重量165
 2 81636.21 166.74
 3 81576.40 165.88
 4 81598.40 166.57
 5 81604.30 166.33
 6 81546.60 165.67
 7 81545.80 165.94
 8 81594.80 166.27
 9 81600.00 166.34
10 81580.90 166.05
11 81604.60 166.25
12 81592.10 165.60
13 81626.00 166.26
14 81667.00 166.47
15 81591.50 166.45
16 81589.71 166.43
17 81568.40 165.95
18 81587.60 166.18

自动除皮重

#include <HX711.h>
HX711 hx(9, 10,64,0.009375);
void setup() {
  Serial.begin(9600);
  hx.set_offset(64000);

}
void loop() {
   if(digitalRead(4) == LOW) hx.tare();//按下按钮即可去皮
  delay(500);
  double sum0 = 0;
  double sum1 = 0;
  for (int i = 0; i < 10; i++) {
    sum0 += hx.read();
    sum1 += hx.bias_read();
  }
  Serial.print(sum0/10);
  Serial.print(" ");
  Serial.println(sum1/10);
}

下一步进行自动校正功能的添加

@青山不移,文笔不息。学习,坚持,梦想青春!
原文地址:https://www.cnblogs.com/pengwenzheng/p/7891312.html