我造轮子,你造车,创客一起造起来!更多塔克创新资讯【塔克社区 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超声波测距的更多相关文章

  1. 玩转X-CTR100 l STM32F4 l ADC 模拟数字转换

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 AD转换接 ...

  2. 玩转X-CTR100 l STM32F4 l MPU6050加速度陀螺仪传感器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 板载加速度 ...

  3. 玩转X-CTR100 l STM32F4 l X-CTR100与树莓派搭建机器人平台

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器与树莓派Linux系统 ...

  4. 玩转X-CTR100 l STM32F4 l 舵机控制

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器的舵机控制,X-CTR ...

  5. 玩转X-CTR100 l STM32F4 l DRV8825 A4988 步进电机控制

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器控制步进电机 ...

  6. 玩转X-CTR100 l STM32F4 l 基础例程printf、LED、蜂鸣器、拨码开关、位带操作

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器基础板载资源 ...

  7. 玩转X-CTR100 l STM32F4 l PS2无线手柄

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] SONY的PS2无线手柄是索尼游戏机的遥控手柄,控制 ...

  8. 玩转X-CTR100 l STM32F4 l DSP指令集性能测试

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 DSP库的 ...

  9. 玩转X-CTR100 l STM32F4 l FPU单精度浮点性能测试

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器如何开启ST ...

  10. 玩转X-CTR100 l STM32F4 l RNG硬件随机数发生器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 STM32F4硬件随 ...

随机推荐

  1. CodeForces Round #516 Div2 题解

    A. Make a triangle! 暴力... 就是给你三个数,你每次可以选一个加1,问最少加多少次能构成三角形 #include <bits/stdc++.h> #define ll ...

  2. 论文笔记之:Human-level control through deep reinforcement learning

    Human-level control through deep reinforcement learning Nature 2015 Google DeepMind Abstract RL 理论 在 ...

  3. .Net Core集成Office Web Apps(二)

    想要使用OWA需要一台单独的服务器来部署,这对很多人造成困难.而写该文的目的是为了分享有个OWA的集成步骤,它不仅适用于.Net开发环境,其它语言也是一样的,只要实现了需要的服务接口.并且该文不局限与 ...

  4. 【Coursera】Internet History 小结

    前言 终于看完了接近一半课程的 History 的内容. 在这两周的时间里面,了解了互联网的起源,发展,以及现在互联网的情况.听了许多故事,有让人会心一笑的,也有令人感慨万千的.见到了许多令人景仰的科 ...

  5. Java 注解的概念与种类

    Java 注解的概念与种类 一,什么是注解 注解和XML文件都是常用的,对web项目进行配置性描述的方式. 举个最简单的例子,对于一个Servlet,比如LoginServlet,采用如下方式: @W ...

  6. shuoj 418 丢史蒂芬妮(素数筛+sg函数)

    丢史蒂芬妮 代码: #include<bits/stdc++.h> using namespace std; +; int SG[N][N]; bool S[N]; vector<i ...

  7. 算法笔记--2-sat

    强连通分量的应用,详见<挑战程序设计>P324 例题1:HDU Peaceful Commission 思路:强连通分量分解,看有没有两个同一个国家的代表在一个强连通分量里,如果有,就是N ...

  8. Object.defineProperty方法 使用

    Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象. 语法: Object.defineProperty(obj, pr ...

  9. Unity中的文件

    Unity中的文件大致分为一下几类: 1.资源文件: 导入后,除非是修改,否则不会变化的文件.例如:fbx文件.贴图文件.音频文件.视频文件.动画文件等. 这些文件在导入到Unity的时候,都会进行转 ...

  10. ArcGIS API for Windows Phone开发实例(4):点击查看超市信息 --- 关于使用InforWindow

    菩提老王的葡萄架:作品 地址:http://blog.newnaw.com/?p=696