STM32f407驱动hc-sr04超声波测距模块

本文介绍了如何使用STM32f407驱动HC-SR04超声波测距模块,详细阐述了模块的工作原理、供电需求以及操作步骤。在实践中,作者提醒读者避免直接复制网上质量不高的代码,而是要理解并自行计算。文中提到了计算距离的公式,并给出了最大测量距离4米时的定时器设置。最后,分享了实现该功能的代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近完了一下测距模块,本想挺简单的一个东西,却折腾了好长时间。总算弄好了,贴到这里和大家分享一下!

HC-SR04超声波测距模块是一种被用烂了的传感器,它的优点是成本低,控制容易,但是掌握不好时序,还是会弄的人一头雾水。

本模块用使用方法如下:

一.  5v直流电压供电,一般的单片机上自带的VCC都能驱动

二.  Trig引脚收到来自单片机时长大于等于20us的高点品后发出超声波

三.  Echo引脚接收Trig引脚发出的超声波的回波,并且单片机开启定时器记录高电平时间

四. 高电平结束后,关闭定时器,从定时器寄存器中取出记录值,换算成距离即可。

在做的过程中注意:

网上有好多代码,但是大多数互相抄袭,而且代码质量都不怎么高,每一句话什么意思也不明白,所以不要照抄网上那些代码,还是要自己琢磨;

在换算距离时,网上的代码各种各样,但结果都不符合实际,于是自己算了一下:

在我的程序中,定时器计时频率是200000,周期就是1/200000,在这个周期里,超声波走的距离是(1/200000)*344/2=0.00085米,换算成毫米是0.86米,精度符合要求。

在获取定时器的计数器值TIM,于是TIM*0.85就是实际距离,单位是毫米。

另外,超声波测距模块的最远测量距离是4米,可以算出距离在4米事定时器的计数值,x*340=4,得x=5000,所以设置定时器的溢出周一为5000.

好了,贴上代码吧!

int main(void)
{
  LED_Init();
  GPIO_Configuration();
  TIM2_Configuration(5000,419);  //定时器频率200000
  
  while (1)
  {
    diatance_Data = get_Diatance();   //得到的距离单位是毫米
    qian = diatance_Data/1000;
    bai = diatance_Dat
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值