《51单片机电子秤:以语音播报为特色的实训项目》

将单片机项目实训——51单片机电子秤(语音播报版)分享出来,如有不足,敬请指出。

【实验图片】

 【演示视频】

【项目实训】51单片机电子秤(语音播报版)

目录

一、设计要求

二、方案选择

三、软件设计

四、图片展示

五、资料链接

六、设计要点

七、关于作者

八、后记


一、设计要求

        1.利用单片机对数字电子秤的各种功能进行控制。

        2.数字电子秤能够显示商品的重量、单价,且自动完成商品总价的计算,可通过语音播报商品总价。

        3.数字电子秤的测量范围要求达到5KG,测量精度要求达到1g。

二、方案选择

        1.设计思路

        根据设计要求,首先要实现电子秤的称重基本功能,需要通过称重传感器采集到重量信号,经放大电路处理后,由模数转换成数字量,因此每一数字量就对应着一个物体的质量(在一定精度范围内),所以只要将转换成的数质量与物体质量建立映射关系,即可完成称重的要求。而其他的功能则可以通过程序运算来实现,并通过键盘进行控制。

总体结构框架图如下所示:

原理图如下所示:

        2.控制器

        本系统基于51单片机来实现,因为系统需要控制液晶显示和键盘,不宜采用大规模可编程逻辑器件,如CPLD、FPGA来实现。因为大规模可编程逻辑器件一般是使用状态机方式来实现的,即所解决的问题都是有规则的有限状态转化问题。本系统状态较多,难度较大。另外系统没有其他高标准的要求,最终选择STC89C52RC单片机来实现系统设计,其内部带有8K的程序存储器,可以满足系统设计需求。

         3.数据采集部分

        (1)传感器。传感器是测量机构最重要的部件,本系统选择的是电阻应变式压力传感器,电阻应变式压力传感器主要有弹性体、电阻应变片电缆线等组成。内部线路采用惠斯通电桥,当弹性体承受载荷产生的变形时,电阻应变片受到拉伸或压缩应变片变形后,它的阻值将会发生变化(增大或减小),从而电桥失去平衡,产生相应的差动信号,供后续电路测量和处理。本系统要求测量范围是0~4.999Kg,考虑到秤台自重、振动和冲击分量,还要避免超重损坏传感器,所以传感器量程必须大于额定称重(4.999Kg),我们选择的称重传感器量程为5Kg,实物如下图所示。

        (2)A/D转换器。所谓A/D转换器,是将输入的模拟信号转换成数字信号的器件,本设计采用的是HX711,HX711是24位高精度的A/D转换芯片,是一款专为高精度电子秤设计的,具有两路模拟通道输入,内部集成128倍增益可编程放大器,是一款理想的高精度、低成本的设计方案。 

        (3)液晶显示部分

由于显示需要,本系统选择1602液晶显示屏。

        (4)键盘输入

        选用带有16个按键的矩阵键盘,其中0~9数字按键、小数点按键用于输入单价;去皮按键用于仅显示物品净重;删除按键用于删除物品单价;校准+/校准-按键用于调节矫正系数,播报按键用于播报物品总价,矩阵键盘布局如图所示。

        

(5)语音模块

        方案一:采用OTP语音芯片(一次性语音芯片)。一次性的语音芯片在厂家完成烧录后,语音内容就无法进行更改,所以需要事先和厂家沟通好,需要播报的语音内容,例如:

 先将自己可能用到的语音,全部写入到语音芯片,然后烧写到语音芯片中。虽然OTP语音芯片不能重复烧写,但低成本的优势也让它占有了一定的市场份额,OTP语音芯片被广泛应用在儿童玩具、汽车电子、医疗器械、安防报警等行业。作者之前用到的一款OTP语音芯片,成本不超过2元,对于固定内容的播报,建议使用该方案,其硬件连接也很简单,比如如下图。

方案二:采用集成的语音模块,最好可以支持支持 FAT 文件系统、操作简单类似U盘,但成本是OTP芯片的几倍。考虑到作者后期作品可能涉及到语音播报,需要为后期作品预留可延续性实验,所以作者选择了该方案,电子秤作品中使用的是JQ8400-FL,只需制作好音频文件,通过类U盘操作拷贝至模块内存,然后“一线串口”发送文件名(数字)即可播报语音内容。

        此芯片最大的优势在于能够灵活的更换 SPI-flash 内的语音内容,省去了传统语音

芯片需要安装上位机更换语音的麻烦,SPI FLASH 直接模拟成 U 盘,跟拷贝 U 盘一样,

非常方便。使得产品研发和生产变得便捷简单。一线串口控制模式、RX232 串口控制

可选,为研发提供更多的选择性

三、软件设计

        (1)主程序

