玩转X-CTR100 l STM32F4 l HC-SR04超声波测距

我造轮子,你造车,创客一起造起来!更多塔克创新资讯【塔克社区 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/ 】

超声波测距模块HC-SR04可以测量2cm~400cm的距离,本文使用X-CTR100控制器定时器进行超声波距离测量。
原理
HC-SR04超声波测距模块可提供 2cm-400cm的非接触式距离感测功能,测距精度可达高到 3mm;模块包括超声波发射器、接收器与控制电路。
基本工作原理:
(1)采用IO 口TRIG 触发测距,给最少10us 的高电平信呈。
(2)模块自动发送8 个40khz 的方波,自动检测是否有信号返回;
(3)有信号返回,通过IO 口ECHO 输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2;
如下图接线,VCC 供5V电源, GND 为地线,TRIG 触发控制信号输入,ECHO 回响信号输出等四个接口端。


超声波时序图

以上时序图表明你只需要提供一个10uS 以上脉冲触发信号,该模块内部将发出8 个40kHz 周期电平并检测回波。一旦检测到有回波信号则输出回响信号。
回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。
公式:uS/58=厘米或者uS/148=英寸;或是:距离=高电平时间*声速(340M/S)/2;建议测量周期为60ms 以上,以防止发射信号对回响信号的影响。
1、此模块不宜带电连接,若要带电连接,则先让模块的 GND端先连接,否则会影响模块的正常工作。
2、测距时,被测物体的面积不少于 0.5平方米且平面尽量要求平整,否则影响测量的结果。
例程
本例程实现X-CTR100控制器测量超声波距离,并通过串口显示。
硬件说明
硬件资源:
- 串口UART1
- LH接口(作为普通IO使用)
- HC-SR04超声波测距模块(需自备)
硬件连接:
超声波模块连接LH接口,需要4根杜邦线,连接如下。
GND——GND
VCC——5V(红色),
Trig——D0
Echo——D1
软件生态
X-SOFT软件生态,X-API扩展文件如下。
ax_sr04.c——HC-SR04超声波测距源文件
ax_sr04.h——HC-SR04超声波测距头文件
测量方式采用边沿中断触发,Echo上升沿启动定时器,下降沿获取定时器值作为测量值,代码如下。
|
void EXTI1_IRQHandler(void) { //确认是否产生了EXTI Line中断 if (EXTI_GetITStatus(EXTI_Line1) != RESET) { if (GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_1) != 0) // 高电平回波 { TIM_Cmd(TIM7, ENABLE); } else { TIM_Cmd(TIM7, DISABLE); sr04_measurement = TIM_GetCounter(TIM7); TIM_SetCounter(TIM7, 0); } } //清除中断标志位 EXTI_ClearITPendingBit(EXTI_Line1); } |
定时器周期为1us,sr04_measurement为测量时间值,与距离正比,通过多次实际测量值求得系数。
距离 = sr04_measurement*0.173-4.51 ,模型一次函数,多次实际测量后求得系数,经过实测,测量结果准确。

接口函数
|
void AX_SR04_Init(void); //SR04超声波测距初始化 void AX_SR04_StartRanging(void); //SR04启动测量 uint32_t AX_SR04_GetDistance(void); //SR04获取距离值 |
软件说明
每隔500ms测量一次,循环测量,结果通过串口显示,主程序如下。
|
int main(void) { uint32_t temp;
//X-CTR100初始化 AX_Init(115200); printf("***X-CTR100 SR04超声波测距例程***\r\n\r\n");
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断优先级分组
//SR04初始化 AX_SR04_Init();
while (1) { //启动测量 AX_SR04_StartRanging(); AX_Delayms(500);
//获取距离值 temp = AX_SR04_GetDistance(); printf("当前距离:%d MM \r\n", temp); } } |
实现效果
测量结果显示如下,与实际距离对比,误差小于1CM。当然超声波的传播速度与温度有关系,如需获得更准确距离,需要进行温度补偿,尤其是远距离测距。

玩转X-CTR100 l STM32F4 l HC-SR04超声波测距的更多相关文章
- 玩转X-CTR100 l STM32F4 l ADC 模拟数字转换
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 AD转换接 ...
- 玩转X-CTR100 l STM32F4 l MPU6050加速度陀螺仪传感器
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 板载加速度 ...
- 玩转X-CTR100 l STM32F4 l X-CTR100与树莓派搭建机器人平台
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器与树莓派Linux系统 ...
- 玩转X-CTR100 l STM32F4 l 舵机控制
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器的舵机控制,X-CTR ...
- 玩转X-CTR100 l STM32F4 l DRV8825 A4988 步进电机控制
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器控制步进电机 ...
- 玩转X-CTR100 l STM32F4 l 基础例程printf、LED、蜂鸣器、拨码开关、位带操作
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器基础板载资源 ...
- 玩转X-CTR100 l STM32F4 l PS2无线手柄
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] SONY的PS2无线手柄是索尼游戏机的遥控手柄,控制 ...
- 玩转X-CTR100 l STM32F4 l DSP指令集性能测试
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 DSP库的 ...
- 玩转X-CTR100 l STM32F4 l FPU单精度浮点性能测试
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器如何开启ST ...
- 玩转X-CTR100 l STM32F4 l RNG硬件随机数发生器
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 STM32F4硬件随 ...
随机推荐
- 试着用React写项目-利用react-router解决跳转路由等问题(三)
转载请注明出处:王亟亟的大牛之路 本来想一下子把路由的接下来的内容都写完的,但是今天白天开了会,传了些代码打了个包,就被耽搁了 这一篇来讲一下 IndexLink和 onlyActiveOnIndex ...
- Slf4j+LogBack使用参考
博文参考: 最简例子:https://blog.csdn.net/johnson_moon/article/details/77532583 Web中配置:https://blog.csdn.net/ ...
- 谈谈java中的final关键字
知识点:final(最终的)关键字修饰类.方法.属性 1.final修饰类:那么这个就无法被继承,如String类.StringBuffer类.System类 2.final修饰方法:被修饰的方法不能 ...
- Java中引用的详解
Java中没有指针,到处都是引用(除了基本类型).所以,当然,你肯定知道java的引用,并用了很久,但是是不是对此了解地比较全面?而这些引用有什么作用,且有什么不同呢?Java中有个java.lang ...
- Qt5_自定义处理Windows消息函数
ZC:(1).“#include <QAbstractNativeEventFilter>”,(2).貌似 返回True(意思是 处理过了) 返回False(意思是还需要继续处理) 1.参 ...
- F4+2 团队项目软件设计方案
目录 1引言 1.1编写目的 1.2背景 1.3定义 1.4参考资料 2总体设计 2.1需求规定 2.2运行环境 2.3基本设计概念和处理流程 2.4功能描述 2.5功能器求与程序的关系 2.6人工处 ...
- Redis 安装到linux系统
下载地址 : http://download.redis.io/releases/redis-3.0.3.tar.gz ). tar -zxvf redis-.tar.gz -C /usr/share ...
- Windows Update 自动更新 设定 被锁(变灰)
估计是McAfee自动更改掉的. 真TM烦人. 方法 1 不过找到了回复方法了: http://www.askvg.com/how-to-change-windows-update-settings- ...
- LeetCode--100--相同的树
问题描述: 给定两个二叉树,编写一个函数来检验它们是否相同. 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的. 示例 1: 输入: 1 1 / \ / \ 2 3 2 3 [1,2, ...
- python-day18--匿名函数
一.lambda表达式 1.匿名函数的核心:一些简单的需要用函数去解决的问题,匿名函数的函数体只有一行 2.参数可以有多个,用逗号隔开 3.返回值和正常的函数一样可以是任意的数据类型 4.练习: 请把 ...