0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于STM32F411的cm级超声波测距系统及完整代码

芯情观察猿 来源:芯情观察猿 作者:芯情观察猿 2022-08-15 09:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本项目通过HC-SR04超声波传感器STM32F411开发板,以精确到cm的精度测量目标物体的距离。项目BOM表如下:

STM32F411RE开发板 x1

HC-SR04超声波传感器 x1

跳线 若干


其中,HC-SR04超声波传感器可以0.3cm精度读取2-400cm范围距离,而且超声波发射器和接收器组合在一起,适合大多数个人爱好项目。主要性能包括:

工作电源:5VDC

工作电流:15mA

工作频率:40KHz

最大距离:4m

最小距离:2cm

测量角度:15度

分辨率:0.3cm

触发输入信号:10uS TTL脉冲

回升输出信号:TTL脉冲,与测量成距离成正比


pYYBAGL5nQaANnutAAG4dAhCugA128.png

当传感器接收到一个触发信号,就发出一个40KHz突发信号。该信号通过空气传播,在撞到目标物体后返回传感器,再由传感器根据一定算法得出被测物体的距离。

HC-SR04传感器与STM32的连接电路比较简单,传感器Vcc与STM32板的5V连接,两个板子的GND引脚连接,传感器的Trig 引脚与开发板的A0 (PA0) 连接,echo引脚与开发板的A1 (PA1)引脚连接。


poYBAGL5nQeAYCX7AAQV4inxFGQ910.png

按照上述电路图连接妥当后,将以下代码上传到Arduino IDE。


#include "stm32f4xx.h"

// Device header

//macros for trigger pin

#define Trig_high GPIOA->BSRR=GPIO_BSRR_BS_0 // turn on PA0 (trig pin)

#define Trig_low GPIOA->BSRR=GPIO_BSRR_BR_0 // turn off PA0 (trig pin)

uint32_t duration;

float distance;

//prototypes of the used function

void delaymS(uint32_t ms);

void delayuS(uint32_t us);

uint32_t read_echo(uint32_t timeout);

int main(void)

{

RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; //enable GPIOA Clock

GPIOA->MODER |= (1<<0); //set PA0 to Output

//configure Timer1 to generate micorseconds delay

RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; /*Enable TIM3 clock*/

TIM1->PSC = 16 -1; /* 16 000 000 /16 = 1000 000*/

TIM1->ARR = 1; /* 1000 000 /1 = 1000000*/

TIM1->CNT =0;

TIM1->CR1 =1;

while(1)

{

Trig_low; //turn off trig

delayuS(10); //wait 4uS

Trig_high; //turn on trig

delayuS(10);

Trig_low;

duration=read_echo(400000); //measure the time of echo pin

distance=duration/58; //distance=duration/2*SOUND_SPEED

delaymS(1000); //delay for 1 second between each read

}

}

void delaymS(uint32_t ms) //delay for certain amount in milliseconds

{

SysTick->LOAD=16000-1;

SysTick->VAL=0;

SysTick->CTRL=0x5;

for (int i=0;i;i++)<>

{

while(!(SysTick->CTRL &0x10000)){}

}

SysTick->CTRL=0;

}

void delayuS(uint32_t us) //delay for certain amount in microseconds

{

for(int i =0;i;i++){<>

while(!(TIM1->SR & 1)){} /*wait for UIF set*/

TIM1->SR &= ~1;

}

}

uint32_t read_echo(uint32_t timeout)

{

uint32_t duration;

while(!((GPIOA->IDR)&GPIO_IDR_ID1)){duration++;delayuS(1);

if(duration>timeout){return 0;}

}

duration=0;

while((GPIOA->IDR&GPIO_IDR_ID1)){duration++;delayuS(1);if(duration>timeout){return 0;} }

return duration;

}

