红外测距课程设计.docx
- 文档编号:3869684
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:16
- 大小:422.08KB
红外测距课程设计.docx
《红外测距课程设计.docx》由会员分享,可在线阅读,更多相关《红外测距课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
红外测距课程设计
课程设计
题目红外测距
二级学院
专业
班级
学生姓名
学号
指导教师
考核项目
设计50分
平时成绩20分
答辩30分
得分
总分
考核等级
教师签名
摘要
现代科学技术的发展,进入了许多新领域,而在测距方面先后出现了激光测距、微波雷达测距、超声波测距及红外线测距。
为了实现物体近距离、高精度的无线测量而采用了红外发射接收模块作为距离传感器,单片机作为处理器,编写A/D转换和显示程序,完成了一套便推式的红外距离测量系统,系统可以高精度的实时显示所测的距离,本系统结构简单可靠、体积小、测量精度高、方便使用。
关键词:
红外测距;A/D转换;实时显示;
一、概述
1.意义:
距离,是个很微妙的东西,因此人们就会用具体的数值来表示。
于是就有了人工测量,而在现今社会,人们已经与高科技接轨,便有了激光测距、微波雷达测距、超声波测距及红外线测距。
我们所做的课题便是红外线测距,而做此课题不为其他,只为自己动手,做一个简易的,精确的,近距离的距离检测仪,这也是对我们所学知识的一种考验方法,更多的是更系统的认识单片机,了解AD转换和红外收发模块。
2.小组的工作分配:
3.系统主要功能
实时测量红外发收管与障碍之间的距离。
二、硬件电路设计及描述
1.方案及设计思想:
设计要求:
红外测距
A、利用红外发射管发送信号,信号经过障碍物反射,红外接收管接收反射的信号。
B、用单片机将红外收发管与障碍物之间的距离实时显示出来
方案一、时间差测距法:
此方案是将红外发射管发送的信号与接收管接收信号的时间差写入单片机中,在单片机中用算法将距离计算出来。
原理图如图X-1所示。
方案二、反射能量法:
此方案是用红外发射管发射信号,然后用红外接收管接收信号,将接收的信号强度经过AD转换,录入单片机中显示出来,并将对应的距离记录下来。
完成一段范围内的测量,将所记录下的数据写入单片机中,然后便可进行测量距离了。
原理图如图X-2所示。
图X-1时间差测距法
图X-2反射能量法
方案比较:
通过以上两种方案分析,我们可以看到方案一的误差很大,由于红外装置测的距离比较近,而光速很快,因此反馈到单片机中的时间很短,单片机很难准确处理,而在一般情况下的光速不太准确,因此误差较大。
方案二是先将实验数据录入单片机中,因此在测量时存在的误差就会相对较小,综合考虑,选择方案二可行。
2.电路原理图
仿真电路图
结构图
AD转换模块
由于单片机不能直接处理红外接收管接收的电压信号,所以先通过AD转换,将信号转换为单片机能够处理的数字信号,以完成所需实验内容。
红外收发模块
红外发送管是用于发送信号,经过障碍物将信号反射,红外接收管接收到反射回来的信号,然后根据信号强弱将对应的电压值显示在显示模块上,并将此时的距离记录。
然后整改程序,用红外收发模块进行测距,就可在显示模块上显示出红外接收管接收的信号强度对应的距离值。
3.芯片资料:
TLC2543管脚图
TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。
由于是串行输入结构,能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。
2TLC2543的特点:
(1)12位分辩率A/D转换器;
(2)在工作温度范围内10μs转换时间;
(3)11个模拟输入通道;
(4)3路内置自测试方式;
(5)采样率为66kbps;
(6)线性误差±1LSBmax;
(7)有转换结束输出EOC;
(8)具有单、双极性输出;
(9)可编程的MSB或LSB前导;
(10)可编程输出数据长度。
TLC2543引脚说明:
AT89S52管脚图
4.元件清单:
序号
品名
数量(个)
参考价(元)
1
AT89S52单片机
1
3.75
2
tlc2543
1
6
3
40P座子
1
1
4
20P座子
1
0.55
5
TCRT5000
1
1
6
1602显示器
1
8
7
12m晶振
1
0.35
8
6脚自锁按钮
1
0.5
9
按钮
1
0.1
10
发光二极管
1
0.1
11
1k排阻
1
0.2
12
104滑阻
1
0.4
13
10k电阻
1
0.1
14
1k电阻
4
0.4
15
200欧电阻
1
0.1
16
150欧电阻
1
0.1
17
104pf电容
2
0.1
18
22uf电容
1
0.1
19
30pf电容
2
0.1
20
排针
若干
1
21
单排座
1
0.1
22
导线
若干
1
23
单面板
1
4
合计
29
三、软件设计流程及描述
1.模块层次结构图
简述:
先将AD采集程序写入单片机中,进行实验,将固定距离所采集到的信号强度记录下来,然后将对应的数据加入程序中,最后通过红外模块进行测量,便可显示出对应的距离值,主程序是整个程序的基础,也是核心。
2.程序流程图
3.源程序代码
1602显示模块程序:
#include
#include
sbitlcdrs=P2^5;
sbitlcdrw=P2^6;
sbitlcden=P2^7;
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidwrite_com(ucharcom)
{
lcdrs=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
voidwrite_data(uchardate)
{
lcdrs=1;
lcden=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
voidinit()
{
lcdrw=0;
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
}
红外测距模块程序:
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitclk=P1^4;
sbitcs=P1^5;
sbitdin=P1^6;
sbitdout=P1^7;
sbitbit7=B^7;//数据的最高位
ucharcount,conword;//控制字的高四位决定通道口
bitcy;
voidwrite_sfm(ucharadd,uintdate)
{
uintbai,shi,ge;
ge=date%10;
shi=date%100/10;
bai=date%1000/100;
write_com(0x80+add);
write_data(0x30+bai);
write_data(0x30+shi);
write_data(0x30+ge);
write_data('m');
write_data('m');
}
voidwrite_sfm1(ucharadd,uintdate)
{
uintqian,bai,shi,ge;
ge=date%10;
shi=date%100/10;
bai=date%1000/100;
qian=date/1000;
write_com(0x80+0x40+add);
write_data(0x30+qian);
write_com(0x80+0x40+0x08);
write_data(0x2e);
write_data(0x30+bai);
write_data(0x30+shi);
write_data(0x30+ge);
}
uintreadad(ucharconword)
{
chari;
uintadvalue=0;
ucharvalue=0;
conword=conword<<4;//控制字高四位与低四位互换变成了高四位就是选择的通道口
clk=0;
cs=1;//cs为高,clkdin被禁止dout成高阻态
cs=0;//cs为低clkdin使能dout脱离高阻状态
B=conword;//控制字
for(i=8;i>0;i--)
{
cy=dout;//dout的高位传给cy
din=bit7;//控制字高位先送入
clk=1;//控制字在时钟信号的上升沿送入
B=B<<1;//控制字的次高位移入高位
clk=0;
value=value<<1;
if(cy==1)value++;//value是dout的高八位
}
advalue=value;
advalue=advalue<<4;//高四位与低四位互换得出输出值
value=0x00;
for(i=4;i>0;i--)//dout高四位的值赋给value
{
cy=dout;
value=value<<1;
if(cy==1)
{
value++;
}
clk=1;
clk=0;
}
advalue=advalue+value;
cs=1;
returnadvalue;//TLC转换出的advalue=U(显示的电压值)*4096/5;
}
main()
{
uintad,l;
init();
while
(1)
{
delay(100);
ad=readad(0x00);
ad=ad*0.00122*1000;//将ad转换为与输入的电压值相等ad*5/4096在扩大1000
if(ad>0&&ad<55)
l=0;
if(ad>=55&&ad<70)
l=40;
if(ad>=70&&ad<80)
l=35;
if(ad>=80&&ad<100)
l=30;
if(ad>=100&&ad<120)
l=27;
if(ad>=120&&ad<150)
l=25;
if(ad>=150&&ad<185)
l=22;
if(ad>=185&&ad<230)
l=20;
if(ad>=230&&ad<320)
l=17;
if(ad>=320&&ad<420)
l=15;
if(ad>=420&&ad<590)
l=12;
if(ad>=590&&ad<660)
l=10;
if(ad>=660)
l=0;
write_sfm(7,l);
write_sfm1(7,ad);
}
}
四.测试
测试方法:
先写入电压采集程序,接入电源,将对应距离的电压值标定出来。
再将标定的值与对应距离写入程序中,接入电源,便可测量距离。
测试设备:
直尺,直流稳压电源,挡板。
整理数据:
标定电压值
实际距离
显示距离
55-70mv
35-40mm
40mm
70-80mv
30-35mm
35mm
80-100mv
27-30mm
30mm
100-120mv
25-27mm
27mm
120-150mv
22-25mm
25mm
150-185mv
20-22mm
22mm
185-230mv
17-20mm
20mm
230-320mv
15-17mm
17mm
320-420mv
12-15mm
15mm
420-590mv
10-12mm
12mm
590-660mv
8-10mm
10mm
系统指标:
由于此系统反应不太稳定,因此此作品只适合作为研究对象,不适合用于实际的测距。
备注:
由于红外对管的性能不高,在测试一段时间过后,红外接收管的信号会衰减,因此可能会造成很大的误差。
这也是此次实验的最大失败之处。
五.总结
参考文献:
刘坤《51单片机典型应用开发范例大全》中国铁道出版社
彭伟《单片机C语言程序设计实训—基于8051+Proteus仿真》电子工业出版社
..
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 红外 测距 课程设计