HS-SR04超声波模块

1.模块简介

HC-SR04超声波模块常用于机器人避障、物体测距、液位检测、公共安防、停车场检测等场所。HC-SR04超声波模块主要是由两个通用的压电陶瓷超声传感器,并加外围信号处理电路构成的。如图:

两个压电陶瓷超声传感器,一个用于发出超声波信号,一个用于接收反射回来的超声波信号。测距原理图如图:

 

由于发出信号和接收信号都比较微弱,所以需要通过外围信号放大器提高发出信号的功率,和将反射回来信号进行放大,以能更稳定地将信号传输给单片机。模块整体电路如图:

2. 模块参数

(1)模块主要电气参数

  • 使用电压:DC---5V   

  • 静态电流:小于2mA       

  • 电平输出:高5V     

  • 电平输出:低0V         

  • 感应角度:不大于15度    

  • 探测距离:2cm-450cm

  • 高精度 可达0.2cm

(2)模块引脚

超声波模块有4个引脚,分别为Vcc、  Trig(控制端)、  Echo(接收端)、 GND;其中VCC、GND接上5V电源, Trig(控制端)控制发出的超声波信号,Echo(接收端)接收反射回来的超声波信号。模块如图:

与单片机的连接如图:

控制原理:通过Trig引脚发一个 10US 以上的高电平,就可以在Echo接收口等待高电平输出;一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了。 

 

3. 控制程序

(1)工作流程

  • 单片机引脚触发Trig测距,给至少 10us 的高电平信号;

  • 模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;

  • 有信号返回,通过 IO 输出一高电平,并单片机定时器计算高电平持续的时间;

  • 超声波从发射到返回的时间.

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

 

整个控制时序如图:

(2)驱动程序

        单片机引脚触发Trig测距,给至少 10us 的高电平信号;   

 void  StartModule()            //启动模块
  {
  TX=1;                        //启动一次模块
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  TX=0;
  }

自动检测是否有信号返回,如果有,启动定时器;

 while(!RX);  //当RX为零时等待
TR0=1;       //开启计数
while(RX);   //当RX为1计数并等待
TR0=0;    //关闭计数
Conut();   //计算

定时器计算高电平持续的时间,并计算出距离;

void Conut(void)
{
 time=TH0*256+TL0;
 TH0=0;
 TL0=0;
 S=(time*1.7)/100;     //算出来是CM
}

 

  • 10
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
您将学习如何将超声波传感器HC-SR04与Arduino连接。它可以是超声波范围传感器或任何用途。 超声波传感器HC-SR04是可以测量距离的传感器。它会发出40 000 Hz(40kHz)的超声波,该超声波在空中传播,如果路径上有物体或障碍物,它将反弹回模块。考虑到传播时间和声音的速度,您可以计算出距离。 HC-SR04的配置引脚为VCC(1),TRIG(2),ECHO(3)和GND(4)。VCC的电源电压为+ 5V ,您可以将TRIG和ECHO引脚连接到Arduino板中的任何数字I / O。 进行此项目所需的材料: 1. Arduino UNO R3 CH340(您可以使用任何Arduino开发板) 2.超声波传感器HC-SR04 3.公对公跳线 4.面包板 为了产生超声波,我们需要将触发引脚设置为高状态10 s 。这将发出一个8周期的声音脉冲,将以速度声音行进,并且将在回音针中接收。回音针将输出声波传播的时间(以微秒为单位)。 例如,如果物体距传感器20厘米,并且声音的速度为340 m / s或0.034 cm / µs,则声波将需要传播约588微秒。但是由于声波需要向前传播和向后反弹,所以从回声针所得到的将会是这个数字的两倍。因此,为了获得以厘米为单位的距离,我们需要将从回波引脚接收的行进时间值乘以0.034,然后将其除以2。 对于编程代码,首先我们需要定义连接到Arduino板的触发引脚和回波引脚。在此项目中,EchoPin附加到D2 ,TrigPin附加到D3。然后定义距离(整数)和持续时间(长整数)的变量。 在循环中,首先必须确保trigPin是透明的,所以我们必须将该引脚设置为LOW状态仅2 µs 。现在,用于生成超声波,我们必须设置trigPin的高态为10微秒。使用pulseIn()函数,您必须读取行程时间并将该值放入变量“ duration”中。此功能有2个参数,第一个是回波引脚的名称,第二个可以写入HIGH或LOW。在这种情况下,HIGH表示pulseIn()该功能将等待由反弹的声波引起的引脚变为高电平并开始计时,然后在声波结束时等待引脚变为低电平而停止计时。最后,该函数将返回脉冲长度(以微秒为单位)。为了获得距离,我们将持续时间乘以0.034,然后将其除以2,如我们之前解释此方程式。最后,我们将在串行监视器上打印距离的值。 脚步 : 1.首先进行如图所示的接线 2.打开Arduino IDE软件并写下您的代码,或下载下面的代码并打开它 3.通过选择工具>板> Arduino / Geniuno Uno选择您自己的Arduino板(在本例中为Arduino Uno) 4.选择“ COM端口”(通常只显示一个现有端口),在“工具” >“端口” >“ COM。”中。(如果有多个端口,请一一尝试) 5.通过按Ctrl + U或Sketch > Upload上载代码 6.要显示测量数据,可以使用串行监视器,方法是按Ctrl + Shift + M (确保波特率是9600) 上载代码后,使用串行监视器显示数据。现在,尝试将一个物体放在传感器前面,然后查看测量结果。 考虑到这一点,您可以使用手动卷尺测量距离并将其与串行监视器上的距离进行比较。如果要在LCD上显示,可以按照第二个接线图并上传以下代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值