红外液位检测电路设计要点Word文档格式.docx
《红外液位检测电路设计要点Word文档格式.docx》由会员分享,可在线阅读,更多相关《红外液位检测电路设计要点Word文档格式.docx(15页珍藏版)》请在冰点文库上搜索。
熊新民
专业
自动化
专业技术职务
副教授
实训题目
红外液位检测电路设计
课题简介
本课题要求基于单片机的定时功能,,采用红外脉冲发射-反射方式。
求取液面高度,再辅之以数码显示电路,并编制相关程序,设计一个具有红外液位检测功能的使用电路。
主要设计内容如下:
1红外发射电路;
2.红外检测电路;
3.控制定时电路;
4.LED显示电路;
5.相关程序
通过本次创新设计使得学生巩固所学的理论与技能,提高学生的实践能力和应用能力,初步掌握实际的工程设计方法,设计步骤,为将来的学习与毕业设计打下坚实的基础。
报告要求
包括应具备的条件。
图表等
1.完整的系统原理图1张;
2.程序清单1分;
3.符合格式要求的创新设计与实践报告书1份;
4.可能时完成系统调试。
课题预计
工作量大小
大
适中
小
难易程度
难
一般
易
√
参考资料
[1]夏路易,石宗义.电路原理图与电路板设计教程Protel99SE[M].北京:
北京希望电子出版社.2002
[2]蒋晓玲,孟志强,陈艳东,许亮汽车追尾防撞红外测距系统[J]《光电子技》Vol.31No.1Mar.2011p.68-72
[3]杨殿成,邱朝阳红外检测技术原理及应用[J]《新疆电力》2004年03期P28—P31
注:
本课题由李浩强同学选定,学号:
200848280212
1引言
1.1系统背景
随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高,在工业控制系统以及湖泊等测绘工程中,准确及时地检测出液面的深度(即水位高度)就是前提;
而目前担负着对液位测量、液面高度等任务的完成有诸多不尽人意的地方,需要更加完善、合理的液滴、液位检测跟踪控制系统。
从液位测量的方法看,按检测器与液体接触与否分为两大类:
一是接触式测量,二是非接触式测量。
在前一种测量方式中,因为被测液体可能具有的腐蚀性等原因并不是最理想的方法。
后一种方法引起经济、安全、方便等因素应用很广。
1.2系统功能
根据系统的功能要求,控制系统采用AT89C52单片机,红外脉冲发射装置以及红外脉冲接收装置,LED显示装置。
启动开关后,发出红外脉冲,反射回来后被接收。
通过内部计算换算成液位高度并显示出来。
2总体方案设计
2.1方案论证
按照系统功能要求,控制系统采用AT89S52单片机,红外光电传感器。
系统除能确保实现要求的功能外,还可以方便地进行其它功能的扩展。
红外液位检测系统设计方案框图如图2.1所示。
图2-1红外液位检测系统设计方案框图
2.2系统的工作原理
系统工作主要有定时器和中断来处理,当按下测量按钮时,也就是启动按钮,相当于给了系统一个外部中断。
利用这个外部中断启动单片机内部定时器,与此同时将控制红外脉冲发射端的引脚置为低电平,这样发射端就发出红外脉冲。
红外脉冲遇到液面就会反射回来,这样反射回来的脉冲信号就会被接收装置接收,接收装置受到脉冲后,输出低电位,这个负脉冲就会启动另外一个外部中断,内部定时器就会停止计时。
根据定时器的计时长短来换算成距离,再经过进一步的计算就可以运算出液位的高低(已知测量系统和液体底部的距离是一定的)。
通过将运算出的结果转化成8位LED显示数码管需要的二进制数码,进而显示出来。
【1】
3硬件电路设计
3.1单片机选择
单片机采用MCS-51系列单片机。
由ATMEL公司生产的AT89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得AT89C52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。
AT89C52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
而且,它还具有一个看门狗(WDT)定时/计数器,如果程序没有正常工作,就会强制整个系统复位,还可以在程序陷入死循环的时候,让单片机复位而不用整个系统断电,从而保护你的硬件电路。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
【3】
AT89C52芯片及外部电路如下3.11图
图3.11AT89C52单片机最小系统
3.2红外光电传感器
外光电传感器是由红外发射二极管和敏感三极管组成,红外发射二极管发出的红外光的波长和敏感三极管的受光波长相同或相近。
当发射管和接受管之间没有障碍物时,敏感三极管由于收到红外光信号而导通,电路输出电平为低电平;
当发射管和接受管之间有障碍物挡住时,敏感三极管由于收不到红外光信号而截止,电路输出电平为高电平。
【2】
红外脉冲发射电路见图3-2,接收电路见图3-3。
【6】
图3-2红外发射电路
图3-3红外接收电路
3.3显示电路
显示用数码管采用4位8段的LED数码管显示,从右向左以此表示是个位、十位、百位、显示通道位。
LED的段码端口A~G分别接至AT89C51的P0.0~P0.7口,位选端1~4分别接至P2.0、P2.1、P2.2、P2.3,如图3-3所示。
【4】
图3-3LED显示及其外部电路
4系统软件设计
4.1主程序
主程序即为接收数据并转换成需要的LED八段数码。
LED数码管采用软件译码扫描方式。
在显示子程序中包含多路循环显示和单路显示程序,多路循环显示程序把8个存储单元的数值依次取出送到4个数码管上显示,每一路显示1秒,单路显示程序只对当前选中的一路数据进行显示。
每路数据显示时需经过转换变成十进制BCD码,放于4个数码管的显示缓冲区中。
单路或多路显示通过标志位00H控制。
在显示控制程序中加入了对单路或多路循环按键和通道选择按键的判断。
4.2中断子程序
本系统采用中断1开始定时,中断2开始停止定时方式。
原理为,当中断1启动时,开始计时,同时脉冲发射出去。
中断2启动时,也就是发射出去的红外脉冲反射回来时停止计时,定时时间送到单片机内部处理,换算成相应距离,也就是液位,继而通过LED显示出来。
流程图见下图:
主程序流程图见图4-1。
图4-1主程序流程图
定时中断子程序流程图见图4-2,外部中断子程序流程图见图4-3。
图4-2定时中断子程序流程图图4-3外部中断流程图
5总结
四周的创新设计结束了,这几周过的很充实,虽然没了平时课堂上的喧嚣,但带给我们的却是真真正正感受。
当一开始选课题的时候就有点紧张,因为当时并不知道自己能不能把它做出来,毕竟自己以前也没做过红外方面的作业。
但有了课题唯有勇敢面对。
红外液位检测是通过单片机、LED显示电路等做出来的,这就要求有一定的绘图功底,幸好以前学了protel,这次绘图还用了HS0038元器件,这个元器件以前没用过,但还是通过自己的努力对这个新元器件有了基本的了解,红外接收管以后还会用到很到方面,这次的学习对我的帮助很大。
由于整个设计检测要涉及到一些列的硬件,而这些条件不太具备。
因此只能用仿真软件进行仿真。
这就用到proteus和另外一个软件keilc51的运用,但是对这款软件不太了解,因此仿真不太好,这以后需要更加努力。
同时也希望这次创新设计能给自己带来更大的收获
参考文献
[1]蒋晓玲,孟志强,陈艳东,许亮汽车追尾防撞红外测距系统[J]《光电子技》Vol.31No.1Mar.2011p.68-72
[2]杨殿成,邱朝阳红外检测技术原理及应用[J]《新疆电力》2004年03期P28—P31
[3]聂诗良,李磊民采用单片机发送并接收红外遥控信号的方法[J]《信息技术》Vol.28No.2Feb.2004p.21-23,p.96
[4]夏路易,石宗义.电路原理图与电路板设计教程Protel99SE[M].北京:
北京希望电子出版社,2002.p.72-94
[5]
[6](工程师之家)
附录1系统总原理图
附录2程序源代码
//Trig
=P1^0//红外控制输出端
//Echo
=P3^2//红外接收输入端
#include<
reg52.h>
#defineucharunsignedchar
#defineuint
unsignedint
//
voiddelay(uintz)
{
uintx,y;
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
}
voiddelay_20us()
{
uchara;
for(a=0;
a<
100;
a++);
//***************************************************************
//红外检测子程序
voidmain()
uintdistance;
test=0;
Trig=0;
//首先拉低脉冲输入引脚
EA=1;
//打开总中断0
TMOD=0x10;
//定时器1,16位工作方式
while
(1)
{
EA=0;
//关总中断
Trig=1;
//超声波输入端
delay_20us();
//延时20us
//产生一个20us的脉冲
while(Echo==0);
//等待Echo引脚变高电平
succeed_flag=0;
//清测量成功标志
EX0=1;
//打开外部中断0
TH1=0;
//定时器1清零
TL1=0;
TF1=0;
//计数溢出标志
TR1=1;
//启动定时器1
delay(20);
//等待测量的结果
TR1=0;
//关闭定时器1
EX0=0;
//关闭外部中断0
if(succeed_flag==1)
time=timeH*256+timeL;
distance=H-time*c/2;
//厘米
display(distance);
}
if(succeed_flag==0)
distance=0;
//没有返回脉冲则清零
test=!
test;
//测试灯变化
}
//外部中断0,用做判断回光电平
voidexter()
interrupt0
//外部中断0是0号
timeH=TH1;
//取出定时器的值
timeL=TL1;
succeed_flag=1;
//至成功测量的标志
//关闭外部中断
//****************************************************************
//定时器1中断,用做红外测距计时
voidtimer1()interrupt3
//
}
//显示数据转换程序
voiddisplay(uinttemp)
ucharge,shi,bai;
bai=temp/100;
shi=(temp%100)/10;
ge=temp%10;
wela=1;
P0=0xf7;
wela=0;
dula=1;
P0=table[bai];
dula=0;
delay
(1);
dula=1;
P0=0x00;
//关位码
dula=0;
P0=0xef;
P0=table[shi];
P0=0x00;
P0=table[ge];
P0=0xdf;
wela=0;
}【5】