基于超声波传感器的测距系统设计毕业设计论文Word文档下载推荐.docx
- 文档编号:20219223
- 上传时间:2023-01-20
- 格式:DOCX
- 页数:32
- 大小:1.43MB
基于超声波传感器的测距系统设计毕业设计论文Word文档下载推荐.docx
《基于超声波传感器的测距系统设计毕业设计论文Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于超声波传感器的测距系统设计毕业设计论文Word文档下载推荐.docx(32页珍藏版)》请在冰豆网上搜索。
由于超声波也是一种声波,其声速c与温度有关,所以温度的影响不能忽略不计,本方案中对声速c还添加了温度补偿。
通过上述两种方案的比较,由于集成超声波测距模块HC-SR04提供2cm至400cm的非接触式距离感测功能,测距精度可达3mm,模块自身包括超声波发射器、接收器与控制电路,且编程和制作相比方案一容易许多。
因此本超声波测距系统的设计采用方案2。
3.2单片机最小系统模块的方案
采用PIC单片机。
PIC单片机的各个型号的兼容性强,功能全,型号多,抗干扰能力强。
缺点:
PIC单片机价格贵,烧写器较贵,烧写程序比较麻烦。
采用MCS-51单片机。
MCS-51系列单片机是8位增强型。
51单片机具有功能强,体积小,可靠性好和价格便宜的优点,并且编程较为容易,程序的烧写也较为简单。
综合上面两个方案以及本人日常学习到的单片机,选择方案二作为本设计的核心处理模块。
3.3温度采集模块的方案
采用温度传感器DS18B20。
DS18B20具有体积小、质量轻、精密度高、全数字化、性能稳定等优点。
它的测量范围在-50℃至+125℃,在-10℃至+85℃范围内精度为±
0.5℃,当电源电压在5-10V之间,稳定度为1﹪时,其各方面特性都满足了本系统的设计要求。
此外DS18B20可直接将温度转化成串行数字信号供处理器处理,可以简化硬件电路和提高可靠性。
3.4超声波测距模块的方案
采用HC-SR04超声波模块。
本模块性能稳定,测度距离精确,模块高精度,盲区小的优点。
本模块使用方法简单,一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,这样就可算出距离。
3.5显示模块的方案
方案一:
选用数码管显示,用普通的数码管显示简单的数字、字母,数码管分时显示距离和温度。
方案二:
选用液晶显示,显示的内容更加的丰富。
根据所学知识与方案显示内容的设定,我选择了方案二。
4工作原理
测距原理如图4-1所示:
s
hd测量目标
图4-1
被测距离
。
式中:
s为超声波传播距离的一半,h为发射探头和接受探头之间的距离。
由于s远大于h,因此可近似认为d=s,则d=s=ct/2,t为发射超声波与接收超声波的时间间隔,c为超声波在空气中的传播速度。
在空气中,常温下超声波的传播速度是334m/s,但其传播速度c易受空气中温度的影响,声速与温度关系如表4-1所示,由此可修正超声波传播速度为
表4-1声速与温度关系表
温度(℃)
-30
-20
-10
0
10
20
30
40
声速(m/s)
313
319
325
332
338
344
350
356
可见,只要测得超声波发射和接收回波的时间差t以及环境温度T,就能得到较为精确的距离。
测温是通过DS18B20来实现,通过程序将温度读出并送到LCD显示,并将此温度作为测距的温度补偿。
5系统设计
本系统选用的模块包括:
单片机最小系统模块、温度采集模块、超声波测距模块、LCD1602显示模块。
5.1单片机最小系统模块的设计
此次的课程设计的核心部分是单片机的控制,本次选用的是ATMEL公司生产的芯片STC89C52,主要是它的价格便宜,而且在学习中接触较多比较熟悉,容易获得。
5.1.1复位电路的设计
复位使单片机处于起始状态,并从该起始状态开始运行。
STC89C52的RST引脚为复位端,该引脚连续保持2个机器周期(24个时钟振动周期)以上高电平,就可以使单片机复位。
单片机的外部复位有上电复位和按键电平复位。
由于单片机运行过程中,其本身的干扰或外界干扰会导致出错,此时我们可按复位键重新开始运行。
考虑到本系统的运行和调试,复位电路采用按键复位方式,如图5-1所示。
图5-1复位电路
5.1.2时钟电路设计
时钟电路是单片机的心脏,它控制着单片机的工作节奏。
STC89C52内部有一个反相振荡放大器,XTAL1和XTAL2分别是该反向振荡放大器的输入端和输出端。
本设计采用的晶振频率为12MHZ。
51系列单片机还可使用外部时钟,在使用外部时钟时,外部时钟必须从XTAL1输入,而XTAL2悬空。
图5-2为晶振电路
图5-2晶振电路
5.1.3单片机的I/O口的分配
首先对LCD和单片机的连接分配I/O口,LCD的E,RW,RS端分别为P0.0-P0.2,
然后再对HC-SR04进行I/O口分配,HC-SR04的触发控制信号输入口Trig为P1.4,回响信号输出口Echo为P3.2;
DS18B20温度传感器是单总线的结构,和单片机的通讯只需要一个I/O口,可以设置P1.3为DS18B20温度传感器的总线和单片机的通讯接口。
5.2LCD1602显示模块的设计
在本设计中采用LCD1602来充当显示的作用,对LCD模块的电路的设计得先了解LCD的各个引脚然后再设置其各个引脚和单片机连接的的I/O口。
LCD1602液晶显示模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。
1602液晶模块内部的控制器共有11条控制指令,如表5-1所示:
表5-1LCD1602液晶模块内部的控制器共有11条控制指令
序号
指令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
1
清显示
2
光标返回
*
3
置输入模式
I/D
S
4
显示开/关控制
D
C
B
5
光标或字符移位
S/C
R/L
6
置功能
DL
N
F
7
置字符发生存贮器地址
字符发生存贮器地址
8
置数据存贮器地址
显示数据存贮器地址
9
读忙标志或地址
BF
计数器地址
10
写数到CGRAM或DDRAM)
要写的数据内容
11
从CGRAM或DDRAM读数
读出的数据内容
根据LCD1602的引脚定义和资料设计了测距系统的显示模块,电路图如下图5-3
图5-3
5.2.11602接口信号说明
1602接口信号说明如表5-2所示
表5-21602接口说明
编号
符号
引脚说明
VSS
电源地
数据口
VDD
电源正极
VO
液晶显示对比度调节端
数据/命令选择端
12
读写选择端
13
E
使能端
14
5.2.21602操作时序
1602的操作时序图(见图5-4)
图5-41602操作时序
分析时序图可知1602液晶的流程如下
(1)通过RS确定是写数据还是写命令。
写命令包括液晶的光标显示/不显示、光标闪烁/不闪烁、需不需要移动屏幕、在液晶什么位置显示等。
写数据是指要显示什么内容。
(2)读/写控制端设置为写模式,即低电平。
(3)将数据或命令送至数据线。
(4)给E一个高脉冲将数据送入液晶控制器,完成写操作。
5.3DS18B20温度采集模块的设计
DS18B20的管脚排列如图5-5所示,DQ为数字信号输入/输出端;
GND为电源地;
VDD为外接供电电源输人端。
本温度控制系统采用外接供电方式,电路图如下图5-6所示
图5-5DS18B20管脚图
图5-6DS18B20电路图
5.3.1DS18B20的分辨率
DS18B20温度传感器可完成对温度的测量,温度分辨率的设定能够影响到温度传感器的转换时间和转换的精确度。
温度的分辨率设置如表5-3所示。
表5-3:
温度分辨率设置表
R1
R0
分辨率
温度最大转换时间
9位
93.75ms
10位
187.5ms
11位
375ms
12位
750ms
由于本系统的主要误差是温度影响声速,故对温度采集的精度要求较高,所以选择DS18B20的分辨率位12位,在12位分辨率的时候的温度采集精度是0.0625度,满足系统精度的要求,所以R1和R0的设置分别为R1=1,R0=1。
5.3.2DS18B20工作时序图
(1)初始化(时序图见5-7)
图5-7初始化时序
(2)写数据(时序图见图5-8)
图5-8写数据时序
(3)读数据(时序图见图5-9)
图5-9读数据时序
5.4超声波测距模块的设计
超声波测距测距模块采用HC-SR04模块,其芯片如图5-10所示:
图5-10
HR-SR04超声波集成模块工作原理采用的是I/O触发测距,给至少10
us的高电平信号。
另外,此模块可以自动发送8个40
kHz的方波脉冲,并能够自动检测是否有信号返回,如果检测到有信号返回则通过I/O口输出低电平,高电平的持续时间就是超声波从发射到返回所用的时间,则所测量的距离=(高电平时间×
声速)/2,时序图如图5-11。
图5-11
此模块不宜带电连接,如果要带电连接,则先让模块的Gnd端先连接。
测距时,被测物体的面积不少于0.5平方米且要尽量平整。
否则会影响测试结果。
6软件设计
6.1程序流程图
6.1.1主程序流程图
否
是
6.1.2外部中断0流程图
6.2子程序设计
子程序包括了LCD显示模块程序,DS18B20温度采集模块程序。
6.2.1温度采集模块子程序
根据DS18B20的相关资料编写了温度采集程序
voiddsreset(void)//DS18B20初始化
{
uinti;
DS=0;
i=103;
while(i>
0)i--;
DS=1;
i=4;
}
bittmpreadbit(void)//读一位
bitdat;
i++;
//小延时一下
i++;
dat=DS;
i=8;
return(dat);
uchartmpread(void)//读一个字节
uchari,j,dat;
dat=0;
for(i=1;
i<
=8;
i++)
{
j=tmpreadbit();
dat=(j<
<
7)|(dat>
>
1);
//读出的数据最低位在最前面,这样刚好一个字节在DAT里
}
return(dat);
//将一个字节数据返回
voidtmpwritebyte(uchardat)//写一个字节
ucharj;
bittestb;
for(j=1;
j<
j++)
testb=dat&
0x01;
dat=dat>
1;
if(testb)//写1部分
else
//写0部分
voidtmpchange(void)//发送温度转换命令
dsreset();
//初始化DS18B20
delayb
(1);
//延时
tmpwritebyte(0xcc);
//跳过序列号命令
tmpwritebyte(0x44);
//发送温度转换命令
inttmp()//获得温度
inttemp;
uchara,b;
tmpwritebyte(0xbe);
//发送读取数据命令
a=tmpread();
//连续读两个字节数据
b=tmpread();
temp=b;
temp<
temp=temp|a;
//两字节合成一个整型变量。
returntemp;
//返回温度值
6.2.2LCD显示子程序
根据1602的资料编写了距离、温度显示模块的程序
voidwrite_com(ucharcommon)//1602写指令函数
RS=0;
P0=common;
delay
(1);
EN=1;
EN=0;
voidwrite_data(ucharData)//1602写数据函数
RS=1;
P0=Data;
voidinit_1602()//初始化1602
RW=0;
//只写不读
write_com(0x38);
//7*52*16;
八位数据接口
write_com(0x0c);
//开显示,无光标
write_com(0x06);
//地址自动加一
write_com
(1);
//清屏
voiddisplay(uinttemp)//显示函数
{
ucharge,shi,bai,qian,i;
//分别为距离的千、百、十、个位
qian=temp/1000;
bai=temp%1000/100;
shi=temp%100/10;
ge=temp%10;
write_com(0x80);
//光标在第一行第一列
for(i=0;
7;
write_data(table1[i]);
//显示“juli:
”字样
write_data(qian+0x30);
//显示距离数值
write_data(bai+0x30);
write_data(shi+0x30);
write_data(ge+0x30);
write_com(0x80+11);
//光标在第一行第12列
2;
write_data(table2[i]);
//显示“MM”字母
write_com(0x80+0x40);
//光标在第二行第一列
8;
write_data(table3[i]);
//显示“wendu:
write_data(ly_dis[0]+0x30);
//显示温度数值
write_data(ly_dis[1]+0x30);
write_com(0x80+0x40+11);
//光标第二行第12列
write_data(table4[i]);
//显示“C”字母
7误差分析
7.1温度
环境温度影响声速是本设计中存在误差最主要的原因。
当温差较大时,前后两次测距的误差肯定前后相差较大,故本设计采用了温度补偿的方法来减少温度的影响。
7.2障碍物表面材料
因为障碍物的发射面比较粗糙会引起发射信号散射开那么回波信号就会减弱,这样就会导致测量结果的误差增大,这是本设计不可避免的误差。
7.3超声波模块探头距离
两个超声波探头即发射探头和接收探头和障碍物之间存在一个几何角度,当两个探头的距离很近并远小于与被测物距离时这个几何角度被忽略不计,这样测得的距离才约等于实际距离,这也是本设计不可避免的误差。
8总结
此测距系统的硬件电路比较简单,都是使用现成模块搭建。
在实际测量中,性能指标也达到了设计要求。
本次设计的步骤如下:
1、根据任务要求选择合理方案
2、元件的选择
3、硬件设计(本设计选用的是51开发板和超声波测距集成模块)
4、软件设计
5、对整个系统进行调试,使其达到要求
参考文献
郭天祥.51单片机C语言教程[M].北京:
电子工业出版社
郁有文.常健.程继红.传感器原理及工程应用(第四版).西安电子科技大学出版社
附录一:
源程序
#include<
reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitDS=P1^3;
//定义DS18B20接口
sbitRS=P2^2;
//1602管脚
sbitRW=P2^1;
sbitEN=P2^0;
sbitTrig=P1^4;
//超声波模块接口
sbitEcho=P3^2;
//回波信号接口在外部中断0
inttime;
intsucceed_flag;
intSpeed;
charltemp;
ucharly_dis[2];
uchartimeL;
uchartimeH;
ucharcodetable1[]="
juli:
"
;
ucharcodetable3[]="
wendu:
ucharcodetable2[]="
MM"
ucharcodetable4[]="
C"
voiddelay(uintz)//毫秒延时
uintx,y;
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
voiddelayb(uintcount)//温度延时
while(count)
i=200;
0)
i--;
count--;
voiddelay_20us()//微秒延时
uchara;
for(a=0;
a<
100;
a++);
voidwrite_com(ucharcommon)//1602写指令函数
voidinit_1602()
//显示数据
voiddisplay(uinttemp)
write_data(table1[i]);
wr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 超声波传感器 测距 系统 设计 毕业设计 论文