超声波模块DYPME007和89c51.docx
《超声波模块DYPME007和89c51.docx》由会员分享,可在线阅读,更多相关《超声波模块DYPME007和89c51.docx(37页珍藏版)》请在冰豆网上搜索。
![超声波模块DYPME007和89c51.docx](https://file1.bdocx.com/fileroot1/2023-4/20/8e9cc726-512d-46be-bd04-7f105cbaed6f/8e9cc726-512d-46be-bd04-7f105cbaed6f1.gif)
超声波模块DYPME007和89c51
超声波模块DYP-ME007和单片机的使用
随着科学技术的快速发展,超声波将在科学技术中的应用越来越广。
本设计对超声波传感器测距的可能性进行了理论分析,利用单片机以及超声波在介质的传播特性等知识,采用DS18B20作为温度反馈,在此基础上设计了系统的总体方案,最后通过硬件和软件实现了各个功能模块。
为了保证超声波测距模块的可靠性和稳定性,其本身采取了相应的抗干扰措施。
该测距仪最大测量距离是80cm,最小测量距离是4cm,精确度是3cm。
这套系统软硬件设计合理、抗干扰能力强且实时性良好,经过系统扩展和升级,可以广泛应用于工业生产、医学检查、日常生活、无人驾驶汽车、自动作业现场的自动引导小车及机器人等。
关键词:
超声波测距;单片机;温度传感器
目录
第一章绪论1
1.1选题背景及目的1
1.2超声波介绍及其应用领域1
1.3本设计的主要研究内容2
1.3.1超声波测距的原理2
1.3.2设计的主要内容3
第二章超声波测距系统4
2.2单片机AT89C51的特性5
2.3超声波探头介绍6
第三章超声波测距硬件电路设计8
3.1超声波测距系统电路总体设计方案8
3.2超声波测距系统电路各部分模块的设计9
3.2.1超声波发射接收电路的设计9
3.2.2温度补偿电路的设计11
3.2.3显示模块的设计12
第四章系统软件设计14
4.1显示子程序15
4.2外部中断子程序16
4.3测量温度子程序17
第一章绪论
1.1选题背景及目的
1.2超声波介绍及其应用领域
当物体振动时会发出声音。
科学家们将每秒钟振动的次数称为声音的频率,它的单位是赫兹。
人类耳朵能听到的声波频率为20~20K赫兹。
当声波的振动频率大于20K赫兹或小于20赫兹时,人们便听不见了。
因此,把频率高于20K赫兹的声波称为“超声波”。
通常用于医学诊断的超声波频率为1~5兆赫。
超声波具有方向性好,穿透能力强,易于获得较集中的声能,在水中传播距离远等特点。
可用于测距,测速,清洗,焊接和碎石等。
在医学,军事,工业以及农业上有明显的作用。
理论研究表明,在振幅相同的条件下,一个物体振动的能量与振动频率成正比,超声波在介质中传播时,介质质点振动的频率很高,因而能量很大。
在我国北方干燥的冬季,如果把超声波通入水罐中,剧烈的振动会使罐中的水破碎成许多小雾滴,再用小风扇把雾滴吹入室内,就可以增加室内空气湿度.这就是超声波加湿器的原理。
应用领域
1.机械行业:
防锈油脂的去除;量具刃具的清洗;机械零部件的除油除锈发动机、化油器及汽车零件的清洗,过滤器及滤网的疏通清洗等等。
2.表面处理行业:
电镀前的除油除锈;离子镀前清洗;磷化处理;清除积炭,氧化皮,抛光膏,金属工件表面活化处理等等。
3.医疗行业:
医疗器械的清洗,消毒,杀菌,实验器皿的清洗等等。
4.仪器仪表行业:
精密零件的高清洁度清洗,装配前清洗等等。
5.机电电子行业:
印刷线路板除松香,焊斑;高压触点,接线柱等机械电子零件的清洗等等。
6.光学行业:
光学器件的除油、除汗和清灰等。
7.半导体行业:
半导体晶片的高清洁度清洗。
8.科教文化:
化学生物等实验器皿的清洗和除垢。
9.钟表首饰:
清除油泥、灰尘、氧化层和抛光膏等。
10.石油化工行业:
金属滤网的清洗疏通、化工容器和交换器的清洗等等。
11.纺织印染行业:
清洗纺织锭子和喷丝板等。
12.其它:
超声清洗:
清除污染物,疏通细小孔洞,如:
清洁印章,古董修复和汽车电喷头疏通等。
超声搅拌:
加快溶解,提高均匀度,加快物理化学反应,防止过腐蚀和加速油水乳化,如:
溶剂染料混合和超声磷化等。
超声凝聚:
加速沉淀,分离,如:
种子浮选和饮料除渣等。
超声杀菌:
杀灭细菌及有机污染物,如:
污水处理和除气等。
超声粉碎:
降低溶质颗粒度,如:
细胞粉碎和化学检测等。
超声封孔:
排除间隙气体,提高整体密度,如:
工件浸漆等。
1.3本设计的主要研究内容
1.3.1超声波测距的原理
超声波测距是通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差t,然后求出距离
(1-1)
式(1-1)中的c为超声波在空气中传播的速度。
限制该系统的最大可测距离存在四个因素:
超声波的幅度、反射物的质地、反射和入射声波之间的夹角以及接收装置的灵敏度。
接收装置对声波脉冲的直接接收能力将决定最小可测距离。
超声波的波速c与温度有关,表1-1列出了几种不同温度下的波速。
表1-1声速与温度的关系
温度(℃)
-30
-20
-10
0
10
20
30
100
声速(m/s)
313
319
325
331
338
344
349
386
可以推导得出,温度和波速大概有c=331.5+0.607T这样的规律,波速确定后,只要测得超声波往返的时间t,即可求得距离S。
1.3.2设计的主要内容
单片机控制超声波模块发射及检波接收,其系统原理框图如图1-3所示。
图1-3超声波测距系统框图
先驱动DS18B20温度传感器,测出当前温度,然后根据公式换算出当前波速,然后控制口P1.0(Trig引脚)发一个10US以上的高电平,就可以在接收口P3.2(Echo引脚)等待高电平输出。
一有输出就可以开定时器计时,当此口变为低电平时就进入外部中断0,在中断程序中读取定时器的值,此时就为此次测距的时间,方可算出距离。
如此不断的周期测,就可以达到你移动测量的值了相应的计算结果被送至LED数码管进行显示。
第二章超声波测距系统
本设计是基于单片机控制的,在介绍电路设计之前,先简单了解一下单片机的工作原理,即简单介绍STC89C51的一些特性。
2.1单片机基础知识
单片微型计算机简称单片机,特别适用于控制领域,故又称为微控制器(Microcontroller)。
单片微型计算机是微型计算机的一个重要分支,也是一种非常活跃且颇具生命力的机种。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:
CPU(CentralProcessingUnit,中央处理器)、存储器和I/O接口电路等。
因此,单片机只需要与适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机内部结构如图2-1所示。
图2-1单片机内部结构
与单片机相比,微型计算机是一种多片机系统。
它是由中央处理器(CPU)芯片、ROM芯片、RAM芯片和I/O接口芯片等通过印刷电路板上总线(地址总线AB、数据总线DB和控制总线CB)连成一体的完整计算机系统。
其中,中央处理器(CPU)的字长长,功能强大;ROM和RAM的容量很大;I/O接口的功能也大,这是单片机无法比拟的。
因此,单片机在结构上与微型计算机十分相似,是一种集微型计算机主要功能部件于同一块芯片上的微型计算机,并由此而得名。
2.2单片机AT89C51的特性
AT89C系列单片机是Atmel公司生产的一款标准型单片机。
其中数字89是单片机AT89C51的特性,C表示CMOS工艺。
其管脚图如图2-2所示。
图2-2AT89C51单片机管脚图
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
P3口也可作为AT89C51的一些特殊功能口,如下所示:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
2.3超声波探头介绍
超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。
利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求
本测距模块使用的是压电式超声波发生器探头,压电式超声波发生器实际上是利用压电晶体的谐振来工作的。
超声波发生器内部结构如图2-3所示,它有两个压电陶瓷晶片和一个金属片共振板。
当它的两极外加脉冲信号,其频率等于压电陶瓷晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。
反之,如果两电极间未外加电压,当金属片共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。
图2-3压电式超声波发生器
第三章超声波测距硬件电路设计
3.1超声波测距系统电路总体设计方案
由单片机STC89C51编程产生10US以上的高电平,由P1.0口输出,就可以在接收口P3.2(Echo引脚)等待高电平输出。
一旦有高电平出处,即在模块中经过放大电路,驱动超声波发射探头发射超声波。
发射出去的超声波经障碍物反射回来后,由超声波接收头接收到信号,通过接收电路的检波放大、积分整形及一系列处理,接收口P3.2口即变为低电平,读取单片机中定时器的值。
单片机利用声波的传播速度和发射脉冲到接收反射脉冲的时间间隔计算出障碍物的距离,并由单片机控制显示出来。
该测距装置是由超声波模块、单片机、和LED显示电路组成。
传感器输入端与发射接收电路组成超声波测距模块,模块的输出输入端与单片机相连接,单片机的输出端与显示电路输入端相连接。
其时序图如图3-1所示。
图3-1时序图
超声波测距模块的发射端在T0时刻发射方波,同时启动定时器开始计时,当收到回波后,产生一负跳变到单片机中断口,单片机响应中断程序,定时器停止计数。
计算时间差,即可得到超声波在媒介中传播的时间t,由此便可计算出距离。
3.2超声波测距系统电路各部分模块的设计
3.2.1超声波发射接收电路的设计
发射电路的设计
由模块中产生的40kHz的方波需要进行放大,才能驱动超声波传感器发射超声波,发射驱动电路其实就是一个信号放大电路,本模块所选用的是74HC04集成芯片,图3-1为发射电路图。
图3-1发射电路
74HC04内部集成了六个反向器,同时具有放大的功能。
74HC04的管脚如图3-2所示。
图3-274HC04管脚图
接收电路的设计
超声波接收头接收到超声波后,转换为电信号,此时的信号比较弱,必需经过放大。
本系统采用了LM741对接收到的信号进行放大,接收电路如图3-3所示。
图3-3接收电路
超声波探头接收到超声波后,通过声电转换,产生一正弦信号,其频率为传感器的中心频率,即40kHz。
该信号通过C1高通滤波后经LM741放大,最后经二极管整形后输出到单片机中断口。
LM741是一单运放集成芯片,图3-4为LM741管脚图。
图3-4LM741管脚图
其板上接线方式为,VCC、trig(控制端)、echo(接收端)、out(空脚)、GND
使用方法简单,一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出。
一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离。
如此不断的周期测,就可以达到移动测量的值了。
图3-5超声波测距模块外观图
DYP-ME007超声波测距模块可提供3cm--3.5m的非接触式距离感测功能,图3-5为DYP-ME007外观,包括超声波发射器、接收器与控制电路。
其基本工作原理为给予此超声波测距模块一触发信号后发射超声波,当超声波投射到物体而反射回来时,模块输出一回响信号,以触发信号和回响信号间的时间差,来判定物体的距离。
3.2.2温度补偿电路的设计
稳定准确的超声波传播速度是保证测量精度的必要条件,而超声波在空气中传播时,其速度受到了温度,湿度,粉尘,大气压,气流等因素的影响,其中温度影响最大,而超声波在空气中的速度与温度的关系的表达式为c=331.45
,由泰勒公式将其展开,可得到近似计算公式c=331.5+0.607T。
式中T是环境摄氏温度,所以温度每变化1摄氏度,声速的变化为0.6m/s,可见温度对声速的影响很大,测量时必须进行温度补偿。
DS18B20温度传感器是美国DALLAS半导体公司推出的一种改进型智能温度传感器,测温范围为-55~125摄氏度,最大分辨率可达0.0625摄氏度。
DS18B20可以直接读出被测温度值,而且采用了线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点,测温电路如图3-5所示。
图3-5测温电路原理图
3.2.3显示模块的设计
LED(Light-EmittingDiode,发光二极管)有七段和八段之分,也有共阴和共阳两种。
LED数码管结构简单,价格便宜。
下图示出了八段LED数码显示管的结构和原理图。
图(a)为八段共阴数码显示管结构图,图(b)是它的原理图,图(c)为八段共阳LED显示管原理图。
八段LED显示管由八只发光二极管组成,编号是a、b、c、d、e、f、g和SP,分别与同名管脚相连。
七段LED显示管比八段LED少一只发光二极管SP,其他与八段相同。
图3-68段数码管示意图
单片机对LED管的显示可以分为静态和动态两种。
静态显示的特点是各LED管能稳定地同时显示各自字形;动态显示是指各LED轮流地一遍一遍显示各自字符,人们由于视觉器官惰性,从而看到的是各LED似乎在同时显示不同字形。
为了提高系统可靠性并降低成本,单片机控制系统通常采用动态扫描显示。
所以本系统采用了两片74HC573分别作为断码和位码的选通芯片,并用一片10K的排阻提供上拉电流,以达到数码管动态描显示,电路原理图如图3-6所示。
图3-6显示电路原理图
第四章系统软件设计
软件分为两部分,主程序和中断服务程序,如图4-1所示。
主程序完成初始化工作、超声波发射和接收,距离计算、结果的输出。
外部中断服务子程序主要完成时间值的读取。
NO
YES
图4-1主程序流程图
主程序首先是对系统环境初始化,设置定时器T0工作模式为16位定时计数器模式。
置位总中断允许位EA。
然后给Trig一个20us的高电平,然后在Echo引脚等待其变为高电平,一旦输出了高电平,表明超声波已开始发射,此刻即计时,等待Echo变为低电平,即触发外部中断0的跳变沿方式中断。
读取当前定时器的值,换算成时间,乘以温度补偿后的波速,即得到测距距离。
由于采用的是11.0592MHz的晶振,计数器每计一个数大概就是1μs,当主程序检测到接收成功的标志位后,将计数器T1中的数(即超声波来回所用的时间)按式计算,即可得被测物体与测距仪之间的距离。
测出距离后结果将以十进制BCD码方式送往LED显示约0.5s,然后再发超声波脉冲重复测量过程。
为了有利于程序结构化和容易计算出距离,主程序采用C语言编写。
4.1显示子程序
本系统的LED显示采用了动态显示方式,用两块74HC573分别选通段码和位码,没显示一根管延时2ms,利用人眼的视觉暂留效应,达到静态显示的效果,C程序如下。
voiddisplay(uintdistance_date)
{
uchardm,cm,mm;
dm=distance_date/100;
cm=distance_date%100/10;
mm=distance_date%10;
dula=0;
P0=table[dm];
dula=1;
dula=0;
wela=0;
P0=0x7f;
wela=1;
wela=0;
delay
(2);
dula=0;
P0=table1[cm];
dula=1;
dula=0;
wela=0;
P0=0xbf;
wela=1;
wela=0;
delay
(2);
P0=table[mm];
dula=1;
dula=0;
P0=0xdf;
wela=1;
wela=0;
delay
(2);
}
4.2外部中断子程序
因本设计把数据换算,计算距离以及显示子程序都放在了主程序中,所以外部中断子程序比较简单,它实现了对T1数值读取,以及关闭外部中断的功能。
流程图如图4-2所示。
图4-2外部中断程序流程图
c程序如下:
INTO_()interrupt0
{
outcomeH=TH1;
outcomeL=TL1;
succeed_flag=1;
EX0=0;
}
4.3测量温度子程序
测温电路由美国DALLAS公司的DS18B20芯片完成,其初始化过程如下:
DS18B20的初始化
(1)先将数据线置高电平“1”。
(2)延时(该时间要求的不是很严格,但是尽可能的短一点)
(3)数据线拉到低电平“0”。
(4)延时750微秒(该时间的时间范围可以从480到960微秒)。
(5)数据线拉到高电平“1”。
(6)延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。
据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。
(7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。
(8)将数据线再次拉高到高电平“1”后结束。
DS18B20的写操作
(1)数据线先置低电平“0”。
(2)延时确定的时间为15微秒。
(3)按从低位到高位的顺序发送字节(一次只发送一位)。
(4)延时时间为45微秒。
(5)将数据线拉到高电平。
(6)重复上
(1)到(6)的操作直到所有的字节全部发送完为止。
(7)最后将数据线拉高。
DS18B20的读操作
(1)将数据线拉高“1”。
(2)延时2微秒。
(3)将数据线拉低“0”。
(4)延时15微秒。
(5)将数据线拉高“1”。
(6)延时15微秒。
(7)读数据线的状态得到1个状态位,并进行数据处理。
(8)延时30微秒。
根据读写操作,其流程图如4-3
转换完毕
图4-3DS18B20初始化流程图
具体的各部分C程序如下:
voiddsreset(void)//sendresetandinitializationcommand
{
uinti;
DS=0;
i=103;
while(i>0)i--;
DS=1;
i=4;
while(i>0)i--;
}
bittmpreadbit(void)//readabit
{
uinti;
bitdat;
DS=0;i++;//i++fordelay
DS=1;i++;i++;
dat=DS;
i=8;while(i>0)i--;
return(dat);
}
uchartmpread(void)//readabytedate
{
uchari,j,dat;
dat=0;
for(i=1;i<=8;i++)
{
j=tmpreadbit();
dat=(j<<7)|(dat>>1);//读出的数据最低位在最前面,这样刚好一个字节在DAT里
}
return(dat);
}
voidtmpwritebyte(uchardat)//writeabytetods18b20
{
uinti;
ucharj;
bittestb;
for(j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if(testb)//write1
{
DS=0;
i++;i++;
DS=1;
i=8;while(i>0)i--;
}
else
{
DS=0;//write0
i=8;while(i>0)i--;
DS=1;
i++;i++;
}
}
}
voidtmpchange(void)//DS18B20beginchange
{
dsreset();
delay
(1);
tmpwritebyte(0xcc);//addressalldriversonbus
tmpwritebyte(0x44);//initiatesasingletemperatureconversion
}
uinttmp()//getthetemperature
{
floattt;
uchara,b;
dsreset();
delay
(1);
tmpwritebyte(0xcc);
tmpwritebyte(0xbe);
a=tmpread();
b=tmpread();
temp=b;
temp<<=8;//twobytecomposeaintvariable
temp=temp|a;
tt=temp*0.0625;
temp=tt*10+0.5;
returntemp;
}
voidreadrom()//readtheserial
{
ucharsn1,sn2;
dsreset();
delay
(1);
tmpwritebyte(0x33);
sn1=tmpread();
sn2=tmpread();
}
前两章是该课题的重点,全面介绍了超声波测距系统的原理和设计思路,给出了硬件电路和软件的设计。
在硬件电路的设计中,分别详细介绍了发射电路,接收电路及显示模块的设计方法。
软件编程部分,给出了整个程序的思路以及程序流程图。