如何利用stm32单片机进行超声波测距

发布者:EnchantedHeart最新更新时间:2024-05-11 来源: elecfans关键字:stm32  单片机  超声波测距 手机看文章 扫描二维码
随时随地手机看文章

首先来看模块图

在某宝上一搜就能找到,关于它的使用也是非常简单,先看数据手册里面需要注意的几点


1 基本的参数

如何利用stm32单片机进行超声波测距

在实际测试当中,最大测量三米多的距离还是可以,最小距离我没有做测试,我测的最小距离是50厘米,再往下没有继续测。

2测距的基本原理

如何利用stm32单片机进行超声波测距

这里的基本原理其实应该是它的使用方法,如果你仔细看它的数据手册会发现这种测距模块还有另外一种使用方法:USART通信。

看文字不是很直观,简单粗暴来看图

如何利用stm32单片机进行超声波测距

如何利用stm32单片机进行超声波测距

在写程序的时候没有使用USART的方法,因为上图的这种驱动方式我认为比较简单,后面的程序也是按照这个时序图来编写的。

注意:上图中关于测距的公式,在程序中我没有使用他给的公式,这一点在后面会提到。

3 实物图的连接

实物图的连接就不上图了,购买此模块的时候一般卖家会给你相应的资料。

直接上程序:

主函数:

intmain(void)

{

unsignedintcount=0;

floatdistance=0;

floatdistancebuf[]={0};//这里的数组没有意义,是在调试程序的时候,怕测的距离有误差,把连续几次测到的数值放入数组中求平均值,以提高精度

/*USART1config1152008-N-1*/

USART1_Config();

Distance_Config();//距离转换函数,在上面的说明中有提到,但是具体的实现和上面的公式是不相同的

CLI();//关闭总中断

SEI();//开启总中断

Tim3_Config();//定时器初始化

GPIO_ResetBits(GPIOA,GPIO_Pin_5);//先拉低电平

while(1)

{

GPIO_SetBits(GPIOA,GPIO_Pin_5);//再拉高电平,这里拉低拉高电平是根据上面给出的测距原理来写的

Delay(30);//延时30个us,注意这里使用的是粗略的延时函数,测距原理中说是延时10个us,这里给30个us也无妨

//Delay(20);

//Delay(20);

GPIO_ResetBits(GPIOA,GPIO_Pin_5);

TIM3-》CNT=0;//TIM3的计数器清零

while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4)==0);//等待ECHO的高电平

TIM_Cmd(TIM3,ENABLE);//运行TIM3进行计数

while((GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4)==1)&&(TIM3-》CNTARR-10));

TIM_Cmd(TIM3,DISABLE);

count=TIM3-》CNT;

printf(“count=%d”,count);

distance=ChangeDistance(count);

printf(“μ±?°?àà??a£o%fn”,distance);

Delay(20000);

Delay(20000);//这里的延时没有具体的意义,可以去掉

while(1);//程序测距一次后卡死在这里

}

}

距离转换函数

floatChangeDistance(unsignedintcout1)

{

floatdistance=0;

printf(“cou1=%dn”,cout1);

distance=cout1/58.0;

returndistance;

}

参数是TIM3-》CNT的计数,也就是高电平的时间,distance是测距距离

注意:distance的单位是厘米

关于转换的公式为什么是cout1/58.0 这里我也不是很清楚

另外:当ECHO引脚输出高电平后,另一种思路是采用上升沿触发定时器中断的方式来计算高电平时间的,我认为没有必要再配置一次中断,使用while()来等待这个高电平的方法完全可以。当然不容忽视的一个问题是,如果始终检测不到高电平,程序会卡死在while()语句这里,因此有必要加上一个时间的判断。

通过串口打印相应的测量结果。

注意:1 有的超声波模块是有温度校准的,有温度校准的模块测距精度要高一些。

2 模块再稳定下来之后测距是比较准确的,即便是我上面写的代码,也需要稳定一下再测距才可以,举个例子,当你将超声波模块对着墙时,刚上电测到的距离并不准确,但是很短时间后测距就会变得非常精准。

