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

    文章

    3243

    浏览量

    144095
  • DIY
    DIY
    +关注

    关注

    176

    文章

    896

    浏览量

    357633
  • 激光雷达
    +关注

    关注

    978

    文章

    4377

    浏览量

    195378
  • LIDAR
    +关注

    关注

    11

    文章

    362

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    什么是超声波原理的液位传感器?

    超声波液位传感器是一种基于超声波反射测距原理的非接触式液位测量设备,核心功能是通过发射与接收超声波信号,计算声波传播时间差来反推容器内液位高
    的头像 发表于 11-25 11:32 514次阅读
    什么是<b class='flag-5'>超声波</b>原理的液位传感器?

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

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

    【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 580次阅读
    <b class='flag-5'>超声波</b><b class='flag-5'>测距</b>换能器:工业与生活中的测量利器

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

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

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

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

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

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

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

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

    一文读懂超声波换能器:原理、应用与未来趋势

    、交通监测等众多领域有着广泛的应用 。在气体检测中,通过超声波的传播速度和频率变化来实现对气体种类和流量的检测;在遥测遥控中,通过远地发射超声波由装在需要控制系统上的接收换能器所接收,把声信号转变成电信号
    发表于 06-23 16:51

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

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

    低功耗STM32F411开发板(原理图+PCB源文件+官方例程+驱动等)

    低功耗STM32F411开发板(原理图+PCB源文件+官方例程+驱动等)推荐下载!
    发表于 05-28 21:28

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

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

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

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

    超声波焊接工艺详解 超声波焊接应用领域

    超声波焊接工艺的详细解释: 超声波焊接系统的主要组件 : 超声波发生器 :产生高频电振动信号,通常频率为20kHz到40kHz。 换能器 :将电振动信号转换为机械振动,即
    的头像 发表于 01-31 15:12 2801次阅读

    超声波焊接技术原理

    在现代工业生产中,塑料材料因其轻便、耐腐蚀和成本效益高而被广泛使用。超声波焊接技术作为一种高效的塑料连接方法,因其快速、清洁、无需使用粘合剂或溶剂而受到青睐。 超声波焊接技术原理 超声波焊接技术
    的头像 发表于 01-19 11:01 2863次阅读