找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6275|回复: 5
收起左侧

基于STM32超声波测距代码

  [复制链接]
ID:437280 发表于 2018-12-3 21:45 | 显示全部楼层 |阅读模式
我所使用的测距模块是HC-SR04,C-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测
距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。

HC-SR04基本工作原理:
(1)采用IO口TRIG触发测距,给最少10us的高电平信呈。
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
(3)有信号返回, 通过IO口ECHO输出一个高电平, 高电平持续的时间就是超声波从发射到返回的时间。 测试距离=(高电平时间*声速(340M/S))/2。


程序编写思路是:1、配置好使用到的GPIO以及定时器;
2、给模块TRIG端口发送大于10us的高电平信号,当收、收到ECHO回响信号是,打开定时器开始定时;
3、当回响信号消失,关闭定时器;
4、通过定时器定时时间来确定距离。

上时序图表明你只需要提供一个 10uS以上脉冲触发信号,该模块内部将发出8个 40kHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。 公式: uS/58=厘米或者uS/148=英寸; 或是: 距离=高电平时间*声速( 340M/S) /2;建议测量周期为 60ms以上, 以防止发射信号对。
回响信号的影响

单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "key.h"
  5. #include "usart.h"
  6. #include "exti.h"
  7. #include "timer.h"
  8. #include "UltrasonicWave.h"


  9. int main(void)
  10. {
  11. // SystemInit();
  12.         delay_init(72);                  //延时初始化
  13.         NVIC_Configuration();
  14.         uart_init(9600);         //串口初始化
  15.         LED_Init();                            //LED端口初始化
  16.         KEY_Init();               //按键端口初始化
  17.         Timerx_Init(5000,7199);   //10Khz的计数频率,计数到5000为500ms
  18.         UltrasonicWave_Configuration();               //对超声波模块初始化

  19.         while(1)
  20.         {
  21.                 UltrasonicWave_StartMeasure();                //开始测距,发送一个>10us的脉冲,然后测量返回的高电平时间

  22.                 LED0=!LED0;
  23.                 delay_ms(1000);               
  24.                
  25.                
  26.         }
  27. }
复制代码

所有资料51hei提供下载:
STM32超声波测距.rar (300.81 KB, 下载次数: 478)

评分

参与人数 1黑币 +6 收起 理由
lgjdqm + 6 很给力!

查看全部评分

回复

使用道具 举报

ID:457109 发表于 2018-12-28 11:12 | 显示全部楼层
很给力
回复

使用道具 举报

ID:305372 发表于 2018-12-28 17:15 | 显示全部楼层
可以研究一下
回复

使用道具 举报

ID:862566 发表于 2020-12-18 08:39 | 显示全部楼层
很实用
回复

使用道具 举报

ID:446904 发表于 2021-3-13 11:19 | 显示全部楼层
可以用,很好
回复

使用道具 举报

ID:978407 发表于 2021-12-5 11:21 | 显示全部楼层
你好,我最近正在学习,我使用您的代码他显示一直都是0.85cm,不会变化,是我hc-sr04的问题吗1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表