折腾来折腾去

pikipity的blog

利用 Arduino 进行超声波测距

昨天测量温度的装置上又加上了 HC-SR04 来进行超声波测距,先利用 DHT11 测量温度,然后利用温度来计算出较为准确的声速(根据相对论的欧拉方程,声速(米每秒)=331+0.6*温度(摄氏度)),再利用 HC-SR04 测得的超声波来回的时间计算出距离,并在 LCD1602 上显示。

HC-SR04 的使用非常简单,这里有一份 HC-SR04 的中文手册,首先向 Trig 引脚输入一个不小于10us的高电平,然后测量 Echo 引脚返回的高电平的时间 t,然后利用公式:距离=t*声速/2,就可以计算得到距离了。但是需要注意:

  1. 测量周期要在60ms以上,防止回声影响。
  2. 计算距离时单位要统一,利用pulseIn()函数返回的时间单位是“微秒”,测量结果单位一般是“厘米”,所以声速要从“米每秒”换算为“厘米每微秒”,也就是除以10000。
  3. 测量距离为2cm~400cm,太近的话会有盲区,太远的话由于返回信号太弱难以检测。

程序可以到这里下载,其中 “HC_SR04_Arduino” 文件夹中是一个 HC-SR04 的 Arduino 测试程序,“display_LCD1602” 文件夹中是这次的程序,"scheme" 文件夹中是电路图。

程序中使用 “Time” 库来实现定时器中断的功能,“Time” 库可以在这里下载,如果你觉得看英文比较烦得话,可以看这里这个中文简易教程

电路图:

面包板连接图

电路图

结果(LCD 上,第一行为湿度和温度,第二行为距离):

结果



Comments