3 上面的程序采用的是电平触发的方式,我看到有的说使用串口的方式会使精确度更高,但我没有做相关的实验。

4 想要提高测距精度的另一种方法就是多次测量,去掉最大值,最小值后取平均值的方法,我在另一份程序中采用的是测五次距离,然后取出平均值得方法,需要注意多次测量的周期最好大于60ms。


关键字:stm32  单片机  超声波测距 引用地址:如何利用stm32单片机进行超声波测距

上一篇:STM32L4系列内部FLASH双字编程示例
下一篇:如何在STM32F4 ARM MCU和Python之间建立USART通信

推荐阅读最新更新时间:2024-11-08 11:26

瑞萨电子与台积电联手打造微控制器的生态系统
全球领先的高级半导体和解决方案的供应商瑞萨电子株式会社(TSE:6723,董事长:赤尾泰,以下简称“瑞萨电子”) 与台湾积体电路制造(TSMC)(总公司:台湾新竹、日本法人:TSMC日本株式会社、横浜市西区、董事长:小野寺诚、以下简称TSMC)——今天(28日)共同宣布,双方已经签署协议,将在微控制器(MCU)技术方面的合作扩大至40纳米嵌入闪存(eFlash)的制造,以生产应用于下一代汽车及家电等消费类产品的微控制器。瑞萨电子先前已委托TSMC生产90纳米工艺的微控制器,本次合作方案中,瑞萨电子将委托TSMC生产40纳米工艺及更先进生产工艺的微控制器。 结合瑞萨电子支持高可靠性及高速的金属氧化氮氧化硅(Metal-Oxide-
[单片机]
一种基于低功耗单片机的抗干扰电源
  引 言   近年来,各种低功耗单片机在各类仪表中得到了广泛应用,特别是89C51/2单片机以其优良的性能、低廉的价格和标准的降低功耗特性以及片内存储器的快速可擦写性等赢得了广大用户。但各种测试仪表常常要求能方便地携带使用,因此仪表电源常采用专用电瓶。一般专用电瓶电压为12V(或12V 串联组成) ,而以89C51/2单片机组成的应用系统其电源电压Vcc要求在5×(1±0.1)V 范围内,有些仪表使用环境常常较恶劣,干扰因素较多。因此,要使单片机系统可靠工作,一套抗干扰能力强的供电电路显得十分重要。   1  抗干扰电源电路设计与分析    抗干扰电源电路由两部分组成,如图1 所示。以MAX638 为中心组成直流降压电路,
[单片机]
新的V2XE型地磁传感器在单片机系统中的应用
1 引言 V2XE是一种以集成微处理器作为控制和接口的新型2轴罗盘和大地磁场传感器 ,U2XE使用新型系统常用的3V工作电源,具有功耗低、尺寸小、在各种条件下的抗噪声能力强、较大的测量灵敏感应区等优点。V2XE结合了PNI公司专利的磁场感应传感器和测量电路技术,不受补偿漂移的影响,在不同温度下的测量结果很稳定。V2XE通过简单易行的标准SPI接口输入/输出数据。 2 性能特点 V2XE的典型特性如下: 功率低(3V DC,2mA输出); 封装尺寸小(25.4mm×5.4mm×11.5mm); 高地磁感应(0.01°); 高地磁精度(2.0°); 数字接口输出(3V标准SPI接口); 具有高的磁场感应(0.00015Gauss
[工业控制]
高电源效率MCU实现单电池供电
  常用的碱性电池(AAA或AA)终止电压为0.9V,数字电路一般需要1.8V~3V甚至更高的电压,因此如果采用单电池供电,则需要高效的直流升压转换器( DC/DC 转换器)。Silicon Labs(芯科实验室有限公司)目前发布了内置DC/DC转换器的C8051F9xx系列MCU产品,最低操作电压可实现0.9V,使对外型尺寸比较敏感的便携式产品能从一颗电池取得所需电源。   在许多操作范围从0.9V~3.6V的低功耗电应用中,微控制器多数时间处于休眠模式,并会定时唤醒并采集信号。C8051F9xx利用创新的设计技术将典型休眠模式电流减少到50nA以下,并可于2ms内从低耗电休眠模式回到CPU处理速度高达25MIPS的正常操作模式,
[电源管理]
蓝桥杯STC15单片机复习——矩阵按键使用
前言 矩阵按键原理图: 前面说过,国信长天的板子的按键模块由CON3控制,当2脚与3脚(GND)相连时为独立按键模式,即只有P30~P33按键有效,当2脚与1脚相连时,为矩阵按键模式,十六个按键通过公共端连接的方式引出了8个引脚,因此,我们可以以下方法进行矩阵按键的检测。 横列扫描原理 1、我们首先让矩阵按键的高四位或者第四位全部为低电平,即P3 = 0x0F/P3 = 0xF0。 2、随后当有任何一个按键按下时,将会改变P3的电平状态。也就是存在任一按键按下时,我们可以通过读取P3口的电平状态并处理即可判断具体按下的按键在哪一行哪一列。 3、读取到改变后的P3口状态时,我们将高低位电平进行对调,即原先是0xF0,则对P3
[单片机]
蓝桥杯STC15<font color='red'>单片机</font>复习——矩阵按键使用
ROM结合了存储孤岛加密技术 泰矽微MCU芯片安全保护方案
目前,业界普遍采用带有动态口令(OTP)的只读内存镜像(ROM)来开发一些对于安全要求比较高的启动升级代码逻辑。 该方案会在流片时一次性烧写进去,能够避免用户对MCU的启动升级逻辑进行改动,从而从源头上隐藏一些安全校验或者升级交互的逻辑实现,起到保护MCU芯片程序不被恶意篡改升级的作用。 但是采用这种方法制备的MCU芯片,在整个生命周期中只能被烧写一次。而在实际的芯片开发过程中,开发人员几乎不可能一次性将芯片中所有的需求都考虑周全,往往随着芯片的量产应用,还需要逐步的升级。 当原有的烧写好的代码逻辑已经被固化时,就无法对MCU芯片内容进行修改以及进一步升级,并且固化的代码逻辑已经被固定,也有泄密的风险。为此,泰矽微在2020年6月
[手机便携]
ROM结合了存储孤岛加密技术 泰矽微<font color='red'>MCU</font>芯片安全保护方案
80C196MC单片机波形发生器原理及其在逆变电源中的应用
    摘要: 80C196MC波形发生器的SPWM波形产生原理和软件设计要点。使逆变控制电路实现了全数字操作,改进了传统的控制方法。试验表明,该方案结构紧凑、动态特性好、可靠性高。     关键词: 80C196MC 正弦脉宽调制 波形发生器 逆变器 控制电路 PWM技术从最初采用分离元件的模拟电路完成三角波和正弦调制波的比较,产生SPWM控制信号,到目前采取全数字化方案,完成实时在线的PWM(SPWM)信号输出。PWM控制电路经历了由实级到越来越完善的演化。 由专用集成芯片ASIC(Application specific integrated circuit)生成SPWM波的技术近几年来被广泛
[工业控制]
以89C5l单片机为核心器件的电子计时记分系统解析方案
0 引 言 在2008年中科技奥运是非常重要的一个方面,而计时记分系统在竞赛中更是重中之重,可以说好的计时记分系统决定着举办的成败。 在篮球比赛中,总的倒计时是必需的,规定为12 min。除此以外,为了加快比赛节奏,还规定了队员的持球时间不能超过24 s,否则就犯规。这里所设计的计时器涵盖了以上要求,可用于篮球比赛中。用于对总时间和持球时间24 s的限制。 1 设计要求 该系统能完成的功能为:以89C5l单片机为核心器件,组成一个电子计时记分系统;系统显示由12位数码管组成,分别为记分牌与倒计时牌;可随时记分,随时暂停,随时开始。 根据设计功能,设计思路如下: (1)时间显示用6个数码管,分数显示用4个数码管,用来动态
[单片机]
以89C5l<font color='red'>单片机</font>为核心器件的电子计时记分系统解析方案
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved