产品选型

基于51单片机超声波测距 51单片机超声波测距

小编 2024-11-24 产品选型 23 0

51单片机超声波测距

之前所发的文章都是基于Proteus仿真的一程序,由于Proteus内部元器件的限制,很多现实中使用的元器件在仿真软件中没有办法实现,尤其是一些国产好(pian)用(yi)的元件,所以在这里再发一波基于51单片机开发板的实际操作,实际上手比软件仿真存在更多的乐趣。

超声波测距模块

今天先来分享一个超声波测距。超声波测距的主要原理是利用超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2 。上图就是比较常用的超声波测距模块,一个是超声波发送端;另外一个是超声波接收端。模块共有4个接线端子,分别是VCC、Trig、Echo、GND。

模块测距工作原理

超声波测距模块在使用时通过单片机的IO口TRIG触发测距,给至少10us的高电平信号,这样模块会自动发送8个40khz的方波,同时自动检测是否有信号返回。当有信号返回,模块会通过IO口Echo输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。

测试距离=(高电平时间*声速(340M/S))/2;

  本模块使用方法简单,一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出。一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离。

开发板使用普中的51单片机A2开发板。还带个小盒子。

开发板原理图

开发板实物图

本来想自己写程序,但是打开资料后发现里面有写好的测试例程。

/*

实验说明:

根据自己使用的LCD1602是否带有转接板,如果带有转接板的即为4位,需在LCD.H头文件中

将宏#define LCD1602_4PINS打开,我们这里使用的LCD1602是8位,所以默认将该宏注释。

实验接线:

LCD1602液晶模块-->单片机管脚

参考LCD1602液晶显示实验接线(开发攻略内在对应的实验章节内实验现象有接线说明)

超声波模块-->单片机管脚

TRIG-->P21

ECHO-->P20

实验现象:

LCD1602上显示超声波检测的距离,单位mm

*/

#include<reg51.h>

#include<intrins.h>

#include"lcd.h"

sbit Trig = P2^1;

sbit Echo = P2^0;

unsigned char PuZh[]=" Pechin Science ";

unsigned char code ASCII[15] = {'0','1','2','3','4','5','6','7','8','9','.','-','M'};

static unsigned char DisNum = 0; //显示用指针

unsigned int time=0;

unsigned long S=0;

bit flag =0;

unsigned char disbuff[4] ={ 0,0,0,0,};

/*******************************************************************************

* 函 数 名 : main

* 函数功能 : 主函数

* 输 入 : 无

* 输 出 : 无

*******************************************************************************/

void Conut(void)

{

time=TH0*256+TL0;

TH0=0;

TL0=0;

S=(time*1.7)/100; //算出来是CM

if((S>=700)||flag==1) //超出测量范围显示“-”

{

flag=0;

DisplayOneChar(0, 1, ASCII[11]);

DisplayOneChar(1, 1, ASCII[10]);//显示点

DisplayOneChar(2, 1, ASCII[11]);

DisplayOneChar(3, 1, ASCII[11]);

DisplayOneChar(4, 1, ASCII[12]);//显示M

}

else

{

disbuff[0]=S%1000/100;

disbuff[1]=S%1000%100/10;

disbuff[2]=S%1000%10 %10;

DisplayOneChar(0, 1, ASCII[disbuff[0]]);

DisplayOneChar(1, 1, ASCII[10]);//显示点

DisplayOneChar(2, 1, ASCII[disbuff[1]]);

DisplayOneChar(3, 1, ASCII[disbuff[2]]);

DisplayOneChar(4, 1, ASCII[12]);//显示M

}

}

void zd0() interrupt 1 //T0中断用来计数器溢出,超过测距范围

{

flag=1; //中断溢出标志

}

void StartModule() //启动模块

{

Trig=1; //启动一次模块

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

Trig=0;

}

void delayms(unsigned int ms)

{

unsigned char i=100,j;

for(;ms;ms--)

{

while(--i)

{

j=10;

while(--j);

}

}

}

void main(void)

{

TMOD=0x01; //设T0为方式1,GATE=1;

TH0=0;

TL0=0;

ET0=1; //允许T0中断

EA=1; //开启总中断

LcdInit();

LcdShowStr(0,0,PuZh);

while(1)

{

StartModule();

while(!Echo);//当RX为零时等待

TR0=1; //开启计数

while(Echo);//当RX为1计数并等待

TR0=0;//关闭计数

Conut();//计算

delayms(80);

}

}

