1、项目概述
2、项目架构
3、硬件环境
4、Arduino功能设计
5、LabVIEW功能设计
5.1.前面板设计
5.2、程序框图设计
1、项目概述
质量是物理学中的七个基本数量大纲之一。在工业生产和日常生活中,我们都需要获得物体的质量。例如,在购买商品时,我们需要确定其质量大小,或以质量为中间量,以进一步获得物体的其他参数,如质地、偏心等。
称重传感器实际上是一种将质量信号转换为可测量电信号输出的装置。根据不同的转换方法,称重传感器分为光电、液压、电磁、电容、磁极变形、振动、陀螺仪式、电阻应变8类,其中电阻应变应用最广泛。
电阻应变称重传感器的工作原理:弹性体(弹性元件、敏感梁)在外力作用下产生弹性变形,使粘贴在其表面的电阻应变片(转换元件)也随之变形。电阻应变片变形后,其电阻值会发生变化(增大或减小),然后通过相应的测量电路将电阻变化转换为电信号(电压或电流)。
由此可见,电阻应变片、弹性体和检测电路是电阻应变称重传感器不可缺少的组成部分。
电阻应变片是将电阻丝均匀分布在有机材料的基础上,即成为应变片,最重要的参数是灵敏系数K。
需要注意的是,灵敏度系数K值的大小是由金属电阻丝材料的性质决定的常数。它与应变片的形状和尺寸无关。不同材料的K值一般为1.7~3.6.其次,K值是无因次量,即它没有量纲。
弹性体是一种具有特殊形状和两种功能的结构部件。首先,它承受称重传感器的外力,对外力产生反应力,实现相对静态平衡。其次,它需要产生一个高质量的应变场(区域),使粘贴在该区域的电阻应变片能够理想地完成机械变形到电信号的转换。
需要注意的是,上述分析的应力状态是局部"情况,应变片实际感受到的是平均"状态。
检测电路的功能是将电阻应变片的电阻变化转化为电压输出。由于惠斯登电桥具有抑制温度变化、侧向力干扰、解决称重传感器补偿问题等诸多优点,因此惠斯登电桥已广泛应用于称重传感器中。因为全桥式等臂电桥的灵敏度最高,各臂参数一致,各种干扰的影响容易相互抵消,所以称重传感器均采用全桥式等臂电桥。
称重传感器的出线方式有4线和6线,模块或称重变送器的接线也有4线和6线。接线原理是传感器可以连接6线而不是4线,必须连接4线才能短接。
一般称重传感器为六线制,当连接到四线制时,电源线(EXC-,EXC )与反馈线(SEN-,SEN )分别短接。SEN 和SEN-补偿线路电阻,SEN 和EXC 是通路的,SEN-和EXC-是通路的。EXC 和EXC-它是为称重传感器供电的,但由于称重模块与传感器之间的线路损耗,实际上传感器接收到的电压会小于供电电压。每个称重传感器都有一个mV/V它输出的特性mV信号与接收到的电压密切相关,SENS 和SENS-它实际上是称重传感器中的一个高阻抗电路,可以将称重模块实际接收到的电压反馈给称重模块。将在称重传感器上EXC 与SENS 短接,EXC-与SENS-短接仅限于传感器接近称重模块,电压损耗很小,否则测量误差。称重传感器的实物如下图所示:
2、项目架构
本文将介绍应变称重传感器的使用HX711模块、Arduino Uno和LabVIEW系统框图如下图所示:
Arduino Uno负责下位机HX711读写和数据传输,LabVIEW作为上位机编写的显示软件,上下位机使用USB-TTL接口通信。此外,未知传感器也可以通过该系统校准,以纠正误差,提高测量精度。
HX711是专为高精度称重传感器设计的24位A/D转换器芯片。与其他同类芯片相比,该芯片集成了其他同类芯片所需的外围电路,包括稳压电源、片内时钟振荡器等,具有集成度高、响应速度快、抗干扰性强等优点。
HX711降低了电子称重成本,提高了性能和可靠性。芯片和后端MCU芯片的接口和编程非常简单,所有控制信号都由管脚驱动,无需编程芯片内的寄存器。输入选择开关可以选择任何通道A或通道B,与低噪声可编程放大器相连。
下载项目资源请参见:LabVIEWArduino电子称重系统实战项目-单片机文档资源
3、硬件环境
将HX711模块的VCC、GND、SCK和DOUT分别接至Arduino Uno控制器的5V、GND、D9和D10;并将HX711模块的E 、E-、A 和A-分别连接称重传感器的激励电压为正、负、输出电压为正、负(具体接线请参考传感器接线说明),最后将HX711模块的B 和B-接GND。
为减少干扰信号,HX711高精度A/D模块与电阻式称重传感器之间的连接线应尽可能短,过长时会受到干扰,HX711高精度A/D模块与Arduino Uno控制器之间的连接线也应尽可能短。如果需要延长线,最好使用带电磁屏蔽的电缆。效果如下图所示:
4、Arduino功能设计
Arduino下位机部分需要完成以下功能:读取和传输称重传感器的输出信号,Arduino Uno控制板通过USB-TTL电缆接收上位机发出的命令,读取称重传感器的数据,并将数据返回LabVIEW上位机软件。HX711模块主要完成输出信号的高精度A/D对称重传感器进行转换和激励。
此外,还需要检查具体传感器的灵敏度,以计算满量程电压和增益倍数。满量程电压的计算公式为︰全量程输出电压=激励电压×灵敏度。灵敏度1.0mV/V例如,假设供电电压为5V,满量程电压为5mV。
通过实际测量,HX711高精度A/D模块输出的电压为4V左右,则传感器满量程电压为4mV。由于HX711高精度A/D模块增益倍数为128或64对应的满量程差输入电压±20mV或±40mV。选择增益倍数为128倍,以获得更高的精度。
Arduino Uno控制器负责读取LabVIEW通过上位机发出的质量测量命令HX71通过串口将称重传感器输出的电压值发送回上位机LabVIEW软件。Arduino Uno控制器的程序代码如代码如下所示:
#include <HX711.h> HX711 hx(9, 10,128); #define HX711_COMMAND 0x10 //收集命令字 byte comdata[3]={0}; //定义数组数据,存储串口接收数据 void receive_data(void); //接受串口数据 void test_do_data(void); //测试串口数据是否正确,并更新数据 double sum = 0; void setup() { Serial.begin(9600); } void loop() { while (Serial.available() > 0) ///不断检测串口是否有数据 { receive_data(); //接受串口数据 test_do_data(); ///测试数据是否正确,更新标志位置 } } void receive_data(void) { int i ; for(i=0;i<3;i ) { comdata[i] =Serial.read(); ///延迟一会,为下一个字节做好串口缓存准备,不延迟可能会导致数据丢失, delay(2); } } void tst_do_data(void)
{
if(comdata[0] == 0x55) //0x55和0xAA均为判断是否为有效命令
{
if(comdata[1] == 0xAA)
{
if(comdata[2] == HX711_COMMAND)
{
for (int i = 0; i < 10; i++){
sum += hx.read();}
Serial.println(sum/10,2);
}
}
}
}
5、LabVIEW功能设计
LabVIEW上位机部分需要完成以下功能:
1、向下位机Arduino控制器发送电压采集命令,Arduino控制器通过串口接收上位机命令,完成相应的数据采集之后并将采集的数据回传,LabVIEW软件将回传的数据转换为质量并显示在前面板上。
2、通过使用标准砝码对称重系统进行标定,以获得称重传感器的输出电压与质量的关系,从而拟合出传感器的输出电压与质量的标定系数,用于将传感器的输出电压换算为所称量的质量,而且通过精确的砝码对称重系统进行多次标定,有利于提高整个称重系统的测量精度。
5.1、前面板设计
LabVIEW前面板分为称重和标定两个部分,称重部分主要有读取标定系数、单次称重、多次称重取平均值。标定部分主要有5阶正反行程的标定、计算拟合系数和保存拟合系数。同时,在标定部分设有一个超时测量电压的显示框,以实时地显示当前称重传感器输出信号值的变化情况。小量程电子称重系统的LabVIEW上位机前面板,如下图所示:
5.2、程序框图设计
由于在LabVIEW上位机的程序设计中需要多次调用电压采集子程序,以向ArduinoUno控制器发送命令码,并获取Arduino Uno控制器返回的测量数据,所以将电压采集子程序设计成子Vl,不仅可以简化程序设计,还便于调用。
电压采集子程序的前面板和程序框图,如下图所示:
LabVIEW上位机主程序的结构为顺序结构+While循环+事件结构。首先,在顺序结构中的第一帧中,对所使用的数组、中间变量和显示控件进行初始化,在顺序结构的第二帧中,通过设置的串口号来初始化串口通信。然后,程序进入While循环和事件结构,不断地检测是否有事件得到响应,并执行,事件结构有"测量_称重”、“测量_读取标定系数”"、“测量_计算平均值"、“标定_采集"、“标定_拟合"、“标定_保存"和“超时”。最后,关闭串口通信。
初始化程序框图如下图所示:
在“测量_称重"事件结构中,通过“采集子程序"读取Arduino Uno控制器返回的数据,并利用标定系数计算得到所称量的重量,同时利用称重计数器将重量数据循环显示在测量数据中。“测量_称重"值改变事件程序框图如下图所示:
在“测量_读取标定系数"事件结构中,通过“文件对话框"的选择来读取称重传感器的标定系数,以用于计算所称量的重量,同时显示当前标定系数,以表示当前所使用的标定系数,进一步扩大了电子称重系统的适用范围,可以通过配置不同量程的称重传感器来实现不同范围的称重需求。“测量_读取标定系数"值改变事件程序框图如下图所示:
在"测量_计算平均值"事件结构中,通过对测量数据数组的5个元素累加并除以5,得到所称量的重量,这种通过多次测量取平均值的方法可以提高称重精度,满足较高精度的称重需求。“测量_计算平均值"值改变事件程序框图如下图所示:
在“标定_采集"事件结构中,通过“采集子程序"读取Arduino Uno控制器返回的称重传感器输出的电压信号,并利用标定计数器和条件结构将所采集到的数据依次显示在正行程和反行程上。“标定_采集"值改变事件程序框图如下图所示:
在“标定_拟合"事件结构中,通过将正行程和反行程数组中的电压数据求平均值,与质量标准值数组利用线性拟合函数计算出拟合系数,并显示在标定系数上。“标定_拟合”值改变事件程序框图如下图所示:
在“标定_保存"事件结构中,通过“文件对话框"来选择标定系数的保存路径,并检查是否存在相同文件名的文件,如存在则提醒是否替换文件,然后将标定系数以配置文件的格式保存,后缀名为".ini"。“标定_保存"值改变事件程序框图如下图所示:
当2秒内无事件被触发,则事件结构进入“超时"分支。在“超时"事件结构中,通过“采集子程序"读取Arduino Uno控制器返回的称重传感器输出信号,并将其显示为前面板上的当前电压值。“超时"事件结构如下图所示:
除了传感器的非线性之外,电阻应变式称重传感器温度漂移的偏差值也不容忽视,可以在系统中加入温度传感器(例如DS18B20),并在计算重量时进行线性温度漂移修正。
另外,选择较高精度的称重传感器,还可以利用此小量程电子称重系统实现物体的质量质心的测量,例如,固体火箭发动机的质量质心测量系统。
项目资源下载请参见:LabVIEWArduino电子称重系统【实战项目】-单片机文档类资源