单片机控制的水位与降雨量检测系统.docx
- 文档编号:23557409
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:14
- 大小:551.59KB
单片机控制的水位与降雨量检测系统.docx
《单片机控制的水位与降雨量检测系统.docx》由会员分享,可在线阅读,更多相关《单片机控制的水位与降雨量检测系统.docx(14页珍藏版)》请在冰豆网上搜索。
单片机控制的水位与降雨量检测系统
引言
本实验模拟的是现实生活中的水箱进出水系统。
为了避免水箱的“无水”“满溢”,使得水箱水位控制在一定围,从而保证生活正常供水而进行的模拟设计。
本系统在实现自动管理的同时,还避免了水资源的浪费。
通过检测电压测量水位变化,从而控制电机,保证水位正常。
本实验通过AT89C51芯片,该芯片集成了微型计算机的各个组成部分,联系显示系统和电机相连实现自动进排水管理,并用软件Proteus来进行仿真。
AT89C51的出现使得众多的现代化自动管理可以实现,并且衍生出众多利于社会进步的相关产物。
1.功能要求
该水位控制系统通过AT89C51单片机,红黄绿三个发光二极管各一个,一个电机驱动芯片L297,一个电机,8个按键开关,一个蜂鸣器来实现整个系统的构成。
实验中每个按键代表不同高度的水位,当水位在前两个时,表示水位低于用户设定值,显示为红灯,系统开始报警,并电机开始转动,模拟进水过程。
当水位在第三到底第五个时,报警器不发声,显示为正常水位,绿灯亮。
当水位在底六到第八个时,超过了用户设定值,报警器警报,电机翻转出水。
2.方案论证
在实验之前首先进行了水位系统的方案比较,常见的水位控制系统主要有下面三种。
(1)简单的机械控制
浮标式,电极式是常见的形式,这种控制的优点是结构简单,成本低廉。
但是存在不利条件是测量不精确,不能实现直观的数值显示。
只能实现简单的测量单独控制,并且容易引起误动作,与计算机的交互性较差。
(2)复杂控制器控制方式
这种控制方式是通过在水泵的出口管道上安装压力传感器,把压力变成标准工业电信号的模拟信号,经过前置放大,多路切换,A/D变成数字信号传送到单片机,经过单片机运算和给定量的比较,进行PID运算,得出调节参量;经由D/A变换给调压/变频调速装置输出给定短,来调节电机转速,以达到控制水箱水位的目的。
(3)通过水位变化上下限的控制方式
这种控制通过在水箱不同高度的地方分别设置固定不动的8根金属棒,以感知水位的变化情况。
其中存在下限水位30和上限水位50。
然后通过单片机控制输出显示和电机的运转操作来实现对水箱水位的控制。
通过对以上三种方案的比较,结合实际,为了达到性能要求。
我选择了第三种控制方式。
3.系统硬件电路设计
水箱水位设计系统主要由AT89C51,水位检测接口电路,报警接口电路,复位电路,时钟震荡电路,电机驱动等电路组成。
设计中用的到主要原件有AT89C51,L298,蜂鸣器等。
3.1单片机系统设计及显示电路
(1)AT89C51是一种带4K字节AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压、高性能CMOS 8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
图3.1.1:
AT89c51芯片部引脚图
引脚功能
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
P1口:
P1口是一个部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于部上拉的缘故。
在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:
P2口为一个部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(计时器0外部输入)
P3.5T1(计时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
XTAL1:
反向振荡放大器的输入及部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
3.2水位检测电路
L298N是SGS公司的产品,部包含4通道逻辑驱动电路。
是一种二相和四相电机的专用驱动器,即含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。
1脚和15脚可单独引出连接电流采样电阻器,形成电流传号。
OUTl、OUT2和OUT3、OUT4之间,分别接2个电动机。
5、7、10、12脚接输入控制电平,控制电机的正反转,ENA,ENB接控制使能端,控制电机的停转。
图3.2.1:
L298电机驱动芯片部引脚图
3.3仿真电路图
用软件proteus仿真的基于单片机的水位和降雨量检测系统仿真电路图如下。
图3.3.1:
水位检测系统仿真电路图
4.软件系统设计
4.1主流程图
本实验中使用的是程序编写软件keil,仿真软件Proteus。
图4.1.1:
水位检测系统设计流程图
4.2水位和降雨量检测程序设计
本次实验采用的C语言编写,Keil软件编译。
其中程序主要包括一个蜂鸣器子程序,一个延时子程序。
其中主程序是由9个if语句组成,分别表示按键按下模拟不同的水位。
其中红灯表示水位过低达到下限,黄灯,表示水位达到上限。
源程序见附录。
图4.2.1程序设计流程图
5.调试及性能分析
5.1调试
将程序在keil软件调试编译好之后,加载到Proteus中的原理图芯片之中。
然后开始仿真模拟,在这过程中出现在的是文件不能加载早芯片之中打开。
解决办法是将文件所在的所有路径均改成英文路径就可以顺畅的加载到上面了。
仿真过程中,就在没有显示出现错误了,但是仿真结果并非原本预期的那样。
第一次出现的情况是所有的按键按下,同时可以发现发光二极管在闪烁。
所以推测估计是程序中的延时函数延时时间太短。
所以返回keil软件中修改了延时函数的值,重新编译之后进行仿真。
至此,确定了整个实验的正确性,接下来就是实验原件实物部分了。
5.2性能指标
最终实现了当最后三个按键按下时,电机不转,黄色发光二极管亮,蜂鸣器以另一种频率报警。
图5.2.1模拟溢出水位图
按下前两个按键时电机转动,蜂鸣器警报,红色发光二极管亮;中间三个按键按下时,电机保持不变,绿色发光二极管亮,蜂鸣器不报警。
图5.2.2模拟正常水位图
6.收获与体会体会
此次课程设计是基于单片机嵌入式系统而设计的,充分利用单片机强大功能和方便通信接口,该检测控制系统在实验室某实验水冷却系统得到实践成功,实现水位检测,电机故障检测,处理和警报等功能。
进一步优化系统软硬件设计,可为实时实现远端控制。
因此,此系统在农村水塔,城市水源检测控制等领域有着广阔应用前景。
本次实验中,我首先是在三种备选方案当中,选出第三种方案作为此次课程设计的确定方案。
大概心里有了思路之后开始进行实验思路的构思,以及在网上查阅了相关资料。
可以看出在这方面的研究当中,已经有很多良好的可取之处。
比较前人的相关经验,确定出适合自己而且切实可用的实验方案。
在此次课程设计中因为实验中有需要蜂鸣器,电机,数码管等器具。
所以同我们以前做课程设计所用到的Multisim和AD等比较,最终决定用模拟仿真性能更好而且可以写入程序的Proteus软件来完成这次的电路图设计。
但是因为以前从未接触过次软件,所以说这次的课程设计不仅是一次从零开始,也是一次新的开始。
完成这次原理图的过程中,不仅对整个课程设计有了系统而直观的感受,而且对自己的学习能力也有很大的提高。
就像是老师给我们强调的那样,这次的课程设计不仅仅是一次对我们上学期所学《单片机原理》的总结,实践和应用;也是对我们以后动手能力的一次运用和实践。
在一边学习,一边修改过程中,最终完成了本次课程设计的原理图。
接下来就是在原理图中写入程序,完成模拟仿真。
程序编写运用C语言使用keil软件进行编写,因为之前已经有过对此软件的编写,所以这次运用起来还算熟悉。
首先对试验中用到的各个端口进行赋值和选位,然后编写了备着以后调用的延时子程序,显示子程序等子程序,最后是主程序的编写。
结合实验原理,使用if语句来实现最终的此次课程设计输入端口的设置。
在实验器件准备好之后,焊接开始。
但是焊接实物的时候,发现实物的焊接不像原理图那样清晰,因为芯片的引脚分布并不像图中那样明确。
结合实际引脚的分布和合理的规划之后开始进行焊接。
焊好之后调试实物的时候出现了状况。
发现发光二极管可以在各个按键控制下进行程序设定的闪亮,但是报警系统蜂鸣器是没有任何反应的。
所以通过网上查阅相关资料和向同学请教讨论之后发现了问题的的本源。
因为在仿真过程中我使用的是用扬声器代替了蜂鸣器,虽然在仿真过程中是出现了预期的效果。
但在实际的焊接过程中,蜂鸣器是不能像这样简单被替代的。
而现实当中,我开始使用的是无缘蜂鸣器,因为它本身是没有震荡电路的。
直接在芯片电路上接出来是不能发声的。
所以为了解决这样状况,我在原本电路当中用一个三极管搭建了震荡电路,来放大电流。
仿真成功后,在实物上修改了此电路,最终获得了成功。
在一次次的排查之后,最终完成了此次课程设计的实物。
至此课程设计的设计部分最终完成。
此次课程设计最深切的体会就是,纸上得来终觉浅。
我们只有不断的在实践中进步,在错误中总结,在创新中学习。
才可以不断地书上的有限的知识中不断的得到源源不断的新的知识养分。
将所学知识灵活应用,才算是真的有所学习,学有所得。
而这将是我们每个敢于进取和挑战的大学生所要终身学习的东西。
7.参考文献
[1]广弟.朱月秀.冷祖祁编著单片机基础(第三版)航空航天大学
[2]朝青编著单片机及接口技术(第三版)航空航天大学
[3]萍编著AT89C51单片机原理开发与实践应用中国电力
[4]凯编著单片机的c语言应用程序设计航空航天大学2003马忠梅.
[5]黄智伟.全国大学生电子设计竞赛技能训练[M].:
航空航天大学,2007
8.附录1:
源程序清单
#include
#defineuiunsignedint
#defineucunsignedchar
ucflag;//水位是否到达蜂鸣器报警标志位
ucdang;//水位高度档次
ucshuiwei;
uccodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
sbitred=P2^0;
sbitgreen=P2^1;
sbityellow=P2^2;
sbitmotor1=P2^5;
sbitmotor2=P2^6;
sbitbee=P2^7;
voiddelay(uia)
{uii,j;
for(i=a;i>0;i--)
for(j=110;j>0;j--);
}
voidfengmingqi()//蜂鸣器报警子程序
{
if(flag==1)
{bee=~bee;
delay
(1);
}
if(flag==2)
{bee=~bee;
delay
(2);
}
}
voidmain()//主程序
{while
(1)//0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03;0x01,0x00
{if(P1==0xff)//最低水位
{dang=0;
green=1;yellow=1;red=0;//红灯表示水位过低
motor1=1;motor2=0;//电机正转,进水
flag=1;
while(P1==0xff)fengmingqi();
}
if(P1==0x7f)//1
{dang=1;
green=1;yellow=1;red=0;//红灯亮,水位过低
motor1=1;motor2=0;//电机正转,进水
flag=1;
while(P1==0x7f)fengmingqi();
}
if(P1==0xbf)//2
{dang=2;
green=1;yellow=1;red=0;//红灯亮,水位低
motor1=1;motor2=0;//电机正转,进水
flag=1;
while(P1==0xbf)fengmingqi();
}
if(P1==0xdf)//3
{dang=3;
green=0;yellow=1;red=1;//绿灯表示水位正常
motor1=0;motor2=0;//电机保持,停转
flag=0;
while(P1==0xdf)fengmingqi();
}
if(P1==0xef)//4
{dang=4;
green=0;yellow=1;red=1;//绿灯亮,水位正常
motor1=0;motor2=0;//电机停转
flag=0;
while(P1==0xef)fengmingqi();
}
if(P1==0xf7)//5
{dang=5;
green=0;yellow=1;red=1;//绿灯亮,水位正常
motor1=0;motor2=0;//电机停转
flag=0;
while(P1==0xf7)fengmingqi();
}
if(P1==0xfb)//6
{dang=6;
green=1;yellow=0;red=1;//黄灯表示水位过高
motor1=0;motor2=0;//电机反转,出水
flag=2;
while(P1==0xfb)fengmingqi();
}
if(P1==0xfd)//7
{dang=7;
green=1;yellow=0;red=1;//黄灯亮,水位过高
motor1=0;motor2=0;//电机反转,出水
flag=2;
while(P1==0xfd)fengmingqi();
}
if(P1==0xfe)//8
{dang=8;
green=1;yellow=0;red=1;//黄灯亮,水位过高
motor1=0;motor2=0;//电机反转,出水
flag=2;
while(P1==0xfe)fengmingqi();
}
}
}
附录2:
制作实物照片
附录图2.1水位检测系统水位过低时红灯警报
附录图2。
2水位检测系统水位正常时绿灯闪烁
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 控制 水位 降雨量 检测 系统