一、超声波测距简介
超声波测距原理是在超声波发射装置发出超声波,接收器接到反射回来的超声波时的时间差来计算距离,与雷达测距原理相似。 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。(超声波在空气中的传播速度为340m/s,根据计时器记录的时间t(秒),就可以计算出发射点距障碍物的距离(s),即:s=340t/2)
二、HC-SR04模块
HC-SR04 超声波测距模块可提供 2cm-400cm 的非接触式距离感测功能,测距精度可达高到的非接触式距离感测功能,测距精度可达高到 3mm ;
1、引脚说明
- Vcc:+5V电源供电
- Trig:输入触发信号(可以触发测距)
- Echo:传出信号回响(可以传回时间差)
- Gnd:接地
2、电气参数
3、超声时序
三、模块工作原理
四、Arduino程序实例
ultrasonic.ino
/** 超声波雷达引脚 **/
#define ULTRASONIC_IN_PIN 6 // 超声波接收脚 E
#define ULTRASONIC_OUT_PIN 7 // 超声波发射脚 T
//距离
float distance = 0;
void setup() {
Serial.begin(9600);
pinMode(ULTRASONIC\_IN\_PIN, INPUT); //
pinMode(ULTRASONIC\_OUT\_PIN, OUTPUT); //
Serial.println("-------------- setup ok -----------------");
}
void loop() {
digitalWrite(ULTRASONIC\_OUT\_PIN, LOW); //
delayMicroseconds(2);
digitalWrite(ULTRASONIC\_OUT\_PIN, HIGH); //超声波发送一个不小于10us的高脉冲
delayMicroseconds(10);
digitalWrite(ULTRASONIC\_OUT\_PIN, LOW); //
float Fdistance = pulseIn(ULTRASONIC\_IN\_PIN, HIGH); // 读取返回脉冲宽度(即高电平持续的时间长短),单位为ms
//distance = Fdistance / 3.4 / 10; // 时间转成距离 (单位:公分) 理论值340米/每秒,实际测试中并不准确
distance = Fdistance / 5.8 / 10; // 时间转成距离 (单位:公分)
Serial.print("检测结果:");
Serial.print(distance);
Serial.println("cm");
delay(2000);
}
四、Arduino IDE运行结果
-------------- setup ok -----------------
检测结果:0.00cm
检测结果:1377.44cm
检测结果:58.26cm
检测结果:55.56cm
检测结果:38.88cm
检测结果:39.38cm
检测结果:37.29cm
检测结果:38.71cm
检测结果:36.03cm
检测结果:53.85cm
检测结果:57.79cm