超声定位测距仪设计报告.docx
《超声定位测距仪设计报告.docx》由会员分享,可在线阅读,更多相关《超声定位测距仪设计报告.docx(16页珍藏版)》请在冰豆网上搜索。
超声定位测距仪设计报告
论文编号:
A甲07
参赛题目
(超声定位测距仪)
山东轻工业学院
电子信息与控制学院
(姓名专业班级联系方式)
薄夫宽电子信息工程
宋宜飞电子信息工程
高辉电子信息工程
山东轻工业学院
第二届“银兴杯”电子设计大赛
设计方案
作品名称:
超声定位测距仪
参赛编号:
A甲07
题目名称:
超声定位测距仪
摘要:
超声波测距定位仪要求测距误差小于2厘米,测量角度误差小于10度,测量时间小于10秒,测量范围2×2米正方形内任意放置的超声定位测距仪。
由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。
利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制
本定位测距仪由单片机STC89C52为主控制器,超声波发射电路主要由反相器4001和超声波发射换能器构成,超声波检测接收电路主要是由集成电路CX20106A组成,它是一款红外线检波接收的专用芯片。
为精确测量角度,采用步进电机24BYJ48,大大提高了定位角度精度。
关键词:
单片机STC89C52芯片CX20106A,L298N
步进机24BYJ48
目录
一、系统设计5
1.1、设计要求5
1.2系统各模块方案5
二、系统硬件设计与实现6
2.1、超声波测距部分设计6
2..1.1、超声波发射电路6
2.1.2、超声波检测接收电路7
2.1.3、主控部分8
2.2、超声波定位部分设计9
2.2.1、角度传感器电路设计10
2.3、显示电路原理11
三、软件设计与工程流图11
四、参考文献14
1、系统设计
1.1、设计要求
1.设计包括可移动发射装置和定位测距仪。
2.定位仪能在在2×2米正方形范围内准确定位。
3.测距误差小于2厘米,测量角度误差小于10度,测量时间小于10秒。
1.2系统各模块方案
设计思路:
题目的大部分要求还是在发挥部分,要做到满足题目要求的同时有大较大的创新点。
我们采用基于51单片机的超声波测距,以及采用步进电机测量方位。
设计电路主要由单片机系统及显示电路、超声波发射电路、超声波检测接收电路和角度传感器电路等几部分组成。
经过仔细分析和论证,决定了各模块的最终方案如下:
1.STC89C52:
测距定位仪的核心单片机
2.步进电机24BYJ48,驱动芯片L298N
3.发射探头R40-165.驱动芯片CD4001
4.接受探头T40,及红外线检波接收芯片CX20106A
5.显示模块,利用HC373驱动,共阳4位LED
图1超声波测距定位仪系统方框图
二、系统硬件设计与实现
2.1、超声波测距部分设计
根据设计要求并综合各方面因素,可以采用STC89C52单片机作为主控制器,步进电机做角度测量,超声波做距离测量,采用动态扫描法实现LED显示距离与角度,超声波驱动信号用单片机的定时器完成,
2.1.1、超声波发射电路
压电超声波转换器的功能:
利用压电晶体谐振工作。
内部结构上图所示,它有两个压电晶片和一个共振板。
当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动产生超声波,这时它就是一超声波发生器;如没加电压,当共振板接受到超声波时,将压迫压电振荡器作振动,将机械能转换为电信号,这时它就成为超声波接受转换器。
超声波发射转换器与接受转换器其结构稍有不同。
图2超声波发射接收头
压电式超声波换能器是利用压电晶体的谐振来工作的。
超声波换能器内部有两个压电晶片和一个换能板。
当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片会发生共振,并带动共振板振动产生超声波,这时它就是一个超声波发生器;反之,如果两电极问未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收换能器。
超声波发射换能器与接收换能器在结构上稍有不同,使用时应分清器件上的标志。
本设计中发射器电路采用集成电路模块不需考虑这些问题。
其原理图如图3所示。
图3超声波发射电路
2.1.2、超声波检测接收电路
集成电路CX20106A是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。
考虑到红外遥控常用的载波频率38kHz与测距的超声波频率40kHz较为接近,可以利用它制作超声波检测接收电路(如图5)。
实验证明用CX20106A接收超声波(无信号时输出高电平),具有很好的灵敏度和较强的抗干
扰能力。
适当更改电容的大小,可以改变接收电路的灵敏度和抗干扰能力。
图4超声波接收电路
本电路包括超声波接收头,电压器、检波电路和单稳态延时电路,如图6所示。
图5接收电路组成图
2.1.3、主控部分
STC89C52:
8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:
0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。
图6STC89C52
其引脚图如图7所示。
图7STC89C52系列引脚图
以超声波作为检测手段,必须产生超生波和接收超声波。
完成这种功能的装置就是超声波传感器,习惯上称为超声波换能器或超声波探头。
超声波传感器有发送器和接收器,但一个超声波传感器也可具有发送和接收声波的双重作用。
超声波传感器是利用压电效应的原理将电能和超声波相互转化,即在发射超声波的时候,将电能转换,发射超声波;而在收到回波的时候,则将超声振动转换成电信号。
2.2、超声波定位部分设计
1、角度电路设计
选用的电机为:
24BYJ48—5V
带有齿轮减速,噪音极低,运转平稳,减速比为1/64,步矩角为5.625/64°,通过单片机发射脉冲信号转驱动后带动点击转动,每一脉冲转动5.625/64°,通过计数器计数中断前脉冲数量,再乘以步距角就可得到准确的角度信息。
其采用四相八拍工作方式,需要对电机的每“一相”进行驱动,驱动电路我们选用L298N。
驱动电路如下:
图10角度电路
2.3、显示电路原理
LED数码管外部有10个引脚,其中3,8脚为公共端也称位选端,其余8个引脚称为段选端,当要使某一位数码管显示某一数字((0-9中的一个)必须在这个数码管的段选端加上与数字显示数字对应的8位段选码(也称字形码),在位选端加上低电平即可,二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。
一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)a~g,另一个小数点为dp发光二极管。
当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。
为了保护各段LED不被损坏,需外加限流电阻。
为节省端口及降低功耗,本系统采用动态扫描显示方式。
动态扫描显示方式需要解决多位LED数码管的“段控”和“位控”问题,本电路的通过P1口实现:
而每一位的公共端,即LED数码管的“位控”,则由P3口控制。
这种连接方式由于多位字段线连在一起,因此,要想显示不同的内容,必然要采取轮流显示的方式,即在某一瞬间,只让其中的某一位的字位线处于选通状态,其它各位的字位线处于断开状态,同时字段线上输出这一位相应要显示字符的字段码。
在这一瞬时,只有这一位在显示,其他几位则暗。
图12显示器原理图
三、软件设计与工作流程图
超声波测距定位仪的软件设计主要由主程序、超声波发生子程序、超声波接收中断程序、角度测量程序及显示子程序组成。
我们知道C语言程序有利于实现较复杂的算法,汇编语言程序则具有较高的效率且容易精细计算程序运行的时间,而超声波测距仪的程序既有较复杂的计算(计算距离时),又要求精细计算程序运行时间(超声波测距时),所以控制程序可采用C语言和汇编语言混合编程。
其流程图如下。
复位
发送超声波同时控制步进电机开始转动
产生外部中断int0
由脉冲数及步距得偏转角度
再次发射超声波并启动计数
由计时时间的距离
数码管分时并动态显示数据
系统运行时,软件首先对单机片和发射接收端初始化,然后,从接受到超声波时步进电机脉冲数计算出角度,接着,初始化发射端接收端,测距离。
最后初始化显示部件,将距离和角度显示出来。
四、参考文献
1.张培仁.MCS—51单片机原理与应用.北京:
清华大学出版社.1998.12
5.王化祥等.传感器原理及其应用.天津:
天津大学出版社.1999
6.童诗白等.模拟电子技术基础.北京:
高等教育出版社.2000
附录
C程序:
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitrec=P3^2;
sbitp27=P2^7;
sbitp26=P2^6;
sbitp25=P2^5;
sbitp37=P3^7;
sbitp36=P3^6;
ucharj;
uintcount=0;
uintcounts=4800;
uintstep,i;
floatds=0;
uintan;
uintdst;
constunsignedcharclockstep[8]={0x80,0x90,0x10,0x30,0x20,0x60,0x40,0xc0};
codeunsignedcharseg7code[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//显
voiddelayms(unsignedchari)
{unsignedintj;
while(i--)
{
for(j=0;j<125;j++);
}
}
voiddelay(unsignedchartc)//延时程序
{unsignedintj;
whiletc--)
{
for(j=0;j<100;j++);
}
}
voidLed(uintag,ds)//显示函数PO口作为wei选,P2口duan选
{
P0=0x80;
P2=seg7code[ag/100];//取出角度高位,查表,输出。
delay
(1);//延时
P0=0x40;
P2=seg7code[ag%100/10];//取出角度低位,查表,输出。
delay
(1);//延时
P0=0x20;
P2=seg7code[ag%10];//此位。
delay
(1);//延时
///P0=0x10;
///P2=0x39;//显示C,译为度。
///delay
(1);
P0=0x08;
P2=seg7code[ds/1000];//距离最高位。
delay
(1);
P0=0x04;
P2=seg7code[ds%1000/100];//距离
delay
(1);
P0=0x02;
P2=0x7f&seg7code[ds%100/10];//距离,此位有小数点
delay
(1);
P0=0x01;
P2=seg7code[ds%10];//距离最低位
delay
(1);
}
voidmoto(void)//正转,setp是步数64huo4096;
{
p37=1;
j=0;
for(i=0;i{
if(j<8)
{
j++;
}
else
{
j=0;
}
P1=clockstep[j];
delaym
(2);
}
}
voidcheck(void)interrupt0//l298nenaenbjiep3^7
{
p37=0;
step=i;
counts=step+2;
an=(uint)(step*0.075);//步距5.625度
p36=1;
EA=0;
}
voidmain(void)/*主程序*/
{
p36=0;
EA=1;/*CPU开中断*/
EX0=1;
moto();
p36=0;//fashe
while(rec==1)
{
count++;//11.0592m,
}
ds=334.5*count;
ds=ds*1000;/////cm
dst=(uint)ds;
p36=1;
for(;;)
{
Led(an,dst);
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
说明。
P0口接段选,P2口的7,6,5位选-------LED
P3的2口为超声波接收引脚,低变,产生中断
P3的6口为超声波接收引脚,为0时发射
P1口驱动步进电机,高4位来接4线
P3的7口为L298N的ENA,ENB