基于单片机的家用水流量设计_第1页
基于单片机的家用水流量设计_第2页
基于单片机的家用水流量设计_第3页
基于单片机的家用水流量设计_第4页
基于单片机的家用水流量设计_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 基于单片机的家用水流量设计摘要谁是我们每天都要接触的东西,同时水也是非常宝贵的资源,怎么样才能够帮助我们节约、规划我们的用水,在这里我们想到了制作家用水流量仪器,在达到活动大脑的同时也能够为我们的家庭带来切合实际的提高节约意识与用水节约数字化,鉴于当前我国水资源短缺,如何节约环保已经成为各阶层共同应对的问题。本次毕业设计我通过以单片机为主体,出于对多方面的综合考虑,通过对各模块的应用与结合,对水流量的测量进行设计与应用,旨在提高大众节水意识,优化生活质量。 关键词:节约;流量;家用;单片机。目录引言:2方案设计:21、 方案选择2方案一:2方案二:3方案三:52、 方案确定63、 理论分析与

2、方案论证74、总体设计71 温度程序模块72 水流量程序模块83 显示程序模块85、单元电路(或软件模块)设计9(1)时钟电路9(2)复位电路10(3)按键控制电路11(4)水流量测量电路11结束语:12参考文献1312引言:当今社会,经济快速发展,人们生活水平普遍提高,对物质生活的需要和精神领域的追求也日趋提高,同时对家居等的舒适度,个性化,智能化,功能多样化等也提出了更高的要求。鉴于当前我国水资源短缺,如何节约环保已经成为各阶层共同应对的问题。本次毕业设计我通过以单片机为主体,出于对多方面的综合考虑,通过对各模块的应用与结合,对水流量的测量进行设计与应用,旨在提高大众节水意识,优化生活质量

3、。我设计的家用水流量可通过液晶屏对温度的实时显示调节用水温度,测量水的流量并换算为价格用于提示用户用水程度。 早期的水表由英国人发明,随后德国,法国,美国,日本等国依次发明或引进先进水表,具体有往复式单活塞式水表,旋转活塞式水表,圆盘式水表,旋翼式水表等。我国的水表使用和生产较晚,直至1879年,李鸿章创建我国第一家水厂,水表进入我国。之后的一百余年我国水表整体落后于西方发达国家。目前我国家用水表多是机械旋翼式水表。其弊端有:水表始动流量大,不流水水表自走,漏损率高,检查和维修周期短,准确率低等。 方案设计:1、 方案选择方案一:本方案由流量计,单片机,显示器,温度测量计,报警器等主要器件构成

4、,其工作原理大致为:当打开水龙头时,根据单片机STC89C52的指令、水流量计传感器和数字温度传感器 DS18B20 实时采集水流量状态和水温的数据。当单片机 STC89C52 扫描到水流量计传感器的脉冲数,经过单片机STC89C52处理,计算出所采集的水流量后,通过液晶屏LCD1602 能动态显示当前水流量、水费及水温(当温度超出安全范围时,报警器工作。)硬件框图(图1):程序流程图(图2): 该方案特点: (1)液晶显示有水温、水价、水费和当前水流量。水流量的测量由开关控制。 (2)在程序中可以分为 3 个主要模块:水流量模块,温度模块,显示模块。 (3)由于有时自来水水流不够均匀,水流量

5、传感器较小,测量存在局限性。方案二: 将滑动变阻器固定在密度较大的不锈钢网上,垂直于水流方向放置(与管壁无摩擦),将变阻器,恒定电源,安全电阻接入电路,因为不锈钢网的阻碍,水流会对不锈钢网产生力,所以通过水流的速度(因为管道横截面积确定,水流速度反映水的流量)可以转化成对应的电流。将电流转换成相应的信号传入到单片机中,进而将对应的流量和费用传输到液晶显示屏上,将温度计固定在管道,将温度信号转换成电信号输入到单片机,输出对应水的温度。(当水温过高时,温度信号转换成的电信号将进入警戒区域,报警器工作)。硬件框图:软件流程图: 该方案特点:(1)原理较为简单,器件更为耐用。(2)体现了多学科交叉的特

6、点,水流对不锈钢网的冲击与滑动变阻器阻值的对应关系是依据了力学原理,将温度计对水温感应的信号转换为电信号涉及到热学与电学的转换等,本方案将多学科融入工程,通俗易懂。(3)由于不锈钢网安装于管道中,从卫生角度和实用角度来看,并不如第一种方案。譬如,不锈钢具有导热特性,长时间后不锈钢会被腐蚀,影响水质,不易更换维修等。方案三:该流量计工作原理如图所示,当液体流经产品内有涡轮叶片机构,使涡轮旋转,涡轮的转速随流量的变化而变化。由于叶片内置磁体通过下方的一磁线圈回升,叶片周期性地切割电磁铁产生的磁力线,改变线圈的磁通量。根据电磁感应原理在线圈内将感应出脉动的电势信号,此脉动信号的频率与被测流体的流量成

7、正比。该高频脉冲是成正比的转子角速度和流速。脉冲信号随时传送给单片机,再由单片机将信号传给液晶显示器和警报器。 硬件框图(如图6):程序流程图(如图7): 该方案特点:(1)涡轮流量计是理想的低流量液体监测器件。小型涡轮的反应迅速。(2)涡轮技术是不受系统压力变化的影响。流量传感器的标准电源和输出出规格可以很容 易地改进,以适应当前的控制器。2、 方案确定我设计该组件的目标及要求为:可以在一定非适宜环境下工作,操作方便,具有较强的实用性与可行性。尽量要求测量精确,误差较小。该水流测量装置应具有较强的安全性能,不会对人体与环境造成负面影响。本身不会造成大量的资源消耗或浪费。简约美观,符合家居氛围

8、。各方案的特点: 首先,2美观性较差,3中的涡轮可能存在噪音。 其次,水流较小时2,3可能会停止转动,同时3的涡轮存在惯性,会使所测流量偏大,这些都使2,3方案可靠性降低。 再次,从实用角度来看,方案二中滑动变阻器的阻值随着水温的变化而变化,受环境影响大;从卫生性能上考虑,3方案中安装在水中的涡轮会使水质降低。相比较而言我认为方案一更为合理,具体如下:受温度影响较小,可以适应多种工作环境;美观简约,操作方便;耗费资源少,节约环保,不会对环境和人体造成负面影响;采用电子流量计进行水流测量,相对另外两种物理方案误差较小;经济廉价,实用性强。 综合以上分析,我认为方案一更加适合设计要求,故对方案一进

9、行了具体的设计与实施。3、 理论分析与方案论证 工作原理:当打开水龙头时,根据单片机 STC89C52 的指令、水流量计传感器和数字温度传感器 DS18B20 实时采集水流量状态和水温的数据。当单片机 STC89C52 扫描到水流量计传感器的脉冲数,经过单片机 STC89C52 处理,计算出所采集的水流量后,通过液晶屏LCD1602 能动态显示当前水流量、水费及水温。 各项技术保证: 我设计的家用流量设计大致可分为温度程序模块,水流量程序模块,显示程序模块。其中温度程序模块主要是将温度信号转换成电信号和对温度的处理,如调节数值在合理范围内,是否超出安全范围并报警等。水流量程序模块是对水流量进行

10、数值读取并清零,对水流量数据进行处理等。显示程序模块是计算出流量值,温度及资源分配情况等。4、总体设计1 温度程序模块(1) 温度数据转换程序由温度传感器 DS18B20 采集的温度数据读取后温度的低位和高位分别存在主芯片 SCT89C52 存储器中 。其中依定传感器的设计 ,读出的数据最高位为 0 时温度 为正 ,温度为 1 时,温度是负数 。是以对温度数据处理 ,将温度数据高位和低位整 合在一起,在判断温度的正负即可。(2)温度数据显示前处理程序 将已处理好的温度数据的首先判断它的正负,然后再去运行其他的代码。在这里,程序还设定了温度报警。温度报警本来可以在DS18B20 中对芯片进行设置

11、,但考虑到对芯片的熟悉度不够,容易出错,而在程序中设定比较容易理解,写起来也不会太难。还有实际水的温度不可能超过100度,所以测得100度以上的温度值就会显得多余,在程序中只要设定最高 99.9 度即可。再就是美观上的设定,测得的温度在为个位时,十位为0就会看起来不太美观,只要把十位设定看不见即可。如图 9 所示 :2 水流量程序模块水流量的测量主要依靠对得到的频率处理,由流量计在一段时间下产生高电平的个数决定 ,即 Q(流量 ) =F(频率 ) /R(商家设定值 )所以只要在单片机中设定一定的时间 ,并在该时间之下计算出得到的高电平即可。在本程序中 STC89C52 的两个定时器 T0 为计

12、数状态, T1 为计时状态,这样方可测量流量。 (1)水流量的读取程序 中断程序运行的时间到,就可以读取计数器中的数值,将下数值读出后把计数器赋值为 0 , 等待下一次的取出,然后进入对读出数据的处理程序。(2)水流量数据的处理程序在预定时间到,即已经取出了定时器的数值。我们计算的水流量最大是以每吨来计算并显示的,故一个整形或长整型的数不够,故先把它放在了一个int 变量的存储空间内 ,做水流量的前三位 ,在定义一个长整型的数,把它作为水流量的后六位 ,这样计算起来也比较容易 ,数据也不会起冲突,也是为将要计算水价做准备。设定该水流量的最大计数为250 吨,超过了定值,则会从0 开始。如图 1

