超声波测距器的设计.

上传人:我** 文档编号:114445427 上传时间:2019-11-11 格式:DOCX 页数:15 大小:281.25KB
返回 下载 相关 举报
超声波测距器的设计._第1页
第1页 / 共15页
超声波测距器的设计._第2页
第2页 / 共15页
超声波测距器的设计._第3页
第3页 / 共15页
超声波测距器的设计._第4页
第4页 / 共15页
超声波测距器的设计._第5页
第5页 / 共15页
点击查看更多>>
资源描述

《超声波测距器的设计.》由会员分享,可在线阅读,更多相关《超声波测距器的设计.(15页珍藏版)》请在金锄头文库上搜索。

1、基于MSP430单片机超声波测距器的设计一、总体设计1.1 超声波测距原理超声波发射器向某一方向发射超声波 ,在发射时刻的同时开始计时 ,超声波在空气中传播 ,途中碰到障碍物就立即返回来 ,超声波接收器收到反射波就立即停止计时 ,超声波在空气中传播的速度为,根据计时时间 ,就可以计算出发射点距障碍物的距离 ,即L=12Vt (1) 公式中,V为声波在空气中传播的速度;t为超声波在空气中传播的时间这就是时间差测距法,本系统就是利用单片机控制超声波发射器发射超声波脉冲,同时利用单片机中的计数器开始计时。超声波达到后面的障碍物就会反射回来,接收装置接收到回波信号后由外部比较电路产生高电平使单片机产生

2、外部中断。单片机运行中断服务子程序(ISR)计算出距离,并传送给LCD显示给司机 ,同时程序内还有比较模块,若车距小于3米,则显示所测量的距离同时单片机输出一个高电平使蜂鸣器报警,若车距大于3米,则显示安全蜂鸣器不报警,这样以声光两种方式可靠地向司机反馈信息,来保证倒车或行车的安全。1.2 超声波时序图原理HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感应功能,测距精度高达3mm,模块包括超声波发射器、接收器与控制电路。时序图原理:1、 采用IO口TRIG触发测距,给至少10us的高电平信号;2、 模块自动发送8个40khz的方波,自动检测是否有信号返回;3、 有信号返回,

3、通过TO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340m/s)/2;1.3 总体设计方法本设计采用MSP430F1611单片机作为主控芯片,由超声波模块、电源电路模块、液晶显示模块、蜂鸣器等组成。利用定时器中断的方式捕获时间差,将采集的时间通过公式计算得到障碍物与测试点之间的距离,最后将测量的数据通过LCD12864液晶实时的显示出来。MSP430F1611单片机超声波模块电源电路LCD12864蜂鸣器图1 总体设计框图二、硬件设计2.1 基本应用系统本设计采用MSP430F1611为主控芯片,由一个8M的晶振和32.768KHz的

4、晶振外加一个复位电路,构成了基本应用系统,如图2所示:图2 基本应用系统与常用的51系列单片机相比,MSP430系列单片机功能强大、功耗低、集成度高,但其价格略高。为得到合适的性价比 ,选择了TI公司早期生产的MSP430F1611,这种型号的单片机价格较低 ,功能虽然并不强大 ,但足以满足本系统要求2.2 人机接口电路本设计使用的液晶是12864字符型液晶,并且带字符库的,不需要查找代码。液晶电路使用时如果发现液晶不亮可以调节连接液晶的点位器,改变液晶的亮度。通过超声波模块获取的数据通过液晶实时显示出来。人机接口电路如图2所示; 图3 人机接口电路2.3 超声波模块电路图4 超声波模块电路图

5、超声波模块电路图如图4所示:超声波的发射和接收采用 HC-SR04 模块, 模块包括超声波发射器、接收器和控制电路。 采用 IO 口 TRIG 触发测距,给至少 10s 的高电平信号,模块自动发送 8 个 40kHz 的方波,并自动检测是否有信号返回,一旦检测到有回波信号则输出回响信号,回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号的时间间隔可以计算出距离。测量周期应为 60ms 以上,以防止发射信号对回响信号产生影响。 模块中 ECHO 是信号接收引脚,有信号返回时,通过IO 口 ECHO 输出一个高电平, 高电平持续时间就是超声波从发射到返回的时间。2.4 电源电路

6、电源电路如图5所示,本设计中分别采用了3.3V、5V电压为超声波测距器供电。此电源电路首先将220V交流电通过降压变压器降到10V交流电,然后通过整流电路、滤波电路、稳压电路得到12V直流电,再通过SPX29300稳压芯片得到5V和3.3V电压。图5 电源电路图三、软件设计3.1 程序流程图超声波测距系统的软件由主程序、 超声波发射及接收中断程序、显示子程序构成。 由于 C 语言有利于实现较为复杂的算法,而汇编程序有较高的效率并容易精确计算程序运行的时间,因此控制程序可以采用 C 语言程序与汇编语言程序的混合编程。超声波测距主程序先对系统进行初始化, 设定定时器 T0 工作在方式 1 ,置位总

7、中断允许位 EA 并对显示端口 P2 清零,然后调用模块HC-SR04 发送超声波脉冲, 延时 2ms 后打开外部中断 0 接收返回的超声波信号。 主程序检测到接收成功后,将计数器 T0 中的数(即超声波从发射到返回的时间 t ), 按照公式 d= ( v*t )/2 计算测距器与被测物体间的距离,其中 v 为声速。 超声波测距系统主程序流程如图 6 所示。发射超声波信号系统初始化检测信号程序开始计算距离有信号返回显示结果图 6 主程序流程图在环境温度变化不大的情况下,可以认为声速是基本不变的。设计时取 20 时的声速为 344m/s ,则有 d= ( 172*T0/10000)cm ,其中,

8、 T0为计数器 T0 的计数值。 表 1 列出了在不同温度下超声波的声速。表1 不同温度下超声波速度温度/C-30-20-100102030100声速(m/s)3133193253233383443493863.2 接口定义本设计采用的MSP430F1611单片机是一款功能强大、低功耗工业型微处理器。单片机与超声波模块、液晶显示模块、蜂鸣器模块的接口定义如表2所示:表2 MSP430F1611单片机接口定义序号引脚号引脚名接口定义备注133P2.4CSLCD12864232P2.5CLK331P2.6SID438P5.3TRIG超声波模块537P5.2ECHO616P4.5IO蜂鸣器四、超声波

9、测距器测量结果及分析系统设计并调试后,测试了8组数据,并对测距结果进行了分析,用以验证测距器的准确性与稳定性,测距结果如表3所示:表3 超声波测距实验数据序号测试距离(cm)实际距离(cm)1212223111041011515152200620010174004018420500对测距结果进行分析可知, 超声波测距器 HC-SR04 测距模块的测距范围为 2cm-400cm。在程序设计的过程中,要考虑到发射信号对回响信号的影响,测量周期至少在 60ms以上。测距时被测物体的面积应不少于0.5m2,并保证被测面尽量平整,以免影响测量结果。在测距精度要求很高的情况下,要考虑到温度对于超声波声速的

10、影响,通过温度补偿的方法进行校正。五、结论超声波指向性强,能量消耗慢,在介质中传播的距离较远,可以经常用于距离的测量。 利用单片机控制器和 HC-SR04 超声波模块设计的超声波测距系统,设计较为方便,计算处理也比较简单,在测量精度方面能达到日常应用的要求,测量速度快,结果显示直观,在汽车倒车控制、建筑施工工地及其他工业现场的位置监控方面有较好的应用前景。附录一 硬件电路图附录二 源代码/*P1.2为捕获源输入端口,P1.3与传感器的trig端口相连*/#include#include12864.h#define uint unsigned int#define uchar unsigned

11、char#define CPU (1000000)#define delay_us(x) (_delay_cycles(double)x*CPU/1000000.0) /_#define delay_ms(x) (_delay_cycles(double)x*CPU/1000.0)uchar line1=距离为:;unsigned long line210; /用于储存高电平期间计数的数值uint overflow=0,n=0;float r=0;/*(不精确)延时函数*/void delay_nms(uint x) uint i,j; for(i=0;ix;i+) for(j=0;j 0;

12、i-); / Time for flag to set while (IFG1 & OFIFG); / OSCFault flag still set? BCSCTL2 |=SELM_2+SELS+DIVM_3; / MCLK=1M,SMCLK= 8M /MCLK频率测试 /P5SEL|=BIT4; /P5DIR|=BIT4; /*TA的初始化设置*/void CAP_Init() P1DIR &= BIT2; /设置P1.2为输入 P1SEL |= BIT2; /设置P1.2为模块功能,即捕获源 TACCTL1|=CAP+CCIS_0+CM_3+CCIE+SCS; /上升、下降沿触发捕捉,用

13、于测脉宽,同步模式、时能中断CCI1A TACTL |=TASSEL1 + ID_3+ MC_2+TACLR; /选择8MSMCLK时钟,8分频,连续计数模式/*处理函数*/void chuli() unsigned long sum=0; P1SEL &=BIT2; /设置P1.2为普通IO口 P1DIR |= BIT2; /设置P1.2为输出 P1OUT &=BIT2; /先把echo端口拉低 P1OUT |= BIT3; delay_us(15); P1OUT &=BIT3; delay_us(200); P1SEL |= BIT2; /设置P1.2为模块功能,即捕获源 P1DIR &=BIT2; /设置P1.2为输入 if(n=10) uint k; n=0; TACTL|=MC_0; /关定时器

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号