超声波测距仪设计
摘 要:本文利用超声波传输中距离与时间的关系,采用单片机进行控制及数据处理,设计出了能精确测
量两点间距离的超声波测距仪。
关键词:超声波 单片机 测距
中图分类号:TP29 文献标识码:A 文章编号:
在工程实践中,超声波由于指向性强、能量消耗缓慢且在介质中传播的距离较远,因而经常用于距离的测量。利用超声波检测往往比较迅速、方便,且计算简单、易于做到实时控制,在测量精度方面也能达到工业实用的要求
1 系统总体设计
US-100超声波传感器
ALIENTEK战 舰STM32 开发板(单片机)
向串口返回信息
图 1系统总体设计框图
Fig.1 Diagram of the overall system design
LCD 显示蜂鸣器报警 系统总体设计框图如图1,根据超声波发射与接收器模块在工作时发射超声波到接收反射回的回波后,并将发射超声波与接收回波的状态信号传输到单片机,再经过单片机内部程序的处理,并将计算结果以数据的形式由单片机I/O接口传输到LCD液晶显示屏并显示出测量结果的数据,同时由软件控制测量距离在某一临界值时单片机会使蜂鸣器报警。
2 硬件设计
2.1 ALIENTEK探索者STM32F407开发板
- 3 -
2.2 US-100超声波收发模块
该超声波收发模块可自己产生40kHz的方波,并经放大电路驱动超声波发射探头发射超声波,发射出去的超声波经障碍物反射后由超声波接收探头接收。经接收电路的检波放大,积分整形,在ECHO引脚上产生方波脉冲,该脉冲宽度与被测距离成线性关系。具体过程如图2-1所示。
图2-1 US-100超声波收发模块工作时序图
图2-1表明:只需要在Trig/TX管脚输入一个10us以上的高电平,系统便可发出8个40KHZ的超声波脉冲,然后检测回波信号。模块将距离值转化为340m/s时的时间值的2倍,通过Echo端输出一个高电平,可根据此高电平的持续时间来计算距离值。即距离值为:(高电平时间*340m/s)/2
使用US-100超声波收发模块进行距离测量测量时,单片机只需要输出触发信号,并监视回响引脚,通过定时器计算回响信号宽度,并换算成距离即可。该其参数指标如下表所示。
3 软件设计
3.1 主程序设计
初始化程序 进入while循环
3.2 外部中断
超声波测量触发 距离小于150mm 计算距离且显示 蜂鸣器报警 返还串口数据
外部中断入口 读取定时器的值 置测量成功 返回
- 5 -
3.3程序
#include \"led.h\" #include \"delay.h\" #include \"sys.h\" #include \"usart.h\" #include \"timer.h\" #include \"beep.h\" #include \"lcd.h\"
extern u8 TIM5CH1_CAPTURE_STA; //输入捕获状态 extern u16 TIM5CH1_CAPTURE_VAL; //输入捕获值
int main(void) {
u32 temp1=0; int i=0;
BEEP_Init(); //初始化蜂鸣器端口 delay_init(); //延时函数初始化 NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 uart_init(9600); //串口初始化为9600 LED_Init(); //LED端口初始化 GPIOA1_Init(); //初始化pa1.pa3 LCD_Init();
TIM5_Cap_Init(0XFFFF,72-1); //以1Mhz的频率计数 POINT_COLOR=RED; LCD_ShowString(60,50,200,16,16,\"EXAM\"); LCD_ShowString(60,70,200,16,16,\"ChaoShengBoCeJu\"); POINT_COLOR=BLACK;
LCD_ShowString(60,90,200,16,16,\"HuangHao\"); LCD_ShowString(60,110,200,16,16,\"20121791\"); LCD_ShowString(60,130,200,16,16,\"TheDistense:0.000mm\"); while(1) {
GPIO_SetBits(GPIOA,GPIO_Pin_1); delay_us(25);
GPIO_ResetBits(GPIOA,GPIO_Pin_1); if(TIM5CH1_CAPTURE_STA&0X80) //成功捕获到了一次上升沿 { temp1=TIM5CH1_CAPTURE_STA&0X3F; temp1*=65536; //溢出时间总和 temp1+=TIM5CH1_CAPTURE_VAL; //得到总的高电平时间 temp1=temp1*0.17; //mm LCD_ShowNum(155,130,temp1,5,16); delay_ms(20); TIM5CH1_CAPTURE_STA=0; //开启下一次捕获 }
delay_ms(100); i++; if(temp1<150) { BEEP=1; LED0=0; } else { BEEP=0; LED0=1; } if(i%20==0) { printf(\"Distance:%d cm\\r\\n\ } } }
4 结 论
实验利用超声波传输中的距离与时间的关系,采用了单片机对超声波仪进行控制及数据处理,设计出了能够精确测量两点间距离的超声波测距仪。其中采用STM32F407开发板与US-100超声波收发模块,控制超声波的发出和接受,并且计算距离。本次设计的超声波测距仪,具有迅速、操作方便、计算简单、易于做到实时控制,并且测量精度较高的特点,在理论分析上达到了本次课设的要求。
通过本次设计,对嵌入式系统这门课有了进一步的了解。无论是在硬件连接方面还是在软件编程方面。通过上网搜集相关的资料,最后完成了设计与报告,自己动手完成实验有一种特殊的收获感。
参考文献:
1.刘洪涛 嵌入式系统技术与设计 人民邮电出版社 2012 2.李全利 单片机原理及应用技术 高等教育出版社 2009
3.全国大学生电子设计 电子系统设计实践 华中科技大学出版社 2005 4. (http:/www.baidu.com)
因篇幅问题不能全部显示,请点此查看更多更全内容