13、1 所示 : 3 显示程序模块在程序中只是计算出流量值,温度值以及和资源分配的情况,一些字母的显示,都要另加,这样才能尽善尽美的表达出显示出来的意思。在显示程序中加入了温度的测量 ,所以在主程序中不必再测量温度 。在第一页主要显示的是温度 、水费和水 流量的后六位 ,最后以t结尾。第二页主要显示温度、单位水价和水流量的前三位,最后以 kg 结尾。如图 12、图 13 所示: 5、单元电路(或软件模块)设计各单元电路: (1)时钟电路 单片机的最小系统有三部分组成,即电源,时钟电路和复位电路。其中单片机的电源引脚与5V 电源连通即可,而时钟电路和复位电路还需接口扩展,这也是单片机的基本电路操作。

14、时钟电路用于产生单片机工作所需的时钟信号,时序是指令执行中各信号之间的相互关系 。单片机本身就如同一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。在 STC89C52单片机内部带有时钟电路,因此,只需要在片外通过XTAL1 和 XTAL2 引脚接入定时控制元件 (晶体振荡器和电容 ),即可构成一个稳定的自激振荡器。在STC89C5 2芯片内部有一个高增益反相放大器,而在芯片的外部 ,XTAL1 和 XTAL2 之间跨接晶体振荡器和微调电容。在单片机的 XTAL1 脚和 XTAL2 脚之间并接一个晶体振荡器就构成了内部振荡方式。STC89C5

15、2 单片机内部有一个高增益的反相放大器XTAL1为内部反相放大器的输入端,XTAL2 为内部反相放大器的输出端,在其两端接上晶振后,就构成了自激振荡电路,并产生振荡脉冲,振荡电路输出的脉冲信 号的频率就是晶振的固有频率。在实际应用中通常还需要在晶振的两端和地之间各 并上一个小电容。 用晶振和电容构成谐振电路。电容大小与晶振频率和工作电压有关。但电容的大小影响振荡器的稳定性和起振的快速性,为了提高精度,本实验板采用 20pF 的电容作为微调电容 。在设计电路板时,晶振、电容等均应尽可能靠近芯片,减小分布电容,以保证振荡器振荡的稳定性。(2)复位电路复位是单片机的初始化操作,其目的是使CPU 和系

16、统中各部分处于一个确定的状态 ,并从这一状态开始工作 。单片机 的 RST 引脚为复位引脚,振荡电路正常工作后, RST 端加上持续两个机器周期的 高电平后 ,单片机就被复位 。我采用按键开关复位是指通过接通按钮开关,使单片机进入复位状态。本设计中将开关复位与上电复位组合在一起形成组合复位电路,上电复位电路完成上电复位功能,开关复位电路完成人工复位。图 15 中 C7 与 R5 构成了上电复位电路。上电复位后,电源经R5 对 C7 充满电源, C7 等效于开路, RST 端为低电平;单片机正常工作。按开关K 1 后, C7 两端电荷经 R 5 迅速放电, K1 断开后,由 C7、 R5 及电源

17、完成对单片机的复位操作 。 在上述电路中 C7、 R5 按上电复位电路的设计而取值。(3)按键控制电路课题设计之初,要求基本实现的功能有水流量的控制、水价的改变。由于液晶显示屏不能够完全实现其显示,故又增加了换页功能,共三个控制键。 图 16 按键电路(4)水流量测量电路水流量测量电路如图28,图27为模块设计应用的流量计。本次设计中最重要的是水流量的测量,通过水流量传感器的数据采集,根据商家的水流量传感器的参数可以得出单片机在运算时的数据。水流量传感器参数:环境温度:-1055 流量计算在流量为:0.20.4L/Min 时 1L=2100次;0.50.8L/Min时, 1L=228 0次;

18、0.91.2L/Min 时 ,1L=2350 次;1.22.5L/Min 时,1L=2460 次;(脉冲次数在流量变化时有一定程度的变动)接线方法 白线:信号输出;黑线:电源负 测量精度: ± 5%(在流量稳定的系统,精度可达± 2%)工作电压: DC024V工作压力: 100PSI ( 7kg/cm)耐湿性能:在环境湿度为 90% 以下时性能保持稳定寿命测试:本产品用进口干簧管作感应元件,在负荷小于 24V 1mA 前提下 ,开关寿命大于3亿次。 图17 图18结束语: 本文是在老师的精心指导和严格要求下完成的,#老师以其严谨求实的治学态度、高度的敬业精神、兢兢业业、孜孜

