你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

HC-SR04超声波测距模块调试

[复制链接]
贺工 发布时间:2017-10-22 18:53
1:HC-SR04超声波测距原理
超声波模块.PNG
HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。
基本工作原理:
(1)采用IO口TRIG触发测距,给最少10us的高电平信号。
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。
测试距离=(高电平时间*声速(340M/S))/2


2:超声波时序图
超声波时序图.PNG
以上时序图表明你只需要提供一个 10uS以上脉冲触发信号,该模块内部将
发出8个 40kHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号。
回响信号的脉冲宽度与所测的距离成正比。 由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。


3:软件控制HC-SR04超声波模块
01:硬件说明
超声波模块测距触发引脚Trig--->PC6
超声波模块测距信号返回引脚Echo--->PC7

02:软件实现
实现方法:20ms触发一次测距,在定时器100us的中断里面计模块Echo返回信号高电平的时间,然后通过高电平时间*声速(340m/S)/2计算出距离,并串口打印显示。
注意:20ms触发一次测距,说明最远只能测3.4m。
主要函数说明:
//控制引脚初始化
void ULsonicGPIO_Init(void);
//测距使能控制
void ULsonic_Start(void);
//测距函数
void ULsonic_Measure(void);
具体源代码:
main.c文件
main.PNG


ultrasonic.h文件
u_头文件.PNG


ultrasonic.c文件
u_1.PNG
u_2.PNG


time.c文件
t2_1.PNG
t2_2.PNG


3:实验测试
01:实验平台:
pt.PNG
02:测试结果:

测试结果.PNG


更多精彩内容请微信扫码关注
001206kzn4bs9bi2znatb2.png
之前发过的帖子
03:轻松搞定串口通信隔离
04:STM32中断优先级管理

05:STM32单片机SWJ口引脚释放
06:真的明白Code、RO-data、RW-data和ZI-data吗?


收藏 3 评论7 发布时间:2017-10-22 18:53

举报

7个回答
anywill 回答时间:2017-10-23 10:58:39
本帖最后由 anywill 于 2017-10-23 14:05 编辑

//nucleo+HC-SR04超声波模块
01:硬件说明上的
#include "mbed.h"
#include "ultrasonic.h"

void dist(int distance)
{
    //put code here to happen when the distance is changed
    printf("Distance changed to %dmm\r\n", distance);
}

ultrasonic mu(D8, D9, .1, 1, &dist);    //Set the trigger pin to D8 and the echo pin to D9
                                        //have updates every .1 seconds and a timeout after 1
                                        //second, and call dist when the distance changes

int main()
{
    mu.startUpdates();//start mesuring the distance
    while(1)
    {
        //Do something else here
        mu.checkDistance();     //call checkDistance() as much as possible, as this is where
                                //the class checks if dist needs to be called.
    }
}


贺工 回答时间:2017-10-23 11:56:24
anywill 发表于 2017-10-23 10:58
//nucleo+HC-SR04超声波模块
01:硬件说明上的
#include "mbed.h"

各有各的写法吧
贺工 回答时间:2017-10-23 12:30:31
还有一种控制方法:
定时器一路PWM控制触发以及触发周期,超声波返回信号高电平时间用定时器通道捕捉功能获取
五哥1 回答时间:2017-10-24 12:19:31
实际上有三种方法
贺工 回答时间:2017-10-25 09:22:53
五哥1 发表于 2017-10-24 12:19
实际上有三种方法

会好一种就好了
sh97 回答时间:2018-7-29 22:20:28
请问Task20ms_Flg在哪里定义
a2450317232 回答时间:2018-10-29 19:22:21
萌新请教下,pbdata.h是直接用就行了是吗?这里没详细内容额,求解答,感激

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版