单片机超声波测距模块.docx
- 文档编号:30179207
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:17
- 大小:277.97KB
单片机超声波测距模块.docx
《单片机超声波测距模块.docx》由会员分享,可在线阅读,更多相关《单片机超声波测距模块.docx(17页珍藏版)》请在冰豆网上搜索。
单片机超声波测距模块
西安邮电大学
通信与信息工程学院
课程设计实验报告
专业班级:
电科1003班
*******
学号(班内序号):
********(13)
2014年3月25日
成绩鉴定表
学生姓名
易海博
班级/学号
电科1003班/03102085
进行时间
2014年3月1日—2014年3月28日
成绩鉴定
学习内容(20分)
与教学任务计划结合程度(10分)
与专业培养结合程度(6分)
其它(4分)
学习态度评价
(20分)
实践能力(10分)
学习态度(6分)
学习纪律(4分)
报告鉴定
(60分)
报告内容与实践过程紧密结合(15分)
报告内容与教学计划内容紧密结合(15分)
报告质量(主题、结构、观点、逻辑、资料、字数30分)
评阅教师姓名
陈瑞
职称
讲师
成绩
评语
评阅教师签字
年月日
超声波测距模块设计
一.设计目的
本设计利用超声波传输中距离与时间的关系,采用STC51单片机进行控制和数据处理,设计出能够精确测量两点间距离的超声波测距仪。
同时了解单片机各个管脚的功能,工作方式,计数/定时,I/O口相关的原理,并了解学习单片机的相关内容知识。
二.设计要求
设计一个超声波测距仪,能够用1602屏实时显示测量的数据,并要求设定一定距离下提示报警。
三.设计器材
元器件数量
电阻2个
HC-SR04(超声波测距模块)1片
HJ1602A(液晶显示模块)1片
单片机最小系统板1个
四.超声波测距原理
在超声探测电路中,发射端得到输出脉冲为一系列方波,其宽度为发射超声的时间间隔,被测物距离越大,脉冲宽度越大,输出脉冲个数与被测距离成正比。
超声测距有以下方法:
取输出脉冲的平均值电压,该电压(其幅值基本固定)与距离成正比,测量电压即可测得距离;测量输出脉冲的宽度,即发射超声波与接收超声波的时间间隔t,故被测距离为S=1/2vt。
本测量电路采用第二种方案。
由于超声波的声速与温度有关,如果温度变化不大,则可认为声速基本不变。
如果测距精度要求很高,则应通过温度补偿的方法加以校正。
超声波在标准空气中的传播速度为331.45m/s,由单片机负责计时,单片机使用12.0M晶振。
超声波测距的算法设计:
超声波在空气中传播速度为每秒钟340米(15℃时),x1是声波返回的时刻,x2是声波发声的时刻,x2-x1得出的是一个时间差的绝对值,则超声波发出遇到反射物返回的距离如下1
超声波测距器的系统框图如下2
图1
图2系统框图
五、设计方案及分析(包含设计电路图)
硬件电路设计
1.单片机最小系统控制模块设计与比较采用STC51单片机控制。
STC51单片机是一种低功耗、高性能CMOS8位微控制器,具有8KB的系统可编程Flash存储器。
最小系统电路图如图3所示
图3单片机最小系统
2.显示模块设计HJ1602A显示,连接电路简单,显示电路连接图如图4
图4显示屏电路
3.超声波测距模块
图5超声波电路
本系统采用超声波模块URF04进行测距,该模块使用直流5V供电,理想条件下测距可达500cm,广泛应用于超声波测距领域,模块性能稳定,测度距离精确,盲区(2cm)超近。
超声波测距原理:
单片机给超声波传感器模块一个触发电平,超声波传感器的发射管自动发送8个40KHZ的方波,当超声波检测到障碍物时就会信号返回,接收管接收到信号返回之后,单片机处理从单片机发送信号到接收到返回信号这段时间里超声波传感器模块输出高电平。
这段高电平持续时间即为超声波从发射到返回的传播时间。
测量距离=(高电平持续时间*波速)/2。
4.其他电路设计
a.复位电路
单片机在RESET端加一个大于20ms正脉冲即可实现复位,上电复位和按钮组合的复位电路如下:
图6复位电路
在系统上电的瞬间,RST与电源电压同电位,随着电容的电压逐渐上升,RST电位下降,于是在RST形成一个正脉冲。
只要该脉冲足够宽就可以实现复位,即((RC(20ms。
一般取R(1K(,C(22uF。
当人按下按钮S1时,使电容C1通过R1迅速放电,待S1弹起后,C再次充电,手动复位。
R1一般取200(。
b.时钟电路
当使用单片机的内部时钟电路时,单片机的XATL1和XATL2用来接石英晶体和微调电容,如图所示,晶体一般可以选择3M~24M,电容选择
30pF左右。
我们选择晶振为12MHz,电容33pF。
图7时钟电路
图8按键电路
c.按键电路
我们通过P1.0来启动测量,程序中通过查询P1.0的电平来检测是否按键被按下,电路原理如下:
当按下按键时P1.0为低电平,单片机通过查询到低电平
开始测量距离,当松开按键,P1.0即为高电平。
在软件中通过软
件延时来消除按键的机械抖动。
5.软件程序设计
软件分为两部分,主程序和中断服务程序。
主程序完成初始化工作、超声波发射和接收顺序的控制。
外部中断服务子程序主要完成时间值的读取、距离计算、结果的输出、数码管显示等工作。
主程序首先是对超声波模块初始化,通过延时函数产生10us的高电平,再将计数器初始化,判断超声波接收端是否收到回波,进而执行外部中断程序。
中断程序首先关闭外部中断,关闭计数器,然后读出计数值,根据公式计算距离,然后将结果送往数码管显示。
图9主程序流程图
图10外部中断服务子程序
为了避免超声波从发射器直接传送到接收器引起的直射波触发,需要延时约0.1ms(这也就是超声波测距仪会有一个最小可测距离的原因)后,才打开外中断0接收返回的超声波信号。
由于采用的是12MHz的晶振,计数器每计一个数,就是1μs,当主程序检测到接收成功的标志位后,将计数器T0中的数(即超声波来回所用的时间)按公式计算,即可得被测物体与测距仪之间的距离,设计时取30℃时的声速为340m/s则有:
d=(c×t)/2=170T0/10000cm其中,T0为计数器T0的计算值。
六、问题分析与解决方法
1.在拿到设计要求之后,我们根据超声波模块的工作原理:
给超声波传感器模块一个触发电平,超声波传感器的发射管自动发送8个40KHZ的方波,当超声波检测到障碍物时就会信号返回,接收管接收到信号返回之后,单片机处理从单片机发送信号到接收到返回信号这段时间里超声波传感器模块输出高电平。
这段高电平持续时间即为超声波从发射到返回的传播时间。
测量距离=(高电平持续时间*波速)/2。
我们的设计方案是利用计数器0进行计数,通过捕获上升沿和下降沿用计数器来计算高电平的持序时间,实现数据的测量。
而且经讨论学习后知道,高电平持续时间=计数值×单片机的机器周期(1us)。
2.在设计数码管显示电路时,在刚开始连接电路时,发现连好之后,数码管不亮,最后我们分析电路,单片机IO口输出电流太小,不足以驱动数码管,于是我们加了一个与门的驱动器,使之前的3A电流变为5A,由此数码管就足以驱动。
七、设计结果
a.测试环境及工具
测试距离:
在实验室的特定环境中测量了0.03~2.15m。
测试仪器:
数字万用表,直尺。
b.测试方法
超声波测距测距仪的硬件电路制作完成并调试好后,便可将程序编译好下载到单片机试运行。
用直尺确定障碍物的距离,数码管显示测量的距离。
c.测试结果分析
测距仪能测的范围为0.03~2.15m,测距仪最大误差不超过1cm。
系统调试完后应对测量误差和重复一致性进行多次实验分析,不断优化系统使其达到实际使用的测量要求。
由于条件有限,我们忽略温度的影响,不进行温度补偿,声速选取340m/s.
调试测量的部分测距数据如下表所示:
测试序号
显示距离(m)
实际距离(m)
误差(m)
1
0.035
0.034
0.001
2
1.00
1.00
0
3
1.257
1.255
0.002
4
1.364
1.365
0.001
5
2.148
2.147
0.001
调试测量的部分数据
八、设计体会与收获
本次试验目的为设计利用超声波传输中距离与时间的关系,采用STC51单片机进行控制和数据处理,设计出能够精确测量两点间距离的超声波测距仪。
我们这次设计共有三个模块,分别是超声波模块,显示屏模块和报警模块。
一开始搭建完成后,在调试的时候出现了很多问题,后来经过重新检查,最后才完成。
这次课程设计虽然只有短短两周的时间,但却是一次难得的理论与实践相结合的机会,以前只是在书本上学习到单片机可以实现的很多功能,但却没有机会实践,通过本次课程设计我不光复习了模电知识及单片机知识,锻炼了动手能力,同时也熟悉掌握了proteus仿真软件和Protel电路设计软件的使用。
对于我们电科专业的学生来说,Proteus和Protel是必须掌握的电路仿真软件,这次课程设计给我提供了一个很好的机会,让我可以很好地锻炼自己的实践能力。
总的来说,此次实习还是收获颇丰的,很感谢学校可以给我们提供这样的一次机会。
附录Ⅰ:
超声波测距仪系统电路原理图
图11超声波测距仪系统电路原理图
附录Ⅱ:
程序代码
`#include
#include
#defineuintunsignedint
#defineucharunsignedchar
sbittrig=P1^2;
sbitecho=P3^2;
sbittest=P1^3;
sbitdula=P2^6;
sbitwela=P2^7;
sbitBEEP=P2^3;
sbitrs=P1^0;
sbitrw=P1^1;
sbitlcden=P2^5;
sbitk1=P3^4;
uchartable1[]={"DistanceTest:
"};
uchartable2[]={"000.0cm"};
ucharcache[4]={0,0,0,0};
uintdistance,timeh,timel,flag;
voiddelay(uintx)
{uinta,b;
for(a=x;a>0;a--)
for(b=10;b>0;b--);
}
voiddelay1(uintx)
{uinta,b;
for(a=x;a>0;a--)
for(b=100;b>0;b--);
}
voiddelay20us()
{uchara;
for(a=0;a<100;a++);
}
/*voidbeer()
{
BEEP=0;
delay2(10);
}*/
voidinitime0()
{
TMOD=0x01;
TH0=0;
TL0=0;
EA=0;
ET0=0;
EX0=0;
}
voidestern()interrupt0
{timeh=TH0;
timel=TL0;
flag=1;
EX0=0;
TR0=0;
}
voidwrite_com(ucharcom)
{P0=com;
rs=0;
lcden=0;
delay(10);
lcden=1;
delay(10);
lcden=0;
}
voidwrite_date(uchardate)
{
P0=date;
rs=1;
lcden=0;
delay(10);
lcden=1;
delay(10);
lcden=0;
}
voidinit()
{
rw=0;
dula=0;
wela=0;
write_com(0x38);
delay(20);
write_com(0x0f);
delay(20);
write_com(0x06);
delay(20);
write_com(0x01);
delay(20);
}
voiddisplay(distance)
{
uchara;
cache[1]=distance/1000;
cache[2]=distance%1000/100;
cache[3]=distance%100;
cache[4]=distance%10;
table2[0]=cache[1]+'0';
table2[1]=cache[2]+'0';
table2[2]=cache[3]+'0';
table2[4]=cache[4]+'0';
write_com(0x80+2);
delay(20);
for(a=0;a<13;a++)
{
write_date(table1[a]);
delay(20);
}
write_com(0xc0+9);
delay(50);
for(a=0;a<13;a++)
{
write_date(table2[a]);
delay(40);
}
}
voidshixi()
{EA=0;
echo=1;
trig=1;
delay20us();
trig=0;
while(echo==0);
flag=0;
EA=1;
EX0=1;
TR0=1;
TH0=0;
TL0=0;
delay1(50);
TR0=0;
EX0=0;
if(flag==1)
{
uinttime;
time=timeh*256+timel;
distance=time*0.1720;
if(distance<=500)
BEEP=0;
elseBEEP=1;
display(distance);
}
/*if(flag==0)
{
distance=0;
test=!
test;
}*/
}
voidmain()
{initime0();
init();
test=0;
trig=0;
EA=1;
if(k1==0)
{
delay1(10);
if(k1==0)
{
while(!
k1);
while
(1)
{shixi();
display(distance);
}
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 超声波 测距 模块