步骤1:零件清单
只需要很少的部件:
1只有HC-SR04超声波模块或类似的
1只有Arduino Uno R3
4只有Arduino male-女性跳线
第2步:接线图
完成此项目只需要四条线。
接线图显示在photo1中。
步骤3:理论
HC-SR04超声波测距仪模块(照片1)提供2cm-400cm范围内的非接触式测量。精度通常为+/- 3mm,具体取决于距离,气温和湿度。
为获得最高精度,目标区域应至少为0.5平方米。当换能器直接指向目标时获得最佳结果。但是,可以在+/- 15度的假想“锥形”内使用可用的结果。
将HC-SR04连接到Arduino非常简单,因为除了两个电源引脚外,只有两根电线,“Trig”(触发器)和“Echo”是必需的。
必须将10uS(微秒)触发脉冲施加到“Trig”引脚以开始每次测量。
接收到触发脉冲后,模块以40kHz(千赫兹)的频率发出8个周期的“脉冲串”,然后“Echo”线变为高电平。触发脉冲和“Echo”引脚的上升沿之间有一个短的430uS间隔,在此期间,在超声波脉冲发生之前,发射器电路中会产生高能量+/- 10伏电荷。
收到回波信号时,“Echo”引脚降至LOW,或者先取210mS。
[注意:
如果阻止超声波信号(我使用过在换能器上卷起袜子,您将观察到3550cm的距离读数,该读数超出传感器范围约400cm。
超过400厘米时,距离读数会突然跳到3550厘米。原因如下:
在正常操作中,measure()函数在小于25mS(423cm)内完成其测量,然后再等待25mS,直到任务调度程序接下来将TaskFlag1设置为“TRUE”。
如果没有收到回声,任务调度程序将继续每隔50mS将TaskFlag1设置为“TRUE”,直到HC-SR04在210mS后超时并且Echo引脚降低。 HC-SR04忽略由measure()函数产生的所有10uS启动脉冲。
210mS的超时值对应3550cm的距离。..因此距离突然跳跃阅读。
重点是所有距离读数都小于400厘米是正确的。 ]
典型波形
照片2,3,4中显示了5cm,10cm,20cm和200cm距离的波形,以及5.
每张照片中的顶部曲线是“Trig”引脚。..。..每张照片中的下部曲线是“Echo”引脚。
每个“Echo”脉冲的持续时间可以通过将迹线长度乘以每张照片右下角显示的“uS/div”值来计算。
计算距离
可以从公式计算出精确距离:
距离(cm)=脉冲长度*声速/2 * 100 。..。..。..。..。..。..。..。..。..。..。..。..。..。.(1)
这假设“声速”为340m/S,并且回波距离是实际距离的两倍。
也可以计算距离使用公式:
距离(cm)=脉冲长度(uS)/59 。..。..。..。..。..。..。..。. 。..。..。..。..。..。..。..。..。..。..。..。..。..。..。..。..。. 。..。(2)
通过调整常数值59可以得到确切的距离。
[注意:
常数的59值推导如下:
声速约为340m/S,为0.034cm/uS(厘米/微秒) nd)。
0.034cm/uS的倒数是29.412uS/cm,当乘以2以允许返回路径时,倒圆时等于58.824或59。 ]
示例1:
将脉冲长度2400uS代入等式( 1)我们得到:
距离= 2400/1000000 * 340/2 * 100 = 40.8cm
示例2:
将脉冲长度2400uS代入等式(2)得到:
距离= 2400/59 = 40.7cm
步骤4:代码
代码包含一个“measure()”函数,使用instructable https://www中描述的任务调度程序每50mS调用一次。 instructables.com/id/Multi-task-Your-。..
measure()函数包含以下代码:
// ----- generate 10uS start pulse
digitalWrite(Trig,HIGH);
delayMicroseconds(10);
digitalWrite(Trig,LOW);
// ----- measure the distance
while (!digitalRead(Echo)); //wait for Echo pin to go high
start_time = micros();
while (digitalRead(Echo)); //wait for Echo pin to go low
finish_time = micros();
time_taken = finish_time - start_time;
Distance = ((float)time_taken)/59;
完整代码“Ultrasonic_range_finder将此文本文件的内容复制到Arduino草图中,将其保存为“Ultrasonic_range_finder”(不带引号),然后编译并上传到Arduino。
步骤5:测量距离
要查看距离读数,请单击“工具|串行监视器”并将速度设置为115200波特。
可以通过沿标尺放置物体然后调整“距离”的常数“59”值来校准距离读数,直到显示精确读数。
-
Arduino
+关注
关注
188文章
6468浏览量
186935 -
超声波测距仪
+关注
关注
1文章
47浏览量
13883
发布评论请先 登录
相关推荐
评论