今天,我们将通过连接称重传感器和HX711重量传感器与Arduino来构建Arduino重量机器。我们已经在许多商店看到过称重机,这些机器只是通过将物品放在称重平台上来显示重量。因此,在这里,我们使用Arduino和称重传感器构建了同一台称重机,最大称重能力为40kg。通过使用更高容量的称重传感器,可以进一步提高此限制。
构建此Arduino体重秤所需的主要组件是一个传感器,该传感器可以将重量转换为等效的电信号。该传感器称为称重传感器,因此在本项目中,我们将使用此称重传感器作为Arduino重量传感器。我们还在其他几个项目中使用了相同的称重传感器,例如便携式Arduino零售称重机,Raspberry pi称重秤等,如果有兴趣,也可以检查一下。
构建Arduino体重秤所需的组件:
- Arduino Uno
- 称重传感器(40kg)
- HX711称重传感器放大器模块
- 16x2 LCD
- 连接线
- USB电缆
- 面包板
- 螺母螺栓,框架和底座
称重传感器和HX711重量传感器模块:
称重传感器是将力或压力转换为电输出的传感器。该电输出的大小与所施加的力成正比。称重传感器具有应变仪,当应变仪承受压力时会变形。然后,应变仪会在有效变形时改变其有效电阻,从而在变形时生成电信号。称重传感器通常由四个惠斯通电桥构造的应变仪组成。称重传感器有5kg,10kg,100kg等多种范围,这里我们使用称重传感器,其重量可达40kg。
现在,称重传感器产生的电信号只有几毫伏,因此它们需要通过一些放大器进一步放大,因此,HX711称重传感器就出现了。HX711称重传感器模块具有HX711芯片,该芯片是24个高精度A / D转换器(模数转换器)。 HX711具有两个模拟输入通道,通过对这些通道进行编程,我们可以获得高达128的增益。因此,HX711模块放大了称重传感器的低电输出,然后将该经过放大和数字转换的信号馈入Arduino以得出重量。
称重传感器通过四根线与HX711称重传感器放大器连接。这四根线是红色,黑色,白色和绿色/蓝色。模块之间的电线颜色可能略有不同。连接细节和图表下方:
- 红线连接到E +
- 黑线连接到E-
- 白线连接到A-
- 绿线连接到A +
用平台和底座固定称重传感器:
此步骤是可选步骤,您可以在没有平台的情况下直接将砝码放在称重传感器上,而无需用任何底座固定即可简单地将其固定,但是最好安装平台以将大物件放在上面并固定在底座上使它停止。因此,在这里我们需要制作一个框架或平台来放置用于重量测量的物品。还需要使用螺母和螺栓将底座固定在其上方的称重传感器。在这里,我们使用了硬纸板作为框架,用于在其上放置物品,并使用木板作为底座。现在按照电路图所示进行连接,即可开始使用。
电路说明:
该项目的连接非常简单,原理图如下所示。16x2 LCD引脚RS,EN,d4,d5,d6和d7分别与Arduino的引脚编号8、9、10、11、12和13连接。HX711模块的DT和SCK引脚直接与Arduino的引脚A0和A1连接。HX711模块的称重传感器连接已在前面进行了说明,并在下面的电路图中显示。
工作说明:
这个Arduino重量测量项目的工作原理很简单。在详细介绍之前,首先,我们必须校准该系统以测量正确的重量。用户上电时,系统将自动开始校准。如果用户想手动校准,请按按钮。我们创建了一个函数 void calibrate() 进行校准,请检查下面的代码。
为了进行校准,请等待LCD指示将100克重放在称重传感器上,如下图所示。当LCD显示 “投入100克”时, 将100克砝码放在称重传感器上,然后等待。几秒钟后,校准过程将完成。校准后,用户可以将任何重量(最大40kg)放在称重传感器上,并且可以在LCD上获得以克为单位的值。
在这个项目中,我们使用了Arduino来控制整个过程。称重传感器感应重量,并向HX711负载放大器模块提供模拟电压。HX711是一个24位ADC,可对称重传感器的输出进行放大和数字转换。然后,这个放大后的值被馈送到Arduino。现在,Arduino计算HX711的输出,并将其转换为以克为单位的重量值,并将其显示在LCD上。一个按钮用于校准系统。我们已经为整个过程编写了一个Arduino程序,请在本教程的最后查看代码和演示视频。
Arduino体重秤代码:
对于初学者来说,该项目的编程部分有些复杂。在该项目中,我们没有使用任何库将HX711负载传感器与Arduino接口。我们刚刚遵循了HX711的数据表和应用笔记。尽管存在一些用于此目的的库,但是您只需要包括该库,就可以使用一行代码来获得权重。
首先,我们包含了LCD的头文件,并为它们定义了引脚。并且也用于按钮。然后声明一些变量以进行计算。
#包括
之后,我们创建了以下函数,用于从HX711模块读取数据并返回其输出。
unsigned long readCount(void){unsigned long Count; 未签名的字符我; pinMode(DT,OUTPUT); digitalWrite(DT,HIGH); digitalWrite(SCK,LOW); 计数= 0; pinMode(DT,INPUT); while(digitalRead(DT)); 对于(i = 0; i <24; i ++){digitalWrite(SCK,HIGH); Count = Count << 1; digitalWrite(SCK,LOW); if(digitalRead(DT))Count ++; } digitalWrite(SCK,HIGH); Count = Count ^ 0x800000; digitalWrite(SCK,LOW); return(Count); }
之后,我们初始化了LCD,并在 void setup()中 给出了输入和输出引脚的指示 。
void setup(){Serial.begin(9600); pinMode(SCK,OUTPUT); pinMode(sw,INPUT_PULLUP); lcd.begin(16,2); lcd.print(“ Weight”); lcd.setCursor(0,1); lcd.print(“ Measurement”); 延迟(1000); lcd.clear(); 校准(); }
接下来,在 void loop() 函数中,我们已从HX711模块读取数据,并将此数据转换为重量(克),然后将其发送到LCD。
void loop(){count = readCount(); 整数w =((((count-sample)/ val)-2 *(((count-sample)/ val))); Serial.print(“ weight:”); Serial.print((int)w); Serial.println(“ g”); lcd.setCursor(0,0); lcd.print(“ Weight”); lcd.setCursor(0,1); lcd.print(w); lcd.print(“ g”); if(digitalRead(sw)== 0){val = 0; 样本= 0; w = 0; 计数= 0; 校准(); }}
在此之前,我们创建了一个校准功能,通过将100克重的砝码放在称重传感器上来校准系统。
无效的calibrate(){lcd.clear(); lcd.print(“正在校准…”); lcd.setCursor(0,1); lcd.print(“请稍候…”); for(int i = 0; i <100; i ++){count = readCount(); 样品+ =计数; Serial.println(count); }……………….
因此,在这里我们学习了称重传感器和HX11重量传感器与Arduino的基本接口,以测量重量。在我们的文本教程中,我们将基于重量测量创建一些应用程序,例如智能容器,自动门等。