找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 38701|回复: 19
打印 上一主题 下一主题
收起左侧

基于24位AD转换模块HX711的重量称量实验

  [复制链接]
跳转到指定楼层
楼主
以前在X宝上买过一个称重放大器,180+大洋。原理基本上就是把桥式拉力传感器输出的mV级信号放大到5V供单片机读取。连接实验电路的时候很完美,能
实现重量的转换,但是实际组装后却发现这种A/A模块受到的干扰太严重了,包括电源的干扰,导线长短的干扰,导线位置变化的干扰,无线电的干扰等等等
等……实在是恼人。



后来感觉是思路错误了,就不该用模拟信号来传输,于是决定使用A/D模块来把重量转换成数字信号传输,A/D模块就固定在离传感器最近的地方,将输出的数字信号用导线传输给单片机,这样能很大程度减小各种干扰。



在网上搜了一下A/D模块,基本上有两种廉价成品:HX711和PCF8591,它们分别是8位转换模块和24位转换模块。

PCF8591:








功能简介: 基于I2C接口的AD/DA转换模块,8位精度,四通道AD,单通道DA,电压输出型

最大特点: 1. 支持两种接口类型接入目标板:排针或排座

           2. 支持I2C总线级联(通过排针、排座对接的方法,可同时使用多个I2C模块)

典型应用: 低速AD/DA转换

主要资源: PCF8591,I2C接口排针,I2C接口排座,可调电阻,AD输入口,DA输出口,地址跳线端口



HX711:







模块工作电压:4.8-5.5v

典型电流 1.6mA

体积:长 2.9cm * 宽 1.7cm * 高 0.4cm

● 带金属屏蔽,强抗干扰,预留MCU(STC15F104)位置,可自行升级二次开发。

● 两路可选择差分输入

● 片内低噪声可编程放大器,可选增益为32、64 和128

● 片内稳压电路可直接向外部传感器和芯片内A/D 转换器提供电源

● 片内时钟振荡器无需任何外接器件,必要时也可使用外接晶振或时钟

● 上电自动复位电路

● 简单的数字控制和串口通讯:所有控制由管脚输入,芯片内寄存器无需编程

● 可选择10Hz 或80Hz 的输出数据速率

● 同步抑制50Hz 和60Hz 的电源干扰

● 耗电量(含稳压电源电路):

典型工作电流:< 1.7mA, 断电电流:< 1μA

● 工作电压范围:2.6 ~ 5.5V

● 工作温度范围:-20 ~ +85℃







===============================我叫分割线=================================



我要使用的拉力传感器为传统的桥式传感器,量程1kg,想要达到1g的精度,这就要求模块输出位数至少为10位(2^10=1024),8位的
PCF8591无法胜任,因为它的精度只有2^8=256位。所以决定使用HX711作为我的A/D模块,而且我选的HX711模块还带屏蔽壳,正符合我
的要求。





先来看一下该模块的常用接法:








模拟输入

通道 A 模拟差分输入可直接与桥式传感器的差分输出相接。由于桥式传感器输出的信号较小,为了充分利用A/D 转换器的输入动态范围,该通道的可编程增益较大,为128 或64。这些增益所对应的满量程差分输入电压分别±20mV 或±40mV。



通道B 为固定的32 增益,所对应的满量程差分输入电压为±80mV。通道B 应用于包括电池在内的系统参数检测。



供电电源

数字电源(DVDD)应使用与MCU 芯片相同的的数字供电电源。HX711 芯片内的稳压电路可同时向 A/D
转换器和外部传感器提供模拟电源。稳压电源的供电电压(VSUP)可与数字电源(DVDD)相同。稳压电源的输出电压值(VAVDD)由外部分压电阻
R1、R2 和芯片的输出参考电压VBG
决定(图1),VAVDD=VBG(R1+R2)/R2。应选择该输出电压比稳压电源的输入电压(VSUP)低至少100mV。

如果不使用芯片内的稳压电路,管脚VSUP应连接到DVDD 或AVDD 中电压较高的一个管脚上。管脚VBG 上不需要外接电容,管脚VFB
应接地,管脚BASE 为无连接。时钟选择如果将管脚 XI 接地,HX711
将自动选择使用内部时钟振荡器,并自动关闭外部时钟输入和晶振的相关电路。这种情况下,典型输出数据速率为10Hz
或80Hz。如果需要准确的输出数据速率,可将外部输入时钟通过一个20pF 的隔直电容连接到XI管脚上,或将晶振连接到XI 和XO
管脚上。这种情况下,芯片内的时钟振荡器电路会自动关

闭,晶振时钟或外部输入时钟电路被采用。此时,若晶振频率为11.0592MHz, 输出数据速率为准确的10Hz
或80Hz。输出数据速率与晶振频率以上述关系按比例增加或减少。使用外部输入时钟时,外部时钟信号不一定需要为方波。可将MCU
芯片的晶振输出管脚上的时钟信号通过20pF 的隔直电容连接到XI管脚上,作为外部时钟输入。外部时钟输入信号的幅值可低至150mV。



串口通讯

串口通讯线由管脚PD_SCK 和DOUT 组成,用来输出数据,选择输入通道和增益。当数据输出管脚DOUT 为高电平时,表明

A/D 转换器还未准备好输出数据,此时串口时钟输入信号PD_SCK 应为低电平。当DOUT 从高电平变低电平后,PD_SCK 应输入25 至27
个不等的时钟脉冲(图二)。其中第一个时钟脉冲的上升沿将读出输出24 位数据的最高位(MSB),直至第24 个时钟脉冲完成,24
位输出数据从最高位至最低位逐位输出完成。第25至27 个时钟脉冲用来选择下一次A/D 转换的输入通道和增益,参见表三。











PD_SCK 脉冲数输入通道 增益













时序图



PD_SCK 的输入时钟脉冲数不应少于25 或多于27,否则会造成串口通讯错误。当A/D 转换器的输入通道或增益改变时,A/D 转换器需要4 个数据输出周期才能稳定。DOUT 在4 个数据输出周期后才会从高电平变低电平,输出有效数据。







==============================我也是分割线================================





好了,看了这么多原理很多人一定已经晕了,下面来简单的:HX711在Arduino上的使用!





经过各种搜索,仅仅在Google Project上找到了一个 phk@FreeBSD.ORG 写的 Arduino 库(感谢啊!),功能很完善,而且支持多版本的Arduino。



我备份在这里吧,以免以后找不到:




hx711-arduino-v0.01.tar.gz (1.3 KB, 下载次数: 179)



再来看一下接线:







1. VCC 可以是 2.6-5.5 中的任意值,因为我们使用的是 Arduino ,所以直接5V供电,GND 接地。

2. SCK 接 Arduino 的 Pin 9,DT 接 Pin10,这两个接脚可以在程序中改变。

3. E+、E-、A+ 和 A- 分别接桥式传感器的:激励电压正、负,输出电压正、负

  (E+ 接红线;E- 接黑线;A+ 接绿或蓝线;A- 接白线)。

4. B+ 和 B- 接通道B的传感器,也可以通过分压电路接电源,用来检测电源电压。不用的话最好接GND,不过我试验不接也没问题。







在 Arduino 中打开示例代码,可以看到非常简单:
  1. #include <HX711.h> // 包含库的头文件



  2. HX711 hx(9, 10); // 数据接脚定义



  3. void setup() {

  4.   Serial.begin(9600);

  5. }



  6. void loop()

  7. {

  8.   double sum = 0;    // 为了减小误差,一次取出10个值后求平均值。

  9.   for (int i = 0; i < 10; i++) // 循环的越多精度越高,当然耗费的时间也越多

  10.     sum += hx.read();  // 累加

  11.   Serial.println(sum/10); // 求平均值进行均差

  12. }
复制代码
给的示例程序非常简单,但是我查看库中含有很多示例没有给出的函数:
  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)
复制代码
可以看到,HX711还可以使用四参数方式定义,同时指定增益倍数及修正系数。在程序运行中还可以随时改变增益倍数,修正系数以及利用偏移值实现去皮重等功能,非常实用。





这里唯一需要解释的是第一个函数,
  1. HX711 hx(9, 10); // 这样用说明只定义SCK和DOUT接脚,AMP默认使用A通道的128位增益,修正系数默认为1;

  2. HX711 hx(9, 10, 64); // 这样用说明定义SCK和DOUT接脚,AMP使用A通道的64增益,修正系数默认为1;

  3. HX711 hx(9, 10, 32, 1.4); // 这样用说明定义SCK和DOUT接脚,AMP使用B通道的32位增益,修正系数为1.4;


复制代码

里有关通道和增益倍数的选择,资料中已经提及过,A通道只有128和64位两种增益倍数,对应满载电压为 20mV 和
40mV,B通道只有固定的32位增益倍数,满载电压为
80mV,使用时各个通道输入电压不要超过对应增益倍数的满载电压。当然,程序中额可以随时切换增益倍数和通道,使用set_amp(amp)函数即可,
当然,amp 的值只能是 128、64或32。

再强调一句,如果增益倍数选择32位增益,那么读出的数据就是B通道的。









==============================我真的是分割线================================







下面写一个具体应用示例:

我选择的传感器参数如下:

满量程输出电压=激励电压x灵敏度1.0mV/V

例如:供电电压是5V乘以灵敏度1.0mV/V=满量程5mV



实际上我选用的这个模块,当电源电压是5V时,供给传感器的供电电压是4V,于是我的传感器满量程电压为4mV。

这样我就完全可以选择增益倍数最高的A通道128位增益来得到最高的精度。



电子称连接图示:











图中绿色的为HX711模块,右下角为Arduino
UNO,吊臂上挂着的就是桥式传感器(我连接的方式为悬吊式测拉力值),AD模块与传感器间的电线越短越好,过长的话会受到各种干扰,AD模块与
Arduino之间的连线最好也不要超过30cm,如果必须加长的话,可以考虑使用带电磁屏蔽的线以及信号放大器。



首先使用库自带的例子测试一下,可以看到悬挂上1kg砝码以及托盘等部件后得到的值为:
  1. 1315588.75

  2. 1315597.75

  3. 1315607.37

  4. 1315606.75

  5. 1315604.75

  6. 1315589.62

  7. 1315579.62

  8. 1315594.25

  9. 1315588.75

  10. 1315580.25

  11. 1315589.00

  12. 1315584.25

  13. 1315605.50

  14. 1315596.12

  15. 1315592.25

  16. 1315607.75

  17. 1315585.75

  18. 1315582.87

  19. 1315568.75

  20. 1315574.75

  21. 1315578.00

  22. 1315583.12

  23. 1315604.62

  24. 1315573.50

  25. 1315584.25


复制代码
去掉一个500g砝码后值为:
  1. 742865.50

  2. 742847.87

  3. 742869.00

  4. 742879.12

  5. 742873.68

  6. 742858.81

  7. 742867.81

  8. 742843.37

  9. 742862.18

  10. 742844.87

  11. 742856.50

  12. 742834.31

  13. 742831.31

  14. 742825.12

  15. 742842.31

  16. 742821.31

  17. 742816.12

  18. 742846.00

  19. 742844.00

  20. 742826.87

  21. 742818.12

  22. 742812.87

  23. 742807.18

  24. 742835.00


复制代码
可以粗略的计算:

1315500 - 742800 = 572700

所以修正系数大概为: 500 / 572700 = 0.00087305

那么程序就可以写成(这时可以适当的减小些读取速度,增加个delay,比如让程序半分钟一读取):


  1. #include <HX711.h>

  2. HX711 hx(9, 10, 128, 0.00087305);

  3. void setup() {

  4.   Serial.begin(9600);

  5. }

  6. void loop() {

  7.   delay(500);

  8.   double sum = 0;

  9.   for (int i = 0; i < 10; i++)

  10.     sum += hx.read();

  11.   Serial.println(sum/10);

  12. }


复制代码
编译写入Arduino后,将砝码全部取下,仅保留称体,得到结果是:
  1. 169640.70

  2. 169632.59

  3. 169632.90

  4. 169640.90

  5. 169632.79

  6. 169623.59

  7. 169649.79

  8. 169610.40

  9. 169615.20

  10. 169659.40

  11. 169619.90

  12. 169624.79

  13. 169614.79

  14. 169624.29

  15. 169617.79

  16. 169629.20

  17. 169604.00

  18. 169617.50

  19. 169628.20

  20. 169589.40

  21. 169602.29

  22. 169598.40

  23. 169596.40

  24. 169604.00

  25. 169612.40

  26. 169592.20


复制代码
说明偏移值近似为 169600,那么我们在setup中调用偏移值的函数(使用bias_read()读取带修正系数及偏移值的读数,与read()对比作参考):
  1. #include <HX711.h>

  2. HX711 hx(9, 10, 128, 0.00087305);

  3. void setup() {

  4.   Serial.begin(9600);

  5.   hx.set_offset(169600);



  6. }

  7. void loop() {

  8.   delay(500);

  9.   double sum0 = 0;

  10.   double sum1 = 0;

  11.   for (int i = 0; i < 10; i++) {

  12.     sum0 += hx.read();

  13.     sum1 += hx.bias_read();

  14.   }

  15.   Serial.print(sum0/10);

  16.   Serial.print(" ");

  17.   Serial.println(sum1/10);

  18. }
复制代码
这时读出的数据变为:


  1. 169615.20 0.01

  2. 169616.70 0.02

  3. 169613.40 0.02

  4. 169636.50 0.03

  5. 169620.70 0.02

  6. 169638.09 0.04

  7. 169625.29 0.02

  8. 169620.50 0.02

  9. 169612.29 0.01

  10. 169609.79 0.01

  11. 169624.40 0.02

  12. 169625.20 0.02

  13. 169630.00 0.03

  14. 169628.29 0.03

  15. 169606.29 0.00

  16. 169617.79 0.02

  17. 169637.90 0.03

  18. 169603.70 0.00

  19. 169605.29 0.01

  20. 169636.50 0.03




复制代码
然后再放上500g砝码查看一下数据:


  1. 742492.68 500.16

  2. 742499.81 500.17

  3. 742503.81 500.17

  4. 742505.18 500.18

  5. 742507.18 500.17

  6. 742499.31 500.17

  7. 742499.50 500.17

  8. 742512.37 500.18

  9. 742521.87 500.19

  10. 742497.87 500.17

  11. 742518.12 500.18

  12. 742518.81 500.18

  13. 742520.87 500.19

  14. 742520.68 500.19

  15. 742530.18 500.20

  16. 742532.87 500.20

  17. 742543.00 500.20

  18. 742540.12 500.21

  19. 742517.00 500.19


复制代码
再放上一个500g砝码试试:
  1. 1315286.75 1000.25

  2. 1315304.62 1000.25

  3. 1315296.62 1000.25

  4. 1315302.25 1000.26

  5. 1315302.12 1000.26

  6. 1315294.25 1000.25

  7. 1315310.00 1000.26

  8. 1315277.37 1000.24

  9. 1315283.75 1000.24

  10. 1315280.25 1000.23

  11. 1315286.75 1000.24

  12. 1315293.25 1000.25

  13. 1315309.87 1000.26

  14. 1315299.50 1000.25

  15. 1315307.12 1000.26

  16. 1315304.50 1000.25

  17. 1315301.50 1000.25

  18. 1315296.75 1000.25

  19. 1315284.50 1000.23

  20. 1315284.37 1000.24

  21. 1315308.75 1000.26

  22. 1315291.62 1000.25

  23. 1315312.75 1000.26

  24. 1315312.25 1000.26


复制代码
可以看到第一位小数发生了大概0.2的变化,这说明我们粗略取的修正系数还不够精确,但是完全符合1g精度的要求。



接下来就是完善程序,增加去皮重的功能了,在Arduino上接一个按钮,为了阻止电磁干扰发生误判断,我采用了常输出高电平的按钮,当按下按钮的时候输出低电平,按钮接在 4 号口上:
  1. #include <HX711.h>

  2. HX711 hx(9, 10, 128, 0.00087305);

  3. void setup() {

  4.   Serial.begin(9600);

  5.   hx.set_offset(169600);

  6. }

  7. void loop() {

  8.   if(digitalRead(4) == LOW) hx.tare();

  9.   double sum0 = 0;

  10.   double sum1 = 0;

  11.   for (int i = 0; i < 10; i++) {

  12.     sum0 += hx.read();

  13.     sum1 += hx.bias_read();

  14.   }

  15.   Serial.print(sum0/10);

  16.   Serial.print(" ");

  17.   Serial.println(sum1/10);

  18. }
复制代码
这样每次按下按钮的时候就可以去皮重了。









============================不要怀疑我是分割线=============================









去皮重也实现了,可是最求完美的我发现每次掉电后都要重新设置皮重,很是麻烦,于是决定将皮重信息存到EEPROM中保存,这样每次上电后就会自动读取存储的皮重信息,从0点开始称量了!



看了一下 HX711 的库,在去皮重的时候只需调用 hx.tare();,tare() 函数内容如下:
  1. void HX711::tare(int t) {

  2.     double sum = 0;

  3.     for (int i = 0; i < t; i++) {

  4.         sum += read();

  5.     }

  6.     set_offset(sum / t);

  7. }
复制代码
里面又调用了 read() 和 set_offset(),read() 不用看了,就是读取一次不带修正系数和偏移量的传感器数据。set_offset() 如下:
  1. void HX711::set_offset(long offset) {

  2.     OFFSET = offset;

  3. }
复制代码
仅仅是把偏移量赋值给OFFSET,而OFFSET会在 bias_read() 中起作用:
  1. double HX711::bias_read() {

  2.     return (read() - OFFSET) * COEFFICIENT;

  3. }
复制代码
也就是说,我们在调用 tare() 的时候如果能返回 OFFSET 值就可以存储它用作去皮重了。

不幸的是,HX711库并不允许我们这么做。也许有人要说了,那就调用 tare() 后  再调用一次 read() 来获取
OFFSET呗。这样可不行,首先调用 tare() 的时候本身就会调用 10 次 read() 并求平均值作为 OFFSET
来使用,我们再调用一次 read() 读出的数既不是之前那个平均值,精度也不如前面的平均值高,就算再求一次 10个 数的平均值,也得不到之前那个
OFFSET了,精度会大打折扣的。



看来唯一的办法就是自己手动改一下 HX711 的库,让它在调用 tare() 的时候直接返回个
OFFSET,这样就解决了我们的需求。为了和官方库区分,我们改一下库的名字,将 HX711 库文件夹复制一份改名为 HX711A ,然后将
HX711.cpp 改为 HX711A.cpp,同样 HX711.h 改为 HX711A.h。然后打开 HX711A.cpp 和 HX711A.h,作出修改。改动如下:



HX711A.cpp:
  1. #include <HX711.h>  ->  #include <HX711A.h>

  2. void HX711::tare(int t) {      - >  double HX711::tare(int t) {

  3. 并在 tare  函数结尾加入: return sum / t;


复制代码
HX711A.h:


  1. #ifndef HX711_H    ->   #ifndef HX711A_H

  2. #define HX711_H    ->   #define HX711A_H

  3. void tare(int t = 10);   ->   double tare(int t = 10);


复制代码
这样在调用 tare() 的时候就可以返回 OFFSET 值了,我们存储 OFFSET值就可以了。

可是新的问题又出现了,OFFSET 值是 double 类型的,而我们 Arduino 提供的 EEPROM 库一次仅能存储1个 char
类型数据。于是上网查资料,发现弘版有个帖子提到了多类型存储,可是相应的库编译后有点庞大,还是自己解决吧,写了个共用体实现的double类型存储,
见我的帖子,可以在程序里加入这一部分内容。

----帖子内容引用------------------------
有的时候我们需要将float或者double类型的数据存到EEPROM中以备下次利用,比如制作电子称存储皮重等信息时。

但是Arduino的EEPROM仅仅能以8bit一位存储1024位。

在网上查了一下,貌似使用共用体的方法很火,于是写了个代码:



数据拆分存储部分:
  1.   dvalue.v = 169600.00;

  2.   unsigned char *dpointer;

  3.   dpointer = dvalue.dchar;

  4.   for(int i = 0; i < 8; i++) {

  5.     EEPROM.write(i,*dpointer);

  6.     dpointer++;

  7.   }
复制代码
数据读取部分:
  1.   for(int i = 0; i < 8; i++) dvalue.dchar[ i] = EEPROM.read(i);

  2.   Serial.println(dvalue.v);
复制代码
完整示例代码:
  1. #include <EEPROM.h>



  2. union data {

  3.   double v;

  4.   unsigned char dchar[8];

  5. } dvalue;



  6. void setup() {

  7.   Serial.begin(9600);

  8.   

  9.   //数据拆分

  10.   dvalue.v = 169600.00;

  11.   unsigned char *dpointer;

  12.   dpointer = dvalue.dchar;

  13.   for(int i = 0; i < 8; i++) {

  14.     EEPROM.write(i,*dpointer);

  15.     dpointer++;

  16.   }

  17. }



  18. void loop()

  19. {

  20.   //数据还原

  21.   for(int i = 0; i < 8; i++) dvalue.dchar[ i] = EEPROM.read(i);

  22.   Serial.println(dvalue.v);

  23.   delay(1000);

  24. }


复制代码
当仅仅要存取float类型时,只需要把v前面的double改为float,把循环和声明dchar中的8改为4即可。













EEPROM库中貌似还有个put方法可以存各种数据类型,感谢18# 葱拌豆腐 提供

http://www.arduino.cc/en/Reference/EEPROM

----------------------------



另外,经过查询资料,桥式传感器受温度影响的偏移量也不容忽视,可以在系统中加入温度传感器(例如DS18B20),并在计算重量的时候加入线性温度漂移修正,这里我就不写温度相关代码了,仅给出温度漂移修正的函数供大家参考:
  1. #include <HX711A.h>

  2. #include <EEPROM.h>

  3. HX711 hx(9, 10, 128, 0.00087305);

  4. int i=0;



  5. // 用于在 EEPROM 中储存 double 类型数据的共用体

  6. unsigned char *dpointer;

  7. union data {

  8.   double v;

  9.   unsigned char dchar[8];

  10. } dvalue;



  11. void setup() {

  12.   Serial.begin(9600);

  13.   for(i = 0; i < 8; i++) dvalue.dchar[ i] = EEPROM.read(i); // 从 EEPROM 读取偏移量

  14.   hx.set_offset(dvalue.v);                                 // 设置已读取的偏移量

  15. }

  16. void loop() {

  17.   if(digitalRead(4) == LOW) {

  18.     dvalue.v = hx.tare();     // 去皮重并读取偏移量

  19.     hx.set_offset(dvalue.v);  // 设置已读取的偏移量

  20.     dpointer = dvalue.dchar;  // 以下程序将偏移量分解并储存到 EEPROM

  21.     for(i = 0; i < 8; i++) {

  22.       EEPROM.write(i,*dpointer);

  23.       dpointer++;

  24.     }

  25.   }

  26.   double sum = 0;

  27.   for (i = 0; i < 10; i++) {

  28.     sum += hx.bias_read();

  29.   }

  30.   Serial.println(sum/10);

  31.   //Serial.println(sum / 10 * (1 + (20 - temprature) / 10 * 0.02)); // 带线性温度补偿的输出,注意temprature单位为摄氏度。

  32. }


复制代码
============================我分割线又回来啦=============================











此外,程序可以增加的功能还有:

1.LCD显示

2.键盘输入及语音功能

3.标准砝码校准功能(如500g),其实就是修正系数的自我修正功能。



这几个功能我就不再研究了,都不难,留给各位自己发挥的空间吧



全文完
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏8 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:106553 发表于 2016-8-17 21:13 | 只看该作者
太强大了
回复

使用道具 举报

板凳
ID:24730 发表于 2017-3-2 16:48 | 只看该作者
厉害厉害厉害厉害厉害
回复

使用道具 举报

地板
ID:171726 发表于 2017-3-21 16:41 | 只看该作者
能将数据的转化贴出来吗,为什么我算出来的和实际差好多?
回复

使用道具 举报

5#
ID:185896 发表于 2017-4-3 23:24 | 只看该作者
非常感谢,很需要!
回复

使用道具 举报

6#
ID:186127 发表于 2017-4-4 21:34 | 只看该作者
你好,我想请问一下,这个传感器是悬挂测压还是放东西去压它?为什么我按照卖家的教程做出来的显示错误,数据也有误,可以指点一下吗?
可以留一个QQ吗?
回复

使用道具 举报

7#
ID:189792 发表于 2017-4-15 12:13 | 只看该作者

 好资料,谢谢楼主分享
回复

使用道具 举报

8#
ID:217792 发表于 2017-7-7 08:42 | 只看该作者
学到了
回复

使用道具 举报

9#
ID:92231 发表于 2017-7-19 06:50 来自手机 | 只看该作者
这个太强大了
回复

使用道具 举报

10#
ID:221051 发表于 2017-7-23 12:06 | 只看该作者
很全面的文章,谢谢楼主,正在做个电子秤,正好用上这些资料!
回复

使用道具 举报

11#
ID:237817 发表于 2017-10-8 15:22 | 只看该作者

nb,很好,厉害了
回复

使用道具 举报

12#
ID:242054 发表于 2017-10-23 13:09 | 只看该作者
厉害啊
回复

使用道具 举报

13#
ID:248689 发表于 2017-11-18 23:08 | 只看该作者
楼主,为什么我出来的数据很杂乱,负的、正的、零都有
回复

使用道具 举报

14#
ID:248689 发表于 2017-11-19 15:37 | 只看该作者
楼主,按照上面的教程做数据为什么会有很大的跳变,正负零都有??采样率要考虑吗?直接用自带的hx711示例应该出不来吧
回复

使用道具 举报

15#
ID:257864 发表于 2017-12-5 20:07 | 只看该作者
问问大神,这个每克对应的ad数值怎么确定,标定怎么做的呢
回复

使用道具 举报

16#
ID:257864 发表于 2017-12-5 20:10 | 只看该作者
987675539 发表于 2017-3-21 16:41
**** 作者被禁止或删除 内容自动屏蔽 ****

对对对 想看看ad数值和每克对应关系
回复

使用道具 举报

17#
ID:239426 发表于 2017-12-15 13:34 | 只看该作者
厉害,厉害,厉害,厉害,厉害,厉害,厉害,厉害,厉害,
回复

使用道具 举报

18#
ID:284872 发表于 2018-2-23 05:20 | 只看该作者
楼主简直太厉害了
回复

使用道具 举报

19#
ID:19440 发表于 2018-7-11 11:00 | 只看该作者
这是转发的吧,楼主测过么?
回复

使用道具 举报

20#
ID:382195 发表于 2018-8-8 10:24 | 只看该作者
请问HX711 hx(9,10);总是报错是什么原因;Arduino:1.8.5 (Windows 10), 开发板:"Arduino/Genuino Uno"

sketch_aug07b:5: error: 'HX711' does not name a type

HX711 hx(9,10);

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表