基于51单片机的超声波测液位设计报告文档格式.docx
- 文档编号:22192663
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:20
- 大小:403.27KB
基于51单片机的超声波测液位设计报告文档格式.docx
《基于51单片机的超声波测液位设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《基于51单片机的超声波测液位设计报告文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
它有两个压电晶片和一个共振板。
当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,产生超声波。
反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,就成为超声波接收器。
在超声波电路中,发射端输出一系列脉冲方波,脉冲宽度越大,输出的个数越多,能量越大,所能测的距离也越远。
超声波发射换能器与接收换能器其结构上稍有不同,使用时应分清器件上的标志。
超声波测距的方法有多种:
如往返时间检测法、相位检测法、声波幅值检测法。
本设计采用往返时间检测法测距。
其原理是超声波传感器发射一定频率的超声波,借助空气媒质传播,到达测量目标或障碍物后反射回来,经反射后由超声波接收器接收脉冲,其所经历的时间即往返时间,往返时间与超声波传播的路程的远近有关。
测试传输时间可以得出距离。
假定s为被测物体到测距仪之间的距离,测得的时间为t/s,超声波传播速度为v/m·
s-1表示,则有关系式
(1)
s=vt/2……
(1)
在精度要求较高的情况下,需要考虑温度对超声波传播速度的影响,按式
(2)对超声波传播速度加以修正,以减小误差。
v=331.4+0.607T……
(2)
式中,T为实际温度单位为℃,v为超声波在介质中的传播速度单位为m/s。
(本系统以声速为344m/s计算。
)
3.系统设计
本系统由超声波发射、回波信号接收、显示和报警、电源等硬件电路部分以及相应的软件部分构成。
系统原理框图,如图1所示。
图1
整个系统由单片机STC89C52控制,超声波传感器采用收发分体式,分别是一支超声波发射换能器TCT40-16T和一支超声波接收换能器TCT40-16R。
超声波信号通过超声波发射换能器发射至空气中,遇被测物反射后回波被超声波接收换能器接收。
进行相关处理后,输入单片机的INT0脚产生中断,计算中间经历的时间,同时再根据具体的相应的声速,根据就可得出相应的距离用来显示,当然在一些场合也可根据需要,设置距离报警值。
3.1超声波发射部分
超声波发射部分是为了让超声波发射换能器TCT40-16T能向外界发出40kHz左右的方波脉冲信号。
40kHz左右的方波脉冲信号的产生通常有两种方法:
采用硬件如由555振荡产生或软件如单片机软件编程输出,本系统采用后者。
编程由单片机P1.0端口输出40kHz左右的方波脉冲信号,由于单片机端口输出功率不够,40kHz方波脉冲信号分成两路,送给一个由74HC04组成的推挽式电路进行功率放大以便使发射距离足够远,满足测量距离要求,最后送给超声波发射换能器TCT40-16T以声波形式发射到空气中。
发射部分的电路,如图2所示。
图中输出端上拉电阻R31,R32,一方面可以提高反向器74HC04输出高电平的驱动能力,另一方面可以增加超声换能器的阻尼效果,缩短其自由振荡的时间。
发射电路部分,如图2所示:
图2
3.2超声波接收部分
上述TCT40-16T发射的在空气中传播,遇到障碍物就会返回,超声波接收部分是为了将反射波(回波)顺利接收到超声波接收换能器TCT40-16R进行转换变成电信号,并对此电信号进行放大、滤波、整形等处理后,这里用索尼公司生产的集成芯片CX20106,得到一个负脉冲送给单片机的P3.2(INT0)引脚,以产生一个中断。
接收部分电路,如图3所示:
图3
可以看到,集成芯片CX20106在接收部分电路中起了很大的作用。
CX20106是一款应用广泛的红外线检波接收的专用芯片,其具有功能强、性能优越、外围接口简单、成本低等优点,由于红外遥控常用的载波频率38kHz与测距的超声波频率40kHz比较接近,而且CX20106内部设置的滤波器中心频率f0可由其5脚外接电阻调节,阻值越大中心频率越低,范围为30~60kHz。
故本次设计用它来做接收电路。
CX20106内部由前置放大器、限幅放大器、带通滤波器、检波器、积分器及整形电路构成。
工作过程如下:
接收的回波信号先经过前置放大器和限幅放大器,将信号调整到合适幅值的矩形脉冲,由滤波器进行频率选择,滤除干扰信号,再经整形,送给输出端7脚。
当接收到与CX20106滤波器中心频率相符的回波信号时,其输出端7脚就输出低电平,而输出端7脚直接接到STC89C52的INT0引脚上,以触发中断。
若频率有一些误差,可调节芯片引脚5的外接电阻R42,将滤波器的中心频率设置在40kHz,就可达到理想的效果。
CX20106内部框图如图4所示:
图4
其引脚图如图5所示
图5
超声波探头的有关参数如下
型号:
TCT40-16R/T(直径16mm)外观如图6所示
图6
1.标称频率(KHz):
40KHz
2.发射声压at10V(0dB=0.02mPa):
≥117dB
3.接收灵敏度at40KHz(0dB=V/ubar):
≥-65dB
4.静电容量at1KHz,<
1V(PF):
2000±
30%
标有T字样的是发射头,标有R字样的是接收头
以下资料只供参考.
Partnumber
NU25C16T-1
UsingMethod
Transmitter
Construction
Openstructuretype
Centerfrequency
40.0±
1.0KHz
Soundpressurelevel
112dBmin.
Sensitivity
Capacitance
2400Pf±
20%
Maximuminputvoltage
60Vp-p
Directivity
60°
±
15°
(-6dB)
Operatingtemperature
-20°
C~+70°
C
StorageTemperature
-40°
C~+85°
C
Weight
2.2g
3.3数码管显示部分
本实验采用四位的LED数码管显示,由P1.4-P1.7输出位选信号,经过9012PNP三极管反向接数码管公共端。
由P2口输出段选信号,接数码管段选端。
其电路图如图7所示:
图7
3.4报警部分:
采用一个蜂鸣器,由P1.2输出一定频率的信号,在连接到蜂鸣器之前,经过一个三极管9012的放大。
报警部分的连线,如图8所示:
图8
3.5单片机复位电路:
如图9所示:
图9
3.6单片机晶振电路:
采用12MHz的晶振。
如图10所示:
图10
3.7系统软件设计:
1)软件设计分析
超声波测距的软件设计主要是由主程序,超声波发射子程序,超声波接受中断程序及显示子程序组成。
主程序首先对系统环境进行初始化,设置定时器T0工作模式为16位的定时计数器模式,把总中断允许位EA置位,并给显示端口P0和P2清0。
然后调用超声波发生子程序送出一个超声波脉冲,为了避免超声波从发射器直接传送到接收器引起的直接波触发,必需延迟0.1ms(这就是测距器会有一个最小可测距离的原因)后,才打开外中断0接收返回的超声波信号。
由于采用频率为12MHz的晶振,机器周期为1us,当主程序检测到接收成功的标志位后,将计数器T0中的数(即超声波来回所用的时间)按下式计算就可测得被测物体与测距仪之间的距离:
(3)
(4)
这样就可以计算出测距仪与障碍物之间的距离。
测出距离后得结果将以十进制BCD码方式显示LED,然后再发超声波脉冲重复测量过程,求多次测量的平均值(误差最小化)。
2)主程序框图
超声波测距系统程序设计思路如图11所示:
图11超声波测距主程序框图
3)超声波系统子程序设计
超声波发生子程序的作用是通过P1.0端口发送2个左右的超声波信号频率约为40KHz的方波,脉冲宽度为12us左右,同时把计数器T0打开进行计时。
超声波测距器主程序利用外中断0检测返回超声波信号,一旦接收到返回超声波信号(INT0引脚出现低电平),立即进入中断服务程序。
进入该中断后就立即关闭计时器T0停止计时,并将测距成功标志字赋值为1。
如果当计时器溢出时还未检测到超声波返回信号,则定时器T0溢出中断将外中断0关闭,并将测距成功标志字赋值为2以表示此次测距不成功。
整个软件系统如图12,图13,图14所示:
图12主程序流程图图13定时中断服务子程序图14外部中断服务子程序
4.实验、调试及测试结果分析
本实验由单片机的P1.0端口输出方波信号,经过推挽式功率放大器进行功率放大,使TCT40-16T发出超声波,遇到障碍物时由TCT40-16R接收,经过CX20106放大滤波整形为一个脉冲,触发单片机的外部中断,经过单片机的处理显示,数码管显示的数值就是所测到的发送探头到障碍物的距离(显示3位数距离以及1位单位c),当距离超过所设定的范围时,蜂鸣器鸣叫同时数码管显示中间的四横即数码管的G段选。
当定时器溢出(65536us)时,蜂鸣器响,并且数码管显示上面的四横即数码管的A段选。
本系统经过反复调试,多次测量均能正确显示测量距离。
优点:
测量范围广。
本系统最小能测量2cm距离,理论上最大能测量999cm。
足够满足大多数测量液位需要。
测量精度大。
本系统经过多次测量对比,误差仅为1cm。
反应时间快。
本系统0.5秒重新测量一次距离,经过多次试验均能迅速显示即时距离。
缺点:
从上电到稳定的时间较长。
本系统上电大约需要15s的时间等待系统稳定才能正确显示测量距离。
改进:
如本系统采用电池芯片供电,对整个系统进行外壳包装以及机械安装装置,即可成为便携式超声波测距仪。
5.实验结论
通过本实验可以看出,用超声波可以较为精确的对距离进行测量,这样可以很好的用来进行液位的测量,结合了单片机可以实现较为智能的功能,不但可以实现显示,还可以进行液位的监测,这样在液位进入警戒状态时,不但可以进行报警,还可以进行相应的处理,实现智能监控。
总结
通过本次设计,我们受益良多。
本实验不但让我们更好的了解了超声波探头的使用,还让我们更好的熟悉单片机的编程以及外围电路连接,对单片机更加了解。
另外,我们还学会了推挽式功率放大器的应用,以及CX20106的用法,CX20106的用法还很多。
总之,本实验不仅增加了我们对传感器的认知,更激发了我们进一步了解其他传感器的热情。
参考文献
1)《传感器与检测技术》周杏鹏主编孙永荣仇国富副主编韩九强主审清华大学出版社
2)《单片机原理及接口技术》李朝青编著北京航空航天大学出版社
3)《数字逻辑电路与系统设计》蒋立平主编姜萍谭雪琴花汉兵编电子工业出版社
4)XX搜索引擎
附原理图:
附程序:
//超声波模块显示程序
#include<
reg52.h>
//包括一个52标准内核的头文件
#defineucharunsignedchar//定义一下方便使用
#defineuintunsignedint
#defineulongunsignedlong
sbitTx=P1^0;
//产生脉冲引脚
sbitRx=P3^2;
//回波引脚
sbitbeep=P1^1;
ucharcodeSEG7[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
//数码管0-9
uintdistance[4];
//测距接收缓冲区
ucharge,shi,bai,temp,flag,outcomeH,outcomeL,i;
//自定义寄存器
bitsucceed_flag;
//测量成功标志
//********函数声明
voidconversion(uinttemp_data);
voiddelay_20us();
voidpai_xu();
voiddelay(uintms)
{
uchart;
while(ms--)
{
for(t=0;
t<
120;
t++);
}
}
voidmain(void)//主程序
{uintdistance_data,a,b;
ucharCONT_1;
i=0;
flag=0;
Tx=0;
//首先拉低脉冲输入引脚
TMOD=0x11;
//定时器0,定时器1,16位工作方式
TR0=1;
//启动定时器0
IT0=0;
//由高电平变低电平,触发外部中断
ET0=1;
//打开定时器0中断
EX0=0;
//关闭外部中断
EA=1;
//打开总中断0
while
(1)//程序循环
{
EA=0;
Tx=1;
delay_20us();
//产生一个20us的脉冲,在Tx引脚
while(Rx==0);
//等待Rx回波引脚变高电平
succeed_flag=0;
//清测量成功标志
EX0=1;
//打开外部中断
TH1=0;
//定时器1清零
TL1=0;
TF1=0;
//
TR1=1;
//启动定时器1
while(TH1<
30);
//等待测量的结果,周期65.535毫秒(可用中断实现)
TR1=0;
//关闭定时器1
if(succeed_flag==1)
{
distance_data=outcomeH;
//测量结果的高8位
distance_data<
<
=8;
//放入16位的高8位
distance_data=distance_data|outcomeL;
//与低8位合并成为16位结果数据
distance_data*=12;
//因为定时器默认为12分频
distance_data/=58;
//微秒的单位除以58等于厘米
}//为什么除以58等于厘米,Y米=(X秒*344)/2
//X秒=(2*Y米)/344==》X秒=0.0058*Y米==》厘米=微秒/58
if(succeed_flag==0)
{
distance_data=0;
//没有回波则清零
distance[i]=distance_data;
//将测量结果的数据放入缓冲区
i++;
if(i==3)
distance_data=(distance[0]+distance[1]+distance[2]+distance[3])/4;
pai_xu();
distance_data=distance[1];
a=distance_data;
if(a>
800)
beep=0;
else
beep=1;
if(b==a)CONT_1=0;
if(b!
=a)CONT_1++;
if(CONT_1>
=3)
{CONT_1=0;
b=a;
conversion(b);
}
i=0;
}
//***************************************************************
//外部中断0,用做判断回波电平
INTO_()interrupt0//外部中断是0号
outcomeH=TH1;
//取出定时器的值
outcomeL=TL1;
succeed_flag=1;
//至成功测量的标志
//****************************************************************
//定时器0中断,用做显示
timer0()interrupt1//定时器0中断是1号
TH0=0xfd;
//写入定时器0初始值
TL0=0x77;
switch(flag)
{case0x00:
P2=ge;
P1=0x7f;
flag++;
break;
case0x01:
P2=shi;
P1=0xbf;
case0x02:
P2=bai;
P1=0xdf;
flag=0;
//显示数据转换程序
voidconversion(uinttemp_data)
ucharge_data,shi_data,bai_data;
bai_data=temp_data/100;
temp_data=temp_data%100;
//取余运算
shi_data=temp_data/10;
temp_data=temp_data%10;
ge_data=temp_data;
bai_data=SEG7[bai_data];
shi_data=SEG7[shi_data]&
0x7f;
ge_data=SEG7[ge_data];
bai=bai_data;
shi=shi_data;
ge=ge_data;
//******************************************************************
voiddelay_20us()
{ucharbt;
for(bt=0;
bt<
60;
bt++);
voidpai_xu()
{uintt;
if(distance[0]>
distance[1])
{t=distance[0];
distance[0]=distance[1];
distance[1]=t;
}
if(distance[0]>
distance[2])
{t=distance[2];
distance[2]=distance[0];
distance[0]=t;
if(distance[1]>
{t=distance[1];
distance[1]=distance[2];
distance[2]=t;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 超声波 测液位 设计 报告