程序设定单片机的定时器0工作在模式1(16位计数模式)。在进行超声波测距时,首先调用StartModule函数发送一个起始脉冲,控制模块发送超声波信号。然后程序循环读取接收引脚的状态,一但接收引脚Echo为1,程序启动定时器开始进行计数,直到Echo为0时结束计数,关闭定时器,然后根据定时器的计数值计算所测的距离。定时器的计数周期为1微秒;程序中定时器的计数值为声波发出到返回的时间,所以要将最终计算距离除2就可以得到实际的距离。

贴个测试视频,后面把蜂鸣器和超声波测距结合到一起,实现不同的距离不同报警提示音。

视频加载中...

STM32单片机的高精度超声波测距系统的设计

相比于传统的单片机,STM32单片机具有更高的时间测量分辨率,其主频与定时器频率高达72MHz,且该单片机在开启定时器的同时,会启动PWM通道驱动超声波发射器和通道捕捉回波信号,提高了测量的精度和准确性。超声波测距是一种典型的非接触测量方式,在不同的传播介质中具有不同的传播速度其系统结构简单、成本低。只有了解超声波测距的原理、了解STM32单片机才能设计出性能良好的STM32单片机的高精度超声波测距系统。

超声波测距的原理及检测方法

超声波检测技术是基于非接触测量方式而逐渐发展起来的一门技术,这种非接触测量方式会经常出现在材料学、电子科学、测量学等学科当中。超声波的产生是通过机械振动而得到,其传播速庶会随着传播介质的变化而变化。超声波测距的实现主要是通过超声波的产生、传播与接收回波这三个主要过程。

目前,声波幅值检测法、渡越时间检测法和相位检测法是超声波测距的三种主要检测方法。声波幅值检测法,容易受到传播介质的干扰,所以其测量精度较差。渡越时间检测法,与其他两种检测方法相比,成本较低,测量范围较广,且实现简单,因此本文高精度超声波测距系统的设计决定采用渡越时间检测法。相位检测法,在实际测量过程中,其测量精度要高于其他两种检测方法,但测量范围具有一定的局限性田。

STM32单片机的高精度超声波测距系统设计

一、系统组成

STM32单片机的高精度超声波测距系统的设计主要由STM32 单片机、超声波发射电路、接受电路、补偿电路和软件等构成。该系统将STM32单片机作为整个系统的核心,通过协调各部分电路工作,进而实现高精度的超声波测距口。

二、系统硬件设计

1.超声波发射电路

超声波发射电路两个最主要的组成部分就是超声波探头和超声波激励电路。超声波探头不仅是超声波发射电路的一个重要组成部分,更是整个超声波测距系统的重要组成部分。它是超声波测距系统中用以发射或接受超声波信号的主要器件。超声波激励电路的基本工作原理是首先利用相应的机理信号对一特定形式的电压进行处理之后,将其加载到超声波探头上,然后再通过超声波探头压电晶片将其自身所具有的电能转化为超声波信号图。

2.超声波縷收电路

超声波接收电路由超声波信号采集与超声波信号处理两部分组成,该电路主要负责对超声波回波信号进行捕捉。由于电脉冲信号是由超声波传感器在接收到超声波回波信号之后经过转变而形成的,所以在正常情况下,它是无法直接进人到STM32单片机当中的。另外,超声波在传播过程中,往往会有部分超声波因为在辅助介质中传播而发生耗损现象,且超声波回波信号减小的幅度也会随着被测物体距离的增大而增大。

受声波的反射、散射和(2.2.3超声波补偿电路)声束本身扩散等的影响,使得超声波在传播过程中其大小将会随着传播距离的改变而改变,传播距离越大,超声波信号则越小。在STM32单片机的高精度超声波测距系统设计过程中,为了提高测量结果的精度,设计人员通常会对衰减的超声波回波进行时间增益补偿,这就需要将超声波补偿电路加人到系统设计之内,超生波补偿电路的设计基本上都是采用具有时司增益控制功能的接收放大器。

3.超声波补偿电路

