• 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);
    }

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

    @青山不移,文笔不息。学习,坚持,梦想青春!
  • 相关阅读:
    编译内核时出现drivers/mfd/mxchdmicore.c:36:24: fatal error: mach/clock.h: No such file or directory
    IE中iframe标签显示在DIV之上的问题解决方案
    Linux驱动学习1.hello world;
    Maven安装与配置(转)
    Jmeter阶梯式压测
    Jmeter的分布式测试
    adb connect命令连接多个Android设备
    Linux当中文件的显示命令
    软件测试流程
    测试时间不够,该怎么办?
  • 原文地址:https://www.cnblogs.com/pengwenzheng/p/7891312.html
Copyright © 2020-2023  润新知