19、以求的工作作风和大胆创新的进取精神对我产生重要影响。同时,还特别感谢#各位同学对我的无私帮助,使我得以顺利完成论文。通过这次设计,使我获得了丰富的理论知识,极大地提高了实践能力。单片机领域这对我今后进一步学习计算机方面的知识有极大的帮助。在此,我忠心感谢#老师以及电子工程系各位老师的指导和支持。在未来的工作和学习中,我将以更好的成绩来回报各位领导和老师。参考文献1 张风言. 电子电路基础(第二版). 北京:高等教育出版社, 1995.2 张风言. 电子电路基础(第一版). 北京:高等教育出版社, 1986.3 康华光.电子技术基础模拟部分M.第五版.北京:高等教育出版社.4 王俊峰, 斐炳南,

20、 李传光. 电子产品的设计与制作工艺M. 北京理工大学出版社,1995.5 王丽敏,邓舒勇. 电路仿真与实验M.第一版.哈尔滨:哈尔滨工程大学出版社,2000.6 谭浩强 C语音程序设计(第二版). 清华大学出版社附录:C语言程序清单#include<reg51.h>#define uchar unsigned char #define uint unsigned intsbit DQ=P10; /ds18b20 与单片机连接口sbit RS=P11;sbit RW=P12;sbit EN=P13;sbit p37=P36; /流量正常运行接口sbit p36=P37; /温度报警

21、接口sbit p14=P14; /功能按键接口sbit p15=P15;sbit p16=P16;uchar table=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x20; /0-9数字和显示无unsigned long int a;floatf,zong;uinttvalue;ucharn1,n2,n3,n4,n5,n6,n7,n8,n9;uchartflag,d,g,kai,j,j1,j2,b;/* 延时子程序*/void delay (uint z) int x,y;for(x=z;x>0;x-) for(y=120;y&

22、gt;0;y-) ;/*延时 1us 子程序*/void delay_18B20(unsigned int i)/延时 1 微秒while(i-);/*液晶显示写指令*/void wr_com(unsigned char com) /写指令delay(1);/延时 1msRS=0;/写命令设置RW=0;/并行数据的读写EN=0;/使能为 0P2=com;/输入命令delay(1);/延时 1msEN=1;/使能为 1delay(1);/延时 1msEN=0;/使能为 0/*液晶显示写数据 */void wr_dat(unsigned char dat)/写数据delay(1);/延时 1msR

23、S=1;/写数据设置RW=0;/并行数据的读写EN=0;/使能为 0P2=dat;/输入数据delay(1);/延时 1msEN=1;/使能为 1delay(1);/延时 1msEN=0;/使能为 0/*水流量计算程序与数据转换程序 */void loop ()uintzong1;if(g=0) /判断时间是否到zong=(b/100.0)+zong; /得出总流量的后三位g=1; /将标志为为 1if(zong>=1000) /判断总流量后三位是否大于 1000a+; /总流量前六位加 1 zong=0; /后三位清零if(a>=1000000) /总流量前六位大于 1 百万a=

24、0; /总流量前六位清零zong1=(int)zong ; /总流量后三位转换为整形 n9=a/100000; /总流量 9 位全部分配 n8=a%100000/10000;n7=a%10000/1000;n6=a%1000/100;n5=a%100/10;n4=a%10;n3=zong1%1000/100;n2=zong1%100/10;n1=zong1%10;/* 水费计算与数据转换 */void shuifei()uchar h1,h2,h3,h4; h4=(j*a)/1000000; /水费显示 h3=(j*a)%1000000/100000; h2=(j*a)%100000/1000

25、0; h1=(j*a)%10000/1000; wr_com(0x80+10); /水费显示wr_dat(0x5c); wr_dat(tableh4); wr_dat(tableh3); wr_dat(tableh2);wr_dat(0x2e); /显示小数点 wr_dat(tableh1);/*ds1820 复位子程序*/void ds1820rst()unsigned char x=0;DQ = 1;/DQ 复位delay_18B20(4);/延时DQ = 0;/DQ 拉低delay_18B20(100); /精确延时大于 480usDQ = 1;/拉高delay_18B20(40); /

26、延时/*ds1820 读数据子程序*/uchar ds1820rd() /读数据unsigned char i=0; unsigned char dat=0;for (i=8;i>0;i-) /读温度 2 进制 8 次DQ = 0;/给脉冲信号dat>>=1;/将温度数据转移到 datDQ = 1; /给脉冲信号if(DQ)/数据转换dat|=0x80;delay_18B20(10);return(dat);/*ds1820 写数据子程序*/void ds1820wr(uchar wdata)unsigned char i=0;for (i=8; i>0; i -) /

27、写数据 2 进制 8 次DQ = 0;/给脉冲信号DQ = wdata&0x01; /数据传送delay_18B20(10); /延时DQ = 1;/给脉冲信号wdata>>=1;/数据移位/*ds1820 温度转换程序*/uint read_temp()uchar a,b;ds1820rst(); /ds1820 复位 ds1820wr(0xcc); /跳过读序列号ds1820wr(0x44);/启动温度转换ds1820rst();/ds1820 复位ds1820wr(0xcc);/跳过读序列号ds1820wr(0xbe);/读取温度a=ds1820rd();/将温度数据

28、给 ab=ds1820rd();/将温度数据给 btvalue=b;/将温度数据转移tvalue<<=8;tvalue=tvalue|a;if(tvalue<0x0fff)/是正温度吗tflag=0;/正温度标志elsetvalue=tvalue+1;/负温度,取反加 1tflag=1;/负温度标志tvalue=tvalue*(0.625);/ 温度值扩大 10 倍,精确到 1 位小数(0.0625) return(tvalue);/*ds1820 温度显示子程序 */void ds1820disp( )uchar t1,t2,t3,t4;t3=tvalue/1000; /百

29、位数 (0-9 是 0x30-0x39) 温度值放大了十倍 t2=tvalue%1000/100; /十位数t1=tvalue%100/10; /个位数 t4=tvalue%10; /小数位 if(tflag=1)wr_dat(0x2d);/负温度显示负号: - else p37=1;if(t3!=0)t1=9;t2=9;t3=10;t4=9;p37=0;if(t2>=4)p37=0; else p37=1;if(tflag=1)p37=0;/负温度显示负号 : -if(t3=0)t3=10; /如果百位为 0 ,不显示 if(t2=0)t2=10;/如果百位为 0 ,十位为 0 也不显

30、示wr_dat(tablet3);/显示百位 wr_com(0x80+3); wr_dat(tablet2);/显示十位wr_dat(tablet1);/显示个位 wr_dat(0x2e); /显示小数点 wr_dat(tablet4);/显示小数位/* 流量程序*/void liuliang()while(d>=2)/时间到?d=0;/d 清零b=TH0*256+TL0;/读取频率TH0=0x00;/计数器清零TL0=0x00;g=0;/时间标志位loop();/水流量计算程序与数据转换程序/*第一页显示子程序 */voiddisplay1()wr_com(0x80); /温度显示wr

31、_dat(0x54); /显示 Twr_dat(0x3a); /显示:read_temp(); /读取温度ds1820disp( ); /温度显示wr_dat(0x00); /显示°wr_dat(0x43); /显示 Cshuifei();wr_com(0x80+0x40); /水流量(t)显示 wr_dat(0x46);wr_dat(0x4c); wr_dat(0x4f); wr_dat(0x57); wr_dat(0x3a); wr_dat(0x20); wr_dat(tablen9); wr_dat(tablen8); wr_dat(tablen7);wr_dat(0x2e);

32、 /显示小数点 wr_dat(tablen6); wr_dat(tablen5); wr_dat(tablen4);wr_dat(0x20); /显示小数点 wr_dat(0x74);wr_dat(0x20);/*第二页显示子程序 */void display2()wr_com(0x80); /温度显示wr_dat(0x54); /显示 Twr_dat(0x3a); /显示:read_temp(); /读取温度ds1820disp( ); /温度显示wr_dat(0x00); /显示°wr_dat(0x43); /显示 Cwr_com(0x80+10); /水价显示 wr_dat(t

33、ablej2);wr_dat(0x2e); wr_dat(tablej1);wr_dat(0x5c); wr_dat(0x2f); wr_dat(0x74); wr_dat(0x20);wr_com(0x80+0x40+5);/ 水流量(kg)显示 wr_dat(0x20);wr_dat(0x20); wr_dat(tablen4);wr_dat(0x2e); /显示小数点 wr_dat(tablen3); wr_dat(tablen2); wr_dat(tablen1);wr_dat(0x20); wr_dat(0x6b); wr_dat(0x67);/*控制流量测量的开关程序 */void kaiguan1()if(p14=0)/按键按下?delay(2);if(p14=0) delay(2);p36=p36;/P3.6 取反TR0=TR0;/TR0 取反while(p14=0);/ 按键松开26/*界面切换开关程序 */void ka

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论