产品选型

单片机超声波模块 蚁哥和你一起玩ARDUINO(41超声波模块简介)

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

蚁哥和你一起玩ARDUINO(41超声波模块简介)

超声波测距模块是常见的配件,爱好者们经常把它用于智能小车的测距和避障,把它放在小车正前方,当作是小车的"眼睛"。

超声波模块很像一对眼睛

网上很容易买到便宜的超声波传感器模块,价格非常亲民,当然精度也差一些,测量范围大概在2cm到400cm之间。

常见的超声波模块

以最常见的超声波模块SR04为例,模块上有4根线,+5V,gnd,TRIG和ECHO。TRIG是用来触发发送喇叭的信号线,ECHO用来检测接收喇叭是否接收到信号。

超声波模块上有一个小的单片机,用来处理信号的发送和接收,想要读取超声波模块输出的话,要按照它的时序来控制。下面是模块时序图:

超声波模块工作时序图

(1)通过TRIG管脚触发测距,给至少10us的高电平信号;

(2)模块通过发送喇叭自动发送8个40khz的方波,声波如果遇到障碍物就会返回;

(3)接收喇叭接收到返回信号之后,通过ECHO管脚输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。

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

我们可以很容易得到管脚的电平值,但是上面图中的输出信号并不是固定值,而是一个脉冲,脉冲的宽度该如何检测呢?常用的方法就是计数法。也就是从有效的上升沿或者下降沿开始,按照固定的周期开始计数(这个周期越短,测量精度就越高),遇到失效沿后立刻停止计数,然后用计数个数乘以周期,得出来有效脉冲的宽度。

脉冲计数法

如上图所示:如果检测周期是1us,高脉冲的有效值就是1*20=20us。

[51单片机] HC-SR04超声波测距仪

1、HC-SR04超声波模块工作原理

(1)采用IO口触发测距,给至少10us高电平脉冲;

(2)模块自动发送八个40khz方波,并自主检测是否有电波返回;

(3)当有信号返回时,通过IO口输出一个高电平,高电平的持续时间就是超声波从发送到返回的时间;

(4)测距公式:距离=(高电平时间*声速)/2;

超声波模块的时序图

(5)工作原理分析

英语啥的我也看不懂呐

差不多就是这个意思

2、使用元器件如下

超声波模块和蓝牙模块

加上51单片机后的连接图

3、开始运行时的工作状态

哇哦还是蛮准的嘛,允许一丢丢误差

把障碍物放在距离超声波模块前方的14cm左右(当然放多远是无所谓的,这里就以14cm为例吧!),根据单片机计算出来的值,由蓝牙模块发送到手机上面。

嘿嘿不晓得这样说有没有说清楚,这差不多就是我的理解吧!

这时候要用个手机软件(当然用电脑也是ok的啦,也需要一个蓝牙串口的软件),俺用的是下面这个➡️

偷偷告诉你豌豆荚可以下

4、上主菜

#include <AT89X51.H>

#include <intrins.h>

#include <STDIO.H> //c语言库

#define uchar unsigned char

#define uint unsigned int

#define ECHO P1_1 //echo 接线:模块TRIG接 P1.2 ECH0 接P1.1

#define TRIG P1_0 //trig

unsigned int time=0;

float S=0;

bit flag =0;

void Conut(void)

{

time=TH0*256+TL0;

TH0=0;

TL0=0;

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

if(flag==1) //超出测量

{

flag=0;

printf("--------\n");

}

printf("S=%5.2fcm\n",S);

}

void delayms(unsigned int ms)

{

unsigned char i=100,j;

for(;ms;ms--)

{

while(--i)

{

j=10;

while(--j);

}

}

}

void zd0() interrupt 1 //T0中断计数器溢出

{

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

}

void StartModule() //T1中断用来扫描

{

int i;

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

for(i=0;i<21;i++)

{

_nop_();

}

TRIG=0;

}

void main(void) //主工作区

{

TMOD=0x21; //T0为方式1 GATE=1;

SCON=0x50; //SCON是单片机串行口控制寄存器,用于控制串行通信的方式选择、接收和发送,指示串口的状态。

TH1=0xFD;

TL1=0xFD;

TH0=0;

TL0=0;

TR0=1;

ET0=1; //允许T0中断

TR1=1; //开启定时器

TI=1; //TI是串口送数据完成标志

EA=1; //开启总中断

while(1)

{

StartModule(); //启动模块

while(!ECHO); //当ECHO为零时

TR0=1; //开启计数

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

TR0=0; //关闭计数

Conut(); //计算

delayms(50); //500ms = 0.5s

}

}

下次见

2020.05.16

‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧··END·‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

相关问答

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

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

超声波 测距电路的种类_作业帮

[回答]1.使用超声波发射头UCM40T,发出40kHz的脉冲超声波,且持续发射200ms.接收头采用与发射头配对的UCM40R,将超声波调制脉冲变为交变电压信号,经运算放大...

stc11 单片机 功能?

STC11单片机的功能是模块功能,HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。...

单片机 测距怎么设置?

单片机测距离,分为超声波激光测距:基本上是通过激光的发送与接收的时间差来算出距离的。这就要求系统输出一个驱动发光管的电流脉冲,驱动LED发出激光...单...

我想问 单片机 ,你了解多少?

想了解单片机,就需要了解单片机的工作原理,开发环境、编程语言、端口、功能模块等等。一、了解单片机的工作原理我们都知道,在学习一项技术的时候,第一条就...

本科做基于 单片机 的智能车(有寻迹,避障,蓝牙控制功能)毕业设计是不是很low,大家有什么好的意见吗?

如果认为这种本科生毕业设计课题很low,那么请最好自我评估一下,尽量避免养成一种眼高手低的习惯。作为本科生毕业设计课题“基于单片机的寻迹智能车”、“基...

超声波 可以用于哪些地方?】作业帮

[最佳回答]超声技术是一门以物理、电子、机械及材料学为基础的通用技术之一.超声技术是通过超声波产生、传播及接收的物理过程而完成的.超声波具有聚束、定向...

超声波 检测怎么对付

声音的传播速度与介质的种类、温度有关,一般说来,介质的密度越高传播的速度越大;温度越高传播的速度越大。超声波是指振动频率大于20KHz以上的机械...

...文设计的电机 模块 采用直流电机L298N控制.通过...

[最佳回答]Withtherapiddevelopmentofscienceandtechnology,theapplicationofintelligentrobotmorewide...

【什么是 超声波 ? 超声波 分类及应用】作业帮

[最佳回答]超声波技术是一门以物理、电子、机械及材料学为基础的通用技术之一.超声波技术是通过超声波产生、传播及接收的物理过程而完成的.超声波具有聚束、...

猜你喜欢