- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于US―100超声波测距仪的设计
基于US―100超声波测距仪的设计
摘 要:由STM32作为控制器,选用US-100超声波模块作为传感器,利用声速测量距离。利用TFTLCD显示屏和上位机作为结果显示窗口,当测量距离小于150mm时,蜂鸣器报警。
关键词:ARM;US-100超声波测距模块;声速测距
1 引言
超声波指向性强,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物 位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求。
2 系统总体设计
系统总体设计框图如图1,可以看到,超声波测距主要是由STM32控制器,TFTLCD显示屏,上位机作为显示,US-100超声波测距模块作为传感器。当控制器给传感器开始工作的信号时,传感器开始工作,并返回测试的数据,通过TFTLCD显示屏和上位机显示测量结果。当测量距离小于150mm时,蜂鸣器报警。
3 硬件设计
3.1 STM32F103控制器
STM32F1系列属于中低端的32位ARM微控制器,其内核是Cortex-M3。工作频率可高达72Mhz,内置高速64KB SRAM存储器;外设包512KB FLASH、2 个基本定时器、4个通用定时器、2个高级定时器、3个SPI、2个IIC、5个串口、1个USB、1个CAN、3个12位 ADC、1个12位 DAC、1个SDIO接口、1个FSMC 接口以及112个通用IO口。
3.2 US-100 超声波测距模块接口
US-100 超声波测距模块可实现 2cm~4.5m 的非接触测距功能,拥有 2.4~5.5V 的宽电压输入范围,静态功耗低于 2mA,自带温度传感器对测距结果进行校正,同时具有 GPIO,串口等多种通信方式,内带看门狗,工作稳定可靠。
将实物与开发板连接如图2所示:(US-100正面从左向右一次为1-5口)
4 软件设计
4.1 总体软件设计
测距的过程可以分为三个部分,分别为:控制器资源配置、 US-100 的时序模拟测量过程及数据处理、显示及判断测量距离是否小于150mm。
4.1.1 控制器的资源配置
#ifndef __TIMER_H #define __TIMER_H
#include sys.h
void GPIOA1_Init(void); void GPIOA3_Init(void);
void TIM3_Int_Init(u16 arr,u16 psc); void TIM3_PWM_Init(u16 arr,u16 psc);
void TIM5_Cap_Init(u16 arr,u16 psc); void TIM4_Cap_Init(u16 arr,u16 psc);
#endif
定时器5通道1输入捕获配置:
void GPIOA1_Init(void)
初始化定时器5 TIM5:
void TIM5_Cap_Init(u16 arr,u16 psc)
中断分组初始化:
NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn; //TIM3中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //先占优先级2级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //从优先级0级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
NVIC_Init(NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设
TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);//,允许CC1IE捕获中断TIM_Cmd(TIM5,ENABLE ); //使能定时器5
定时器5中断服务程序:void TIM5_IRQHandler(void)
在主程序中调用定时器:TIM5_Cap_Init(0XFFFF,72-1);//以1Mhz的频率计数
4.1.2 US-100 的时序模拟测量过程
由TRIG_Send 发送高电平,延时20us:
GPIO_SetBits(GPIOA,GPIO_Pin_1);
delay_us(20);
GPIO_ResetBits(GPIOA,GPIO_Pin_1);
根据时间
原创力文档


文档评论(0)