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

下一步進行自動校正功能的添加

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM