风筝
发表于: 2020-2-4 13:17:52 | 显示全部楼层

在本篇文章中,我们将主要介绍如何使用Arduino Uno开发板、HX711分线板和称重传感器来测量重量。此外,使用LCD模块LCM1602 IIC显示测量的重量值。


所需的材料清单:

–  Arduino Uno开发板

–  跳线

–  HX711称重传感器

–  称重传感器

–  LCM1602 IIC V1(LCD)

–  小方木和螺钉

loadcell_and_hx711.jpg

称重传感器(左侧)和HX711分线板(右侧)。


HX711是一款24位模数转换器,非常适合体重秤应用。幸运的是,HX711有许多分线板。因此,与称重传感器结合使用非常容易。称重传感器是将压力/力转换为电信号的传感器。由于电信号通常只有几毫伏,因此必须对其进行放大。这就是HX711分线板的作用:将弱信号放大到几伏,以便我们可以在Arduino Uno读取信号。


接线准备:

为了轻松将称重传感器连接到HX711模块的引脚,您可以在电线上添加杜邦连接器。您可以使用任何将导线连接到模块引脚的方法。如果使用杜邦连接器,请记住,此类称重传感器通常具有较细的单股线。

before_crimping.jpg

准备压接工具、连接器和外壳,以便将杜邦连接器添加到称重传感器的导线中。这样,称重传感器可以轻松连接到HX711分线板上。


如果将称重传感器安装在坚固且重的物体上,则将从称重传感器中获取一致的压力值。我用一块旧的方木来完成这项任务:

wooden_squared_timber.jpg

称重传感器安装在方形木材上。


连接方式:

首先,称重传感器连接到HX711模块。称重传感器有四根线,将其连接到HX711模块的前四个引脚:红线到E、黑线到E-、白线到A-、绿线到A。如果需要将第二个称重传感器连接到HX711模块,则可以使用升序的引脚B-和B。

接下来,将HX711模块连接到Arduino Uno。模块的GND引脚连接到Arduino的GND引脚。 DT和SCK必须连接到Arduino的数字引脚。在本文中,DT连接到数字引脚4,SCK连接到数字引脚5。引脚VCC必须连接到Arduino的5V引脚。由于LCM1602模块还需要连接到5V引脚,因此在中间使用一块面包板来分割Arduino的5V信号。

最后一步,将LCM1602模块的SDA和SCL引脚连接到Arduino Uno的相应SDA和SCL引脚。此外,GND引脚必须连接到Arduino的其中一个GND引脚,而VCC引脚需要连接到面包板的5V信号。

hx711_bb.jpg

将称重传感器连接到HX711模块。


示例源代码:

  1. #include <HX711_ADC.h> // https://github.com/olkal/HX711_ADC
  2. #include <Wire.h>
  3. #include <LiquidCrystal_I2C.h> // LiquidCrystal_I2C library
  4. HX711_ADC LoadCell(4, 5); // parameters: dt pin, sck pin<span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start"></span>
  5. LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // 0x27 is the i2c address of the LCM1602 IIC v1 module (might differ)
  6. void setup() {
  7.   LoadCell.begin(); // start connection to HX711
  8.   LoadCell.start(2000); // load cells gets 2000ms of time to stabilize
  9.   LoadCell.setCalFactor(999.0); // calibration factor for load cell => strongly dependent on your individual setup
  10.   lcd.begin(16, 2); // begins connection to the LCD module
  11.   lcd.backlight(); // turns on the backlight
  12. }
  13. void loop() {
  14.   LoadCell.update(); // retrieves data from the load cell
  15.   float i = LoadCell.getData(); // get output value
  16.   lcd.setCursor(0, 0); // set cursor to first row
  17.   lcd.print("Weight[g]:"); // print out to LCD
  18.   lcd.setCursor(0, 1); // set cursor to secon row
  19.   lcd.print(i); // print out the retrieved value to the second row
  20. }
复制代码

校准

最后一步是校准秤。 如果您有一些校准砝码,此步将变得非常容易。 不幸的是,我没有砝码。 因此,我使用了另一种方法来校准。 首先,我在另一个秤上面放置了一个直流电机:

1.jpg

然后,将直流电机放在称重传感器上。 接下来,调整了setCalFactor函数的参数,直到显示正确的重量值。 请注意,每个称重传感器和设置可能需要不同的校准系数。

2.jpg

为了检查校准系数是否正常工作,我用其他东西(螺丝刀)再次做了同样的事情:

3.jpg

总体而言,我对准确性感到很满意:

4.jpg


跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 714 | 回复: 1501



手机版|

GMT+8, 2024-12-23 22:42 , Processed in 0.042916 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

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