如果一切正常,就可以开始测量物体的距离了,可通过serial monitor观测结果。如果为了方便携带,也可连接OLED之类的显示器件。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 超声波
    +关注

    关注

    63

    文章

    3325

    浏览量

    146041
  • DIY
    DIY
    +关注

    关注

    176

    文章

    900

    浏览量

    360179
  • 激光雷达
    +关注

    关注

    982

    文章

    4548

    浏览量

    197083
  • LIDAR
    +关注

    关注

    11

    文章

    368

    浏览量

    31591
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CX20106A超声波测距模块盲区较大,与预期情况不符。

    大家好,当前我在做超声波接收测距模块的相关设计,期望通过发射与接收的时延(ToF)实现测距功能。 在设计之初,有发现蓝桥杯使用了cx20106a这一芯片作为信号处理单元,所以我这边想抄板下来做测试
    发表于 04-20 17:22

    STM32F103驱动HCSR04超声波测距显示

    超声波模块在电子DIY作品中实现小车避障测距等方面均应用广泛,在大学生智能车DIY爱好者中尤为显眼。
    的头像 发表于 04-11 16:54 784次阅读
    <b class='flag-5'>STM32F</b>103驱动HCSR04<b class='flag-5'>超声波</b><b class='flag-5'>测距</b>显示

    探索MAXQ7667:16位RISC微控制器超声波测距系统的卓越性能

    探索MAXQ7667:16位RISC微控制器超声波测距系统的卓越性能 在电子设计领域,高精度的测距系统一直是众多应用的核心需求。今天,我们将
    的头像 发表于 04-09 17:10 589次阅读

    MAXQ7667:16位RISC微控制器超声波测距系统评测

    MAXQ7667:16位RISC微控制器超声波测距系统评测 在电子设计领域,超声波测距系统凭借其
    的头像 发表于 04-04 10:05 228次阅读

    基于STM32F103C8T6的智能超声波测距尺:从原理到代码完整实现

    连接、时序逻辑以及核心代码的实现。 一、硬件连接与选型 核心硬件: - MCU: STM32F103C8T6 (蓝 pill 最小系统板) - 传感器: HC-SR04 超声波模块
    发表于 02-28 02:21

    无线超声波测距传感器:精准感知,开启智能测距新时代

    在科技飞速发展的今天,距离测量不再局限于传统的卷尺、激光等工具,无线超声波测距传感器凭借其独特的优势,正逐渐成为工业自动化、智能家居、汽车安全等领域的“智慧之眼”,为我们的生活和工作带来前所未有
    的头像 发表于 09-09 08:35 1014次阅读

    【Milk-V Duo S 开发板免费体验】DuoS 超声波测距 OLED 显示

      上篇搭建开发环境并点亮了 OLED 显示屏,详见: https://bbs.elecfans.com/jishu_2498771_1_1.html   本篇使用 DuoS 驱动超声波测距模块
    发表于 08-22 03:55

    超声波测距换能器:工业与生活中的测量利器

    在科技飞速发展的今天,各类传感器在各个领域发挥着至关重要的作用。其中,超声波测距换能器凭借其独特的优势,成为了距离测量领域的明星产品。无论是工业生产中的精密检测,还是日常生活中的智能应用,超声波
    的头像 发表于 07-02 16:22 1003次阅读
    <b class='flag-5'>超声波</b><b class='flag-5'>测距</b>换能器:工业与生活中的测量利器

    超声波测距换能器:工业与生活中的测量利器

    感知周围环境,识别家具、墙壁和障碍物的位置,规划合理的清扫路径,实现自主避障和高效清洁。 智能安防:在智能安防系统中,可用于入侵检测和人体感应。当有人进入监测区域时,超声波测距换能器能够及时检测到距离
    发表于 07-02 16:20

    超声波清洗机是什么,它如何通过超声波振动来清洗物品?

    超声波清洗机的工作原理超声波清洗机是一种广泛用于清洗物品的设备,它利用超声波振动来去除污垢和杂质。本文将深入探讨超声波清洗机的工作原理以及它如何通过
    的头像 发表于 06-30 16:59 1443次阅读
    <b class='flag-5'>超声波</b>清洗机是什么,它如何通过<b class='flag-5'>超声波</b>振动来清洗物品?

    超声波换能器:原理与多领域应用解析

    到体内结石部位,利用超声波的能量使结石破碎,然后通过人体自然排泄系统排出体外,避免了传统手术的创伤 。此外,超声波还可用于促进伤口愈合、治疗慢性疼痛等领域,为患者提供了更加安全、有效的治疗手段
    发表于 06-28 15:09

    超声波水下测距换能器:探索水下世界的“千里眼”

    提供重要的数据支持。 (三)水下机器人导航 对于水下机器人来说,超声波水下测距换能器是其导航系统的重要组成部分。它可以实时测量机器人与周围障碍物的距离,帮助机器人在复杂的水下环境中安全地航行,避免碰撞
    发表于 06-26 10:43

    超声波换能器--声波世界的 “神奇魔法师”

    ,守护每一个工业产品的质量生命线。 水下探测领域:神秘的探索者 在水下探测方面,超声波换能器是声呐系统的重要组成部分,如同一位神秘的探索者,助力我们揭开海洋的神秘面纱。它可以发射超声波并接收从水下物体
    发表于 06-11 17:30

    超声波清洗的原理是什么?超声波清洗是如何起作用的?

    超声波清洗是一种利用高频超声波振动来清洗物体表面和难以达到的细微部分的清洁技术。其工作原理基于声波的物理特性和声波对液体中微小气泡的影响。以下是超声
    的头像 发表于 05-26 17:21 4350次阅读
    <b class='flag-5'>超声波</b>清洗的原理是什么?<b class='flag-5'>超声波</b>清洗是如何起作用的?

    超声波频率和功率对在线式超声波清洗的影响如何?

    在线式超声波清洗是一种高效、环保的清洗方式,在多个行业得到了广泛应用。然而,超声波频率和功率是影响清洗效果和清洗速度的关键因素。在本文中,我们将从理论和实践两个方面分析超声波频率和功率对在线式
    的头像 发表于 05-09 16:39 1324次阅读
    <b class='flag-5'>超声波</b>频率和功率对在线式<b class='flag-5'>超声波</b>清洗的影响如何?