详解超声波测距

声波 在1个标准大气压和15℃的条件下在空气中的传导速度约为340m/s。当一段声波从声源发出,到遇到障碍物而被反射传回声源所在的位置,声源与障碍物之间的距离,就是这段声波从发出到返回时所用总时间乘以声速除以2。

超声波具有指向性强,能量消耗缓慢,在介质中传播的距离较远的特点,在精度要求不是特别严苛且在非真空的条件下,很适合用于测量直线距离,设备成本也相对低廉。

压电式超声波发生器实际上是利用压电晶体的谐振来工作的,它有两个压电晶片和一个共振板。

当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。

反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。

在一个超声波测距模块上测得发射时与接收时的两段电信号之间的时间差,即为这个超声波测距模块此次发出的超声波的传播时间,进而可以计算出超声波发射源与障碍物之间的距离。

例程

在Github上的例程项目文件

项目文件下载到本地后可导入MakeCode中查看和再编辑,也可直接通过USB烧录到Micro:Bit中运行。

设计说明

采集P13引脚的高电平持续时间并赋值给变量"Ultrasonic_time",此处时间单位是us微秒,经过换算在15℃标准大气压下声速为0.034cm/us,而25℃标准大气压下声速为0.0346cm/us, 我们选择后者用于距离计算。

变量"Ultrasonic_time"乘以0.0346除以2再赋值给变量"Distance",此时得到的变量数值即为超声波发射源与障碍物之间的距离,单位是cm。

最后用一个if条件判断进行消噪,小于等于0和大于500的数值都做归零处理。

程序上设计间隔0.1s运行一次超声波测距程序用以防止发射信号对回响信号的干扰,micro:bit通过USB串口间隔1s输出1次超声波传感器检测到的距离。