参考文档为极客工坊大神记录
http://www.geek-workshop.com/forum.php?mod=viewthread&tid=2315&highlight=hx711
库文件注释:
HX711(byte sck, byte dout, byte amp = , double co = ); // 定义 sck、dout 接脚,增益倍数(默认128)和修正系数(默认1)
void set_amp(byte amp); // 改变增益倍数和对应的通道,至少调用一次 read() 后起作用
bool is_ready(); // 返回 hx711 是否可用,在 read() 函数中会被调用
long read(); // 返回传感器电压值,如果 hx711 不可用则程序会暂停在此函数
double bias_read(); // 返回:(read() - 偏移值) * 修正系数
void tare(int t = ); // 将皮重添加到偏移值,影响每次 read(); 的调用
void set_co(double co = ); // 修改修正系数(默认为1)
void set_offset(long offset = ); // 修改偏移值(默认为0)
手动矫正的代码:
#include <HX711.h> // 包含库的头文件 HX711 hx(, ); // 数据接脚定义 void setup() {
Serial.begin();
} void loop()
{
double sum = ; // 为了减小误差,一次取出10个值后求平均值。
for (int i = ; i < ; i++) // 循环的越多精度越高,当然耗费的时间也越多
sum += hx.read(); // 累加
Serial.println(sum/); // 求平均值进行均差
}
以此代码空载测试输出一次,负重测试输出一次即A和B!
实际值/B-A=误差系数
输出校准后的数据做对比参考
#include <HX711.h>
HX711 hx(, , ,0.009375 );//误差系数
void setup() {
Serial.begin();
hx.set_offset();//偏移值 }
void loop() {
delay();
double sum0 = ;
double sum1 = ;
for (int i = ; i < ; i++) {
sum0 += hx.read();
sum1 += hx.bias_read();
}
Serial.print(sum0/);
Serial.print(" ");
Serial.println(sum1/);
}
输出结果如下
81613.21 166.37 实际物体重量165
81636.21 166.74
81576.40 165.88
81598.40 166.57
81604.30 166.33
81546.60 165.67
81545.80 165.94
81594.80 166.27
81600.00 166.34
81580.90 166.05
81604.60 166.25
81592.10 165.60
81626.00 166.26
81667.00 166.47
81591.50 166.45
81589.71 166.43
81568.40 165.95
81587.60 166.18
自动除皮重
#include <HX711.h>
HX711 hx(, ,,0.009375);
void setup() {
Serial.begin();
hx.set_offset(); }
void loop() {
if(digitalRead() == LOW) hx.tare();//按下按钮即可去皮
delay();
double sum0 = ;
double sum1 = ;
for (int i = ; i < ; i++) {
sum0 += hx.read();
sum1 += hx.bias_read();
}
Serial.print(sum0/);
Serial.print(" ");
Serial.println(sum1/);
}
下一步进行自动校正功能的添加