分享

超声波测距程序详解

 昵称29273511 2015-12-01

根据上节课的内容,我们知道超声波模块具有很强的方向性,并且传播过程是直线传播,根据该特点,我们从“空心大萝卜运用题”推导出了超声波测距的计算公式为:

  • 距离=时间×速度=时间(μs)×0.017(cm/μs)


好了现在来编程,在上述公式中,我们仅需要确定“时间”,就可以获得测量点与实际物体的距离,那么时间怎么算?



让我们先来回顾一下我们之前介绍的超声波模块的知识:

  • 超声波测距的基本原理:通过超声波发射装置发出超声波,根据接收器接到超声波时的时间差就可以知道距离了。超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时;

  • 由于触到被测物体后返回,故其实际的返回时间应除以2后,才能计算出正确的时间。

  • 模块的四个输出引脚及功能分别为:

    • VCC:超声波模块电源供电端,接阿板的+5V;

    • GND:接阿板的GND;

    • Trig:控制端,输入10us的触发脉冲信号后,超声波模块向外发射超声波;

    • Echo:接收端,超声波发射时,该脚同时变为高电平,待超声波接收器收到到反射波后,变为低电平,通过测量该高电平的时间,即可算出测量点到当前位置的距离。


让我们再来回顾一下测量脉冲时间的阿板函数——pulseIn():

pulseIn()函数:

作用:用于测量脉冲持续时间

格式:pulseIn(pin,HIGH/LOW,timeout)

  • pin:要测量的引脚;

  • HIGH/LOW:当选择HIGH时,引脚脉冲由低电平变为高电平时,计时器开始计时,当引脚由高电平变为低电平时,计时器停止计时;若选择LOW时,引脚脉冲由高电平变为低电平时,计时器开始及时,当引脚由低电平变为高电平时,计时器停止计时。从而可以得到脉冲宽度;

  • Timeout:可选项,在该时间内若无变化,则返回测量时长为零;

返回值:返回测量时长,单位为μs(微秒)。


得到了脉冲持续时间,我们就可以通过距离=速度×时间计算出测量点之间的距离。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多