Arduino超声波模块原理

Arduino超声波模块(RUS-04)关于距离计算的问题

RUS-04 是由深圳市易创空间科技有限公司研发的一款将 RGB 灯珠和超
声波测距模块集成在一起的全新模块。
在这里插入图片描述

现阶段最常用的 HC-SR04 超声波是 4Pin(VCC, Trig, Echo, GND),工作时需要 Trig 发送触发信号,发送超声波信号,回波检测引脚 Echo 接收超声波返回信号。RUS-04 模块经过优化,只需要 **3pin(VCC, GND, IO)**即可完成测距,与HC-SR04在于 IO 先设置成输出模式触发超声波发送信号,然后再将 IO设置成输入模式,等待回波信号

原理:
不管上面是哪种方式触发,超声波测距的方法都是回声探测法,即超声波发射器向某一方向发射超声波,在发射时刻的同时计时器开始计时,超声波在空气中传播,途中碰到障碍物面阻挡就立即反射回来,超声波接收器收到反射回的超声波就立即停止计时。超声波在空气中的传播速度为 340m/s,根据计时器记录的时间 t,就可以计算出发射点距障碍物面的距离 s,即:s=340t/2。

工作过程:
1、IO 口设置成输出模式,给至少 10us 的高电平信号。
2、RUS-04 模块超声波自动发送 8 个 40khz 的方波。
3、IO 口设置成输入模式,等待有信号返回,当检测到一个高电平,高电平持续的时间就是超声波 从发射到返回的时间,测试距离=(高电平时间*声速(340M/S))/2。

时序图:
在这里插入图片描述
我们来分析一下这个时序图,先由触发信号启动超声波测距模块,也就是说,主机要先发送至少 10us 的高电平,触发超声波模块,模块内部发出信号是传感器自动回应的,我们不用去管它。输出回响信号是我们需要关注的。信号输出的高电平就是超声波发出到重新返回接收所用的时间。用定时器,可以把这段时间记录下来,算出距离,别忘了结果要除于 2,因为总时间是发送和接收的时间总和。

重点来了: “信号输出的高电平就是超声波发出到重新返回接收所用的时间” 很多人对这句话有疑惑,在看时序图的时候认为t1等于t2,这其实是不对的,高电平持续时间是发送超声波到接收到回波的间隔时间。平时都无电平或低电平,一般逻辑为,计算距离所需要的时间应该是从超声波发射时刻到接收时刻之间的时间差,那么是不是ECHO(IO)引脚从超声波发射产生高电平持续到接收超声波呢,并非如此,ECHO(IO)是从接收超声波时才输出高电平,高电平持续的时间即为超声波往返的时间也就是计算距离所需要的时间, 可以理解为,芯片在用计时器知道了来回的时间差之后再用高电平展示出来

讲完原理我们来做实验

接线图
在这里插入图片描述

下面贴一段代码:

const int SignalPin = 3;
unsigned long Time_Echo_us = 0;

void setup() {
    Serial.begin(9600);
    Serial.println("Ultrasonic sensor:");
}

void loop() {
    float distance;
    pinMode(SignalPin, OUTPUT);
    digitalWrite(SignalPin, LOW);
    delayMicroseconds(2);
    digitalWrite(SignalPin, HIGH);
    delayMicroseconds(20);
    digitalWrite(SignalPin, LOW);
    pinMode(SignalPin, INPUT);
    Time_Echo_us = pulseIn(SignalPin, HIGH);
    if ((Time_Echo_us < 60000) && (Time_Echo_us > 1)) {
        distance = Time_Echo_us / 58.00;
        Serial.print("distance is :");
        Serial.print(distance);
        Serial.print("cm");
        Serial.println();  
    }
    delay(1000);
}

对于代码中的Time_Echo_us / 58.00相信很多人也会有疑问,这里一并解决

声音在干燥、摄氏 20度的空气中的传播速度大约为343米/秒,合34,300厘米/秒。或者,我们作一下单位换算,34,300除以1,000,000厘米/微秒。
即为:0.0343厘米/微秒再换一个角度,1/(0.0343 厘米/微秒)
即:29.15 微秒/厘米。这就意味着,每291.5微秒表示10CM的距离。1厘米就是29.15微秒。但是发送后到接收到回波,声音走过的是2倍的距离呀。
所以实际距离就是1厘米,对应58.3微秒。实际上整个测距过程是测的发出声波到收到回波的时间,程序里的Time_Echo_us实际上是时间us。所以换成距离cm,要除以58。当然除以58.3可能更精确。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值