单片机学习小组
登录
直播中
张燕
8年用户
1464经验值
私信
关注
基于STM32的超声波传感器的设计过程是怎样的
开启该帖子的消息推送
STM32
超声波传感器
HC-SR04
超声波传感器的原理是什么?
基于
STM32
的超声波传感器的设计过程是怎样的?
回帖
(1)
李娟
2022-1-24 14:38:44
上学期写的嵌入式系统课程实验报告中超声波传感器设计部分, 在此分享一下~
1. 实验原理
超声波传感器采用的是HC-SR04,具有VCC、GND、Trig、Echo四个引脚,其使用方法为:将Trig 设置为高电平并保持至少10us,传感器将发出 8 个脉冲的声波。对于声波产生回声所需的整个时间内, Echo 为高电平。测量该高电平时间即可知经过的时间,则可计算障碍物的距离。
测量Echo 为高电平的时间是利用STM32的通用定时器进行输入捕获,测量得到的高电平时间通过公式:距离 = Thigh *340/2 (m) ,其中Thigh 单位为秒(s), 340米/秒(m/s)为声速。
2. 设计分析
由STM32F4xx数据手册可知,所采用的板子有TM2-TM5四个通用定时器,该设计中采用TIM3定时器(16位)。它具有输入捕获模式、输出比较模式、单脉冲模式等多种功能模式,其中,输入捕获模式可以设置捕获上升沿或下降沿对输入信号进行捕获,发生捕获事件时,当前计数值可被获得,如果已使能中断则可触发中断。本设计采用输入捕获模式对Echo信号进行捕获与计时。
根据HC-SR04数据手册得知,该超声波传感器射程为2cm-4m,代入距离公式中可得Thigh的范围大致为0.0235~ 0.0002857s,即1/Thigh的范围在42.5-8500Hz之间,故选择计数器时钟1MHz即可满足要求。
3. 设计过程
1.
用 STM32CubeMX
配置对应引脚生成项目代码。
1)配置引脚
在左端设置TIM3为内部时钟输入,并使能通道1,可以看到右边PA6变为绿色,在电路图中寻找PA6对应的外部引脚编号为D12,该引脚将连接超声波传感器的Echo引脚,为方便器件连接,选择D12相邻的外部引脚D11作为输出与Trig连接,故配置D11相应的引脚PA7为GPIO输出。引脚配置图与电路图见下方所示。
图1 引脚配置图
图2 引脚对应电路图
2)配置计时器TIM3参数
板子没有焊外部晶振,故时钟源选用HIS,定时器时钟频率为16MHz。如下图所示。
图3 时钟配置图
定时器TIM3参数配置如下图所示,预分频系数位15,即TIM3定时器最后频率为16 MHz/(15+1)=1MHz;最大计数值为0xffff(65535),并在NVIC中开启中断。
图4 TIM3参数配置图
3)生成项目代码
2.
用Keil
打开生成的项目代码,增加处理逻辑代码
1)首先定义捕获次数capture_cnt,捕获计数值capture_value1,capture_value2,及高电平时间hightime与距离distance。
2)查看HAL库中关于TIM的函数,在主函数的while 中添加以下代码。根据捕获次数进行不同操作。当捕获次数为0时,使能TIM3中断模式的输入捕获,并设置其触发捕获方式为上升沿触发;当发送捕获时,进入捕获中断函数(其中中断函数为自动生成的,里面调用了触发回调函数,故可直接在回调函数中处理),在捕获回调函数中获取当前计数值赋给capture_value1,再更改捕获方式为下降沿触发;当再次发生捕获时,将当前计数值赋给capture_value2,然后停止输入捕获。在主函数中,根据capture_value1和capture_value2直接的差值即可得到时间,再代入距离公式便求得距离。
3)在主函数的while循环中打开串口接收,判断接收到的数据为00时,进行距离测量:给超声波模块的Trig引脚一个高电平。
上学期写的嵌入式系统课程实验报告中超声波传感器设计部分, 在此分享一下~
1. 实验原理
超声波传感器采用的是HC-SR04,具有VCC、GND、Trig、Echo四个引脚,其使用方法为:将Trig 设置为高电平并保持至少10us,传感器将发出 8 个脉冲的声波。对于声波产生回声所需的整个时间内, Echo 为高电平。测量该高电平时间即可知经过的时间,则可计算障碍物的距离。
测量Echo 为高电平的时间是利用STM32的通用定时器进行输入捕获,测量得到的高电平时间通过公式:距离 = Thigh *340/2 (m) ,其中Thigh 单位为秒(s), 340米/秒(m/s)为声速。
2. 设计分析
由STM32F4xx数据手册可知,所采用的板子有TM2-TM5四个通用定时器,该设计中采用TIM3定时器(16位)。它具有输入捕获模式、输出比较模式、单脉冲模式等多种功能模式,其中,输入捕获模式可以设置捕获上升沿或下降沿对输入信号进行捕获,发生捕获事件时,当前计数值可被获得,如果已使能中断则可触发中断。本设计采用输入捕获模式对Echo信号进行捕获与计时。
根据HC-SR04数据手册得知,该超声波传感器射程为2cm-4m,代入距离公式中可得Thigh的范围大致为0.0235~ 0.0002857s,即1/Thigh的范围在42.5-8500Hz之间,故选择计数器时钟1MHz即可满足要求。
3. 设计过程
1.
用 STM32CubeMX
配置对应引脚生成项目代码。
1)配置引脚
在左端设置TIM3为内部时钟输入,并使能通道1,可以看到右边PA6变为绿色,在电路图中寻找PA6对应的外部引脚编号为D12,该引脚将连接超声波传感器的Echo引脚,为方便器件连接,选择D12相邻的外部引脚D11作为输出与Trig连接,故配置D11相应的引脚PA7为GPIO输出。引脚配置图与电路图见下方所示。
图1 引脚配置图
图2 引脚对应电路图
2)配置计时器TIM3参数
板子没有焊外部晶振,故时钟源选用HIS,定时器时钟频率为16MHz。如下图所示。
图3 时钟配置图
定时器TIM3参数配置如下图所示,预分频系数位15,即TIM3定时器最后频率为16 MHz/(15+1)=1MHz;最大计数值为0xffff(65535),并在NVIC中开启中断。
图4 TIM3参数配置图
3)生成项目代码
2.
用Keil
打开生成的项目代码,增加处理逻辑代码
1)首先定义捕获次数capture_cnt,捕获计数值capture_value1,capture_value2,及高电平时间hightime与距离distance。
2)查看HAL库中关于TIM的函数,在主函数的while 中添加以下代码。根据捕获次数进行不同操作。当捕获次数为0时,使能TIM3中断模式的输入捕获,并设置其触发捕获方式为上升沿触发;当发送捕获时,进入捕获中断函数(其中中断函数为自动生成的,里面调用了触发回调函数,故可直接在回调函数中处理),在捕获回调函数中获取当前计数值赋给capture_value1,再更改捕获方式为下降沿触发;当再次发生捕获时,将当前计数值赋给capture_value2,然后停止输入捕获。在主函数中,根据capture_value1和capture_value2直接的差值即可得到时间,再代入距离公式便求得距离。
3)在主函数的while循环中打开串口接收,判断接收到的数据为00时,进行距离测量:给超声波模块的Trig引脚一个高电平。
举报
更多回帖
rotate(-90deg);
回复
相关问答
STM32
超声波传感器
HC-SR04
怎样
去编写HC-SR04
超声波
传感器
的程序呢
2021-10-18
1694
超声波
传感器
的制作
2016-03-30
23280
超声波
传感器
应用的创新及发展
2020-08-06
2435
超声波
风速
传感器
的工作原理
2020-08-12
1640
超声波
传感器
在航模运行中的应用介绍
2021-01-07
2187
超声波
传感器
如何适应您的无线
传感器
网络?
2021-05-18
1756
超声波
测距
2016-04-18
5469
超声波
传感器
在自动驾驶环境感知下的应用有哪些
2020-08-18
2721
超声波
式水位
传感器
模块可以用于家用电器吗?
2022-07-10
16140
超声波
传感器
测距原理是什么
2020-05-20
2637
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分