摘 要 关键词:STC12C5A60S2单片机,超声波,称重传感器,PH传感器。
一、引言 按照题目的要求,设计出一种简易多功能液体容器装置,能检测容器内液体液位、重量以及种类;且保持液位误差±2mm,重量误差±1g。故在以上的要求下,此装置能区分不同浓度的盐水,并且显示浓盐水和淡盐水以及根据液体PH值的不同分辨纯净水、盐水、牛奶、白醋液体等种类。另外根据电子测量技术使装置能够分辨纯净水和白糖水。
二、系统方案描述
本系统由单片机模块、超声波传感器模块、称重传感器模块等组成。电路结构以STC12C5A60S2芯片为核心,通过I/O口与外部设备进行连接,并用串口接收控制指令,读取传感器采集的数据进行处理,已达到显示。系统总体结构图如图1所示。
三、系统方案设计 3.1模块的方案论证与比较 (1)主控芯片的选择 方案1:采用STC89C51单片机。STC89C51系列单片机具有4KB的程序存储器,12KB的数据存储器,64KB的片外存储器寻址能力,64KB的片外数据存储器寻址能力,1个全双工异步串行口,5个中断源,2个优先级,但没有ISP下载线及SPI接口,运算速度慢,在此实验中,控制过程长,不利于实验的正常开展。
方案2:采用STC12C5A60S2单片机。STC12C5A60S2系列单片机具有高速、低功耗、超强抗干扰的功能,CPU处理速度优于普通的51单片机,内部集成专用复位电路和2路PWM,8路高速10位A/D转换,用于此实验中,运算速度较快,能够很好的掌控实验的运行。 主控芯片选择:通过对以上两方案进行测试,经综合比较,得出方案2更有利于实现系统的设计及制作。因此选择方案2进行设计制作。
(2)显示部分 方案1:普通数码管显示。普通数码管显示较简单,不能同时显示多个数据,而且显示信息量少、难以达到其显示效果。 方案2:1602显示:1602液晶显示虽然能显示字母、数字,一些符号,但是对于汉字的显示处理过程特别复杂,耗时较长,并且不能显示全部的汉字,无法达到显示效果。 方案3:12864显示屏显示。12864显示屏不紧能显示字母、数字、符号,而且能显示全部的汉字。使用12864显示屏显示数据,显示效果更好,更加直观。 显示模块选择:通过对以上三种方案进行测试,12864显示更全面、更符合要求,故选择方案3进行设计及制作本装置。
(3)测距部分 方案1:激光测距。激光测距的优点是精确,但缺点是需要注意人体安全,并且制作的难度较大,成本较高,尤其是光学系统需要干净的环境,否则将影响测量。 方案2:红外测距。红外测距的优点是便宜,易制,安全,缺点是精度低,距离近,方向性差。 方案3:超声波测距。超声波测距受环境影响小,相对较稳定。 测距模块选择:经综合测试及考虑到串口的数据接收,系统的稳定性等。因此选择方案3进行设计及制作本装置。
(4)称重部分 方案1:电阻应变式传感器。电阻应变式传感器利用电阻应变片变形时其电阻也随之改变的原理,主要由弹性元件、电阻应变片、测量电路和传输电缆四部分组成。电阻应变片贴在弹性元件上,弹性元件受力变形时,其上的应变片随之变形,并导致电阻改变。测出应变片电阻的变化并变换为与外力大小成比例的电信号输出。电信号经处理后以数字形式显示出被测物的质量。 方案2:电容式传感器。电容式传感器通过弹性体将物体质量转换成位移,从而引起电容和电感的改变,利用相应的测量仪表检测出变化的电容量再换算成质量。 称重模块选择:经以上2种方案论证,电阻应变式传感器利用方便,测量精度准确,故选择方案1进行设计及制作。
(5)判断液体种类部分 方案1:采取超声波传感器与称重传感器测量的液位与重量,判断出液体密度的不同,从而判断出液体种类。 方案2:采取PH值传感器测量液体的PH值,根据测量结果分辨液体种类。 辨别液体方案选择:经以上2种方案论证,PH传感器利用方便,测量精度准确,故选择方案2进行设计及制作。 经对各模块选择方案的论证,主要模块选择为:主控板为STC12C5A60S2单片机、显示模块为12864显示屏、测距模块为超声波测距、称重模块为电阻应变式传感器、PH传感器。
3.2硬件电路设计 本装置以STC12C5A60S2为核心,装置通过控制超声波传感器与称重传感器来实现实时监测液体的液位与重量等参数。采用芯片的内置AD采集模块来判断液体的种类,并在12864显示屏上显示。系统硬件连接图如图2所示。装置实物图见附录。
3.3软件程序设计 (1)系统程序组成 该装置的整体程序由初始化程序、超声波检测程序、重量检测程序、AD采集程序等部分整合而成。
(2)系统流程
控制系统程序流程图如图3所示,根据测试要求,所有的测试项目均使用统一启动键,并且每次启动只允许启动一次。液位子程序流程图与称重子程序流程图如图4、图5所示。
四、测试 4.1测试模块功能及要求 本装置在进行测试时,需用到超声波传感器、称重传感器、PH传感器,它们对应的功能及要求见测试模块信息表1。
表4 分辨液体测试数据表
4.3 测试总结 由测试结果得知,本装置在测量液体的液位与重量上的效果较好,增加了冒泡算法、滤波后,液体参数水位高低的误差在2mm之内、重量的误差在1g之间。由于盐水与纯净水的PH值几乎相同,PH的测试出的效果有限,因此采取了比例测试的方法,达到了分辨液体的目的,从而达到了设计题目的要求。
五、结论 5.1完成情况 本装置实现了对液位高低的测量和液体重量的测量,液位和重量的误差分别在2mm和1g之间,并在显示屏上实时显示实验参数。由于密度公式ρ=m/V 密度=质量除以体积,根据液位与重量采用模糊算法来算取密度,浓淡盐水的密度不同的原理,完成辨别浓盐水与淡盐水的要求。AD采集PH值结果的不同来分辨液体的种类。达到了设计题目的要求。
5.2心得与体会
通过本次设计,遇到了较多以往没有接触过的算法与思想,深深的感到理论与实践之间的差距,很多知识在理论上完全理解了,但到具体的电路设计与实现中,会出现很多一时无法理解的问题,要通过不断测试,才能用理论来指导实践,进一步深入掌握理论知识。在本次设计及制作过程中,提升了团队合作能力,相互协调能力。在今后的学习与生活中,更加注重创新思维,不断进取,积极向上,开辟出通往成功的道路。
实物图片展示:
部分程序代码:void main()
{
Init_12864();
lcd_pos(1,1);
hzkdis("µç×ÓÉè¼Æ¾ºÈü");
lcd_pos(2,2);
hzkdis("»¶ÓʹÓÃ");
lcd_pos(3,0);
hzkdis("¶à¹¦ÄÜÒºÌåÈÝÆ÷");
delayms(2000);
write_com(0x01);
Init_MCU();
ADC_Init(0|1);
Init();
Get_Maopi();
lcd_pos(0,0);
hzkdis("¶à¹¦ÄÜÒºÌåÈÝÆ÷:");
while(1)
{
ADdisplay2();
keyscan();
//***************³¬Éù²¨È¡Æ½¾ùÖµ******************//
Trig_fasbo(); //´¥·¢³¬Éù²¨·¢Éä
while(Echo == 0); //µÈ´ý»ØÉù
/////////////////////////////////////////////
chaoshengbodisplay1(Measure_Distance()); //ÏÔʾ¾àÀë
chengzhongdisplay3();
Init();
delayms(10);
}
}
报告原文下载:
(K题)简易多功能液体容器20190429.zip
(370.38 KB, 下载次数: 327)
|