受声波的反射、散射和(2.2.3超声波补偿电路)声束本身扩散等的影响,使得超声波在传播过程中其大小将会随着传播距离的改变而改变,传播距离越大,超声波信号则越小。在STM32单片机的高精度超声波测距系统设计过程中,为了提高测量结果的精度,设计人员通常会对衰减的超声波回波进行时间增益补偿,这就需要将超声波补偿电路加人到系统设计之内,超生波补偿电路的设计基本上都是采用具有时司增益控制功能的接收放大器。

4.主控器

该系统的核心组成部分采用STM32单片机,该单片机对主控器主频与定时器的控制是通过PLL进行陪频,从而让主控器的频率可以达到72MHz。主控器拥有如此高分辨率的定时器,可以实现超声波测距的高精度测量巧]。 2.3系统软件设计

STM32单片机的高精度超声波测距系统,其软件设计的主要流程如下:首先,对系统各个馍块进行初始化,通过STM32单片机的 PWM产生频率为40KHz的、具有8个周期的脉冲方波,并将要在漠块中进行捕捉的超声波回波输人到捕捉指令当中;其次,待超声波回波顺利进人到接收电路之后,利用整形电路和放大电路等硬件对其进行相应的处理并传送到STM32单片机内,当STM32单片机捕捉到回波触发信号时,利用软件滤波和峰值时间检测法来计算出峰值时刻回波的到达时间;最后,借助相关计算公式得出被测距离值。

结语

通过文章对STM32单片机的高精度超声波测距系统设计的介绍可知,该系统不仅可以实现距离的准确测量,而且反应速度决、成本低、稳定性高,能够较好的满足各领域的日常需求。利用网络技术和计算机技术等来设计STM32单片机的高精度超声波测距系统,并对超声波检测技术进行不断的完善与革新,在提高STM32单片机性能的基础上,设计出能够适应与满足未来各领域日常生产与发展需要的超声波测距系统,对我国各领域来说都具有重要的意义。

相关问答

51单片机超声波测距 误差太大怎么办?

1、对数据做数字滤波,取几次结果,然后抛弃一些不正常的数据(比如取10个值,去两个最大值,两个最小值,剩下6个数取平均值)等等,这样数据会稳定很多。2、控...1...

单片机超声波测距 各个部件是什么?

答:单片机超声波测距各个部件是:STC单片机+超声波模块+4位共阳数码管。2.原理:单片机向测距模块trig脚发送20us的高电平触发测距,Echo测距结束时会输出高电...

超声波测距 模块1——超声波模块测距的有效距离是多少?模块的...

[最佳回答]对于第一个问题:超声波测距,通常在10米以内,但也有个别厂家做到几十米甚至百米的.超声波测距有以下几个特点:1、频率越高,精度也越高,但检测距离越...

51单片机 外围模块中, 超声波测距 模块上STC11芯片是什么?STC11、TL074和MAX232的作用都是什么?

STC11是一款STC单片机(STC单片机的一个系列,而不是一个具体的单片机型号),在这里的作用是根据收到的发送信号TRIG,发送一端超声波波形给MAX232;还有个...STC...

基于单片机 超声波测距 系统的答辩有什么问题?

测速的原理、软件是怎么换算出距离的、测量范围和精读、功耗、系统供电稳压、具体电路的各原件大小选择及功能测速的原理、软件是怎么换算出距离的、测量范围...

51单片机 避障小车原理?

1.利用黑色对光线的反射率小这个特点,当平面的颜色不是黑色时,反射器发射出去的红外光被大部分反射回来。于是传感器输出低电平0。2.当平面中有一条黑线,传感...

)但是这个模块发出的 超声波 一到达水面就返回给 单片机 信号...

[最佳回答]通过压力,在水箱底部安装压力传感器,通过压力,计算水高.

超声波 测量系统由什么组成?

超声波测量系统主要由超声波发射器、接收器、处理器和显示器组成。发射器产生超声波信号,经介质传播后被接收器接收。处理器根据超声波的传播时间和速度计算距...

超声波测距 范围?

超声波测距的范围,测量的距离一般就到50m左右,角度有大有小,小的可以到5度,大的有到60度的。是像圆锥一样的辐射面。超声波测距的原理是利用超声波在空气中的...

关于 超声波测距 ?

1一个脉冲测量理论上可以的,但实际上1个脉冲时间太短了。超声波发生器一般1秒发射几十到几百次,叫发射频率。每次发射的脉冲波为几个波长的波,叫脉冲频率。...

猜你喜欢