void main()
{
    System_Init();
    while(1)
	{
    	Get_Weight();	
    	keycode = MatrixKey_RanksScan();
    	if(keycode)
        {
            KeyPress(keycode);
        }   
	}
}

        (2)流程图

        <1>主程序流程图

         <2>键盘扫描程序流程图

       

四、图片展示

        (1)PCB-3D视图

        (2)实物演示

五、资料链接

        (1)作品演示视频链接

链接①:哔哩哔哩——–点击播放

链接②:优酷视频——–点击播放

链接③:爱奇艺——–点击播放

链接④:腾讯视频——–点击播放

链接⑤:快手视频——–点击播放

链接⑥:西瓜视频——–点击播放

(2)硬件电路分析视频

链接①:哔哩哔哩——–点击播放

链接②:优酷视频——–点击播放

链接③:爱奇艺——–点击播放

链接④:腾讯视频——–点击播放

链接⑤:快手视频——–点击播放

链接⑥:西瓜视频——–点击播放

(3)软件程序分析视频

链接①:哔哩哔哩——–点击播放

链接②:优酷视频——–点击播放

链接③:爱奇艺——–点击播放

链接④:腾讯视频——–点击播放

链接⑤:快手视频——–点击播放

链接⑥:西瓜视频——–点击播放

(4)原理图下载(PDF版)

链接:百度网盘——–点击下载

(5)源程序下载

链接:百度网盘——–点击下载

六、设计要点

(1)如何实现数据的稳定输出?

        数据的稳定输出主要依靠两个方面:①硬件电路      和       ②软件程序。

①先分析硬件电路,HX711为24位的AD模块,对微量的变动非常敏感,所以硬件电路部分一定要注意:

这是作者在设计第一版的电路板的时候的硬件链接,设计后完成发现数据输出不是很稳定,而在E+和E-之间连接一个电解电容,数据的稳定性会有所改善,具体实验过程如下如下:

①首先,E+和E-之间不连接电解电容,然后放置200g标准砝码,采用串口打印相关信息,采集20000次数据,重量数据作图得到:

可以看到,数据稳定性不好,数据范围在0.199Kg~0.202Kg,上下起伏为0.003Kg,即3g左右误差。具体统计如下:

重量值(Kg) 出现次数 次数占比
0.199 689 3.445%
0.2 15259 76.295%
0.201 4047 20.235%
0.202 5 0.025%

也就是正确数据占比为76.295%。(实际上,经过作者实验,获取337143次数据,得到的正确数据仅占比46.647%)

②在E+和E-之间连接电解电容,再次实验,采集20000次数据,数据稳定性如下所示:

 可以看到,数据稳定性有所好转,具体统计如下:

重量值 出现次数 次数比例
0.2 19998 99.990%
0.201 2 0.010%

也就是正确数据占比为99.990%。在E+和E-之间连接电解电容,20000次数据中只有2次数据出现异常,数据误差只是1g,数据准确性达到99.99%,稳定性较好。

综上所述,建议在E+和E-之间连接电解电容,有利于数据稳定性。

 ②再分析软件程序,对单片机获取到的重量值,可以采用软件滤波的方式,获取到较为稳定的数据,比如多次求值,然后求平均值,当然还有其他很多滤波方式,都可以去实验,本作品中作者未涉及,有兴趣的可以去试着做。

(2)如何保留小数点后两位有效数字?

float  money=0;     //总价,单位为元


money +=0.005;      //用于四舍五入,保留总价有效数值到百分位

//注意这里的技巧:巧妙利用数据类型转换,使得总价数值保留到百分位(一般金额精确到分)
money = ((float)((unsigned long)(money*100)))/100;

该作品程序中,有这样两部分代码,摘抄这两句代码在一起。具体举例分析,假设money最开始等于22.986元,通过

money +=0.005;             //用于四舍五入,保留总价有效数值到百分位

得到money等于22.991元,再通过:

//注意这里的技巧:巧妙利用数据类型转换,使得总价数值保留到百分位(一般金额精确到分)
money = ((float)((unsigned long)(money*100)))/100;

注意这里包含两次数据类型转换,第一次money先乘以100得到2299.1,然后强制转换为unsigned long类型数据,得到的就是2299元,然后再将其类型转换为float,得到2299.0元,然后除以100,得到的就是22.99元,得到的结果就是四舍五入后保留小数点后两位的结果。这里巧妙通过加法、两次数据类型转换就可以达到想要的结果,注意这些操作很有技巧性。(该方法是作者现有知识体系下较好的方法,如果有其他方法,欢迎留言评论分享)

七、关于作者

微创电子工作室,刺客阿瑞原创

八、后记

物联沃分享整理
物联沃-IOTWORD物联网 » 《51单片机电子秤:以语音播报为特色的实训项目》

发表评论