基于HX711带记忆功能的饮水量计量装置
作者: 李朝阳
摘要:文章设计了一种带记忆功能的饮水量计量装置,水杯放置在悬臂梁上,悬臂梁贴形变电阻,形变电阻桥式电路将形变信号转变为电信号。24位高精度AD数模转换芯片HX711将电信号转变为数字信号,数字信号传递给STC89C52单片机控制器,STC89C52单片机控制器实时计量、自动计算使用者饮水次数、饮水量,采用液晶LCD1602显示,并保存饮水次数、饮水量到FLASH存储区,断电还能存储数据。使用者使用该装置,能够实时观察每次饮水量、饮水次数、总的饮水量,提高饮水质量,同时养成良好的饮水习惯。
关键词:单片机;HX711;饮水量;计量装置
中图分类号:TP216 文献标识码:A
文章编号:1009-3044(2023)26-0095-04
开放科学(资源服务)标识码(OSID) :<G:\飞翔打包文件一\电脑2023年第二十六期打包文件\6.05xs202326\Image\image23.jpeg>
0 引言
水是人类生命的源泉,身体健康需要保持良好的饮水习惯。然而,现代社会中,越来越多的人因为工作、学习等原因,常常忽视了饮水的重要性,导致身体出现脱水、口渴等症状,不利于身体健康。
为了解决这个问题,饮水量计量装置应运而生,可以测量人体摄入水分量,帮助人们更好地掌握自己的饮水量。随着现代人生活方式的改变,越来越多的人开始注重健康饮食和身体健康,因此饮水量计量装置的需求也越来越高。
HX711是24 位 A/D 转换器芯片,西安外事学院工学院汪显卫[1]、无锡商业职业技术学院物联网学院王小娟[2]、北京信息科技大学于飞[3]、中国电子科技集团公司第三十八研究所刘磊[4]、杭州职业技术学院信息工程学院葛海江[5]等,对HX711进行研究分析并设计电子秤,武汉交通职业学院商林就精度与稳定性进行了实践[6]。
笔者在前人的基础上,设计了一种基于HX711的带记忆功能的饮水量计量装置,能够计量单次饮水量、饮水次数、总饮水量,并且用液晶显示,方便用户随时查看饮水量。
1 总体设计
计量装置主要由悬臂梁、形变电阻桥式电路、HX711模数转换电路、STC89C52控制器、液晶显示电路、按键输入电路、DS1302时钟电路等构成,如图1所示。
1.1 供电电路
供电电路如图2所示,将+9V ~ +12V电压转换成5V电压,为单片机最小系统电路、液晶显示电路供电。
1.2 形变电阻桥式电路
形变电阻桥式电路将应变计电阻变化转化为电压或电流的电信号,如图3所示,以电阻应变计作为桥臂组成电桥电路,当有重物放置到秤盘上时,桥臂发生弯曲,弯曲程度与放置物重量有关,电阻应变器感应到相应的信号后,输出微弱的电压信号。
1.3 基于HX711的模数转换电路
基于HX711的模数转换电路如图4所示,电路将形变电阻桥式电路微弱电信号放大,并转变为数字信号,再传递给控制器。HX711芯片具有集成度高、响应速度快、抗干扰性强等优点,芯片内部集成稳压电路,可直接供电于芯片内部连接的传感器和 A/D 转换器。此外,时钟振荡器也被集成在芯片内部,不需要额外的外接设备。另外,芯片内部已整合上电自动复位电路,使开机初态的设定变得简单化。该器件中有通过输入选择开关随意选择信道 A 或信道 B 来完成信号放大的低噪声可编程放大器。连接可编程放大器,内部噪声小。可编程增益为 128 或 64 的通道 A,分别对应± 20mV 或± 40mV 输入信号幅值的满量程差分。B 通道增益定值64,可检测系统参数 [7]。
该芯片与后端MCU 芯片的接口和编程非常简单,所有控制信号由管脚驱动,无须对芯片内部的寄存器编程。HX711 是一款电子秤专用的高精度 24 位 A/D 转换器芯片,可以降低电子秤的整机成本,提高整机的性能和可靠性。
1.4 单片机最小系统电路
单片机最小系统电路如图5,由晶振电路、复位电路、片外存储器选择电路构成。
1.5 DS1302时钟电路
DS1302是美国DALLAS公司低功耗实时时钟芯片,具有涓细电流充电能力,DS1302时钟电路如图6所示。它可以对年、月、日、周、时、分、秒进行计时,并且具有闰年补偿等多种功能。
1.6 LCD1602液晶显示电路
液晶显示电路如图7所示。LCD1602液晶内部控制器HD44780是一款点阵式液晶显示控制器,接收STC89C52单片机控制器的指令、数据后,根据指令显示数据。
1.7 按键电路
按键电路如图8所示,有三个独立按键K1、K2、K3,按下不同按键,STC89C52单片机控制器执行相应操作。
2 软件编程
2.1 主函数
主函数主要是进行变量初始化、调用模数转换函数、采集当前称重值、调用液晶显示函数、调用FLASH存储函数,流程图如图9所示。
程序开始,进行液晶初始化、变量初始化,调用模数转换程序,读取当前称重值b0;调用时钟函数,读取当前时间;调用液晶显示函数,显示当前时间年月日时分秒、称重值、单次饮水量、饮水次数、总饮水量。按下K2,调用模数转换程序,读取当前称重值b1,b1减去b0为当前称重值。按下K3,调用模数转换程序,读取当前称重值b2,b2减去b0,为当前称重值。
饮水后,将水杯放在装置上,按下K3,STC89C52记录此时的称重值b3,饮水次数加1,计算出本次饮水量(b3-b2) 、总饮水量,保存到FLASH。
2.2 模数转换函数HX711_Read()
要使 X711 芯片与单片机进行通信,需要使用 PD_SCK 时钟引脚和 Dout引脚进行数据输出。另外,输入通道选择也是有必要的。 如果输出数据的管脚 DOUT 是高电平,说明 A/D 转换器还没有做好输出数据的准备。这时,串口时钟输入信号 PD_SCK 要保持低电平状态。当 Dout 从高电平变成低电平时,PD_SCK 需要输入 25 到 27 个不同的时钟脉冲。当第一个时钟脉冲上升沿发生时,会读出输出的最高位数据(即 MSB),并将 24 位数据逐位输出,从最高位(MSB)到最低位(MSB),直至第 24 个脉冲完成。用于在接下来的 A/D 转换中选择输入通道和增益的是第 25 至 27 个时钟脉冲[7]。
读取HX711芯片,首先初始化引脚,然后数据引脚拉高,延时一段时间后,将时钟引脚拉低,等待AD转换结束,然后开始读取数据。接下来循环24次数据接收,在第25个脉冲将数据异或转换,并拉低时钟引脚结束AD转换。模数转换函数HX711_Read(),读取24位数据,返回主函数:
unsigned long HX711_Read(){
unsigned long int num;
unsigned char k;
HX711_CLK=0;
num=0;
while(HX711_DOUT);
for (k=0;k<24;k++){
HX711_CLK=1;
num=num<<1;
HX711_CLK=0;
if(HX711_DOUT) num++;}
HX711_CLK=1;num=num^0x00800000;
HX711_CLK=0;
return(num);}
2.3 滤波算法
通过形变电阻桥式电路获得的电信号,在外界因素干扰项,掺杂很多别的信号,比如磁场、抖动、空气流动之类的自然的或人为不可避免的信号。为了过滤干扰信号,采用了递推中位值平均滤波法。连续采集,对采集到的数据进行排序,选取其中的中位值作为滤波后的值,达到平滑信号的目的。该算法能有效地克服因偶然因素引起的波动干扰,使测得的数据更为准确。
2.4 其他函数
液晶显示函数LCD_display(),显示当前重量、单次饮水量、饮水次数、总饮水量。
DS1302时钟读取函数DS1302_read(),读取当前时间。
内部FLASH存储空间读取函数FLASH_read()、FLASH_eraser()、FLASH_write(),分别完成存储空间读取、擦除、写入功能。
3 装置工作过程
我们通过实验验证饮水量计量装置。连续几次按下K2、K3计算饮水次数、每次饮水量、总饮水量。
装置工作过程如图10所示:
1) 装置通电
装置通电前,装置悬臂梁上面不能放置任何物品。通电后,STC89C52调用模数转换函数HX711_Read(),并记录此时的称重值b0。如果需要饮水次数和总饮水量清空,请按下K1,此时液晶界面,称重值、饮水次数、总饮水量为0。液晶第一行显示时间5月1日10点30分,实时称重值0,第二行饮水次数0、本次饮水量0,总饮水量0。
2) 水杯装水放在装置上,实时称重值537
3) 饮水
饮水前,水杯需要放在装置上,按下K2,STC89C52记录此时的称重值b1。端起杯子饮水,此时实时称重值为0。
饮水后,将水杯放在装置上,按下K3,STC89C52记录此时的称重值b3,饮水次数加1,计算出本次饮水量(b3-b2) 、总饮水量,保存到FLASH。
4) 重复饮水动作
5) 加水
6) 重复饮水动作
7) 重复饮水动作
此时实时称重值、饮水次数、本次饮水量、总饮水量,显示在液晶界面,实时称重值432g,饮水次数4,本次饮水量63g,总饮水量257g。
4 结论
随着现代人生活方式的改变,越来越多的人开始注重健康饮食和身体健康,因此饮水量计量装置的需求也越来越高。
用24位高精度AD数模转换芯片HX711设计的带记忆功能的饮水量计量装置,可以实时准确计量饮水次数、每次饮水量、每天饮水总量。同时本装置有记忆功能,数据保存在FLASH存储空间,平时不用可以关闭电源,下次打开从FLASH存储空间读取饮水次数、每次饮水量、饮水总量数据,具备节能绿色环保。本装置帮助人们更好地掌握自己的饮水量,为健康提供更好的指导和帮助,促进身体健康。
参考文献:
[1] 汪显卫.基于HX711自动计价数显电子秤设计[J].硅谷,2012,5(5):68.
[2] 王小娟.基于HX711数显称重仪的设计[J].武汉船舶职业技术学院学报,2015,14(1):36-38.
[3] 于飞,李擎,员乾乾.基于HX711的电子称设计[J].传感器世界,2016,22(12):33-36.
[4] 刘磊.基于A/D芯片HX711的自制桥式传感器[J].数字技术与应用,2018,36(4):89,91.
[5] 葛海江.基于HX711的高精度电子称重研究[J].电子测试,2019(10):31-32.
[6] 商林.改进的中位值平均滤波法提升HX711电子秤精度与稳定性的实验设计与实践[J].武汉交通职业学院学报,2023,25(1):118-122.
[7] HX711官方资料,海芯科技,2011.12
【通联编辑:梁书】