本帖最后由 董董soul 于 2016-10-27 11:06 编辑
科学家们将每秒钟振动的次数称为声音的频率,它的单位是赫兹(Hz)。我们人类耳朵能听到的声波频率为20Hz~20000Hz。当声波的振动频率小于20Hz或大于 20000Hz时,我们便听不见了。因此,我们把频率高于20000赫兹的声波称为“超声波”。由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。
超声波测距原理
超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2 。这就是所谓的时间差测距法。
超声波测距的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。由此可见,超声波测距原理与雷达原理是一样的。
测距的公式表示为:L=C×T
式中L为测量的距离长度;C为超声波在空气中的传播速度;T为测量距离传播的时间差(T为发射到接收时间数值的一半)。
这节课我们就介绍一下怎样使用SR04超声波模块来进行距离测量。会用到上节课脉冲计时所学到的知识,通过计算脉冲时常来算出来超声波传感器所感知到的距离。
参数 | SR04超声波模块
| 工作电压 | DC5V | 工作电流 | 15mA | 工作频率 | 40kHz | 最远射程 | 4m | 最近射程 | 2cm | 测量角度 | 15度 | 输入触发信号 | 10uS的TTL脉冲 | 输出回响信号 | 输出TTL电平信号,与射程成比例 |
- const int TrigPin = 8;
- const int EchoPin = 9;
- float cm;
- void setup()
- {
- Serial.begin(9600);
- pinMode(TrigPin, OUTPUT);
- pinMode(EchoPin, INPUT);
- }
- void loop()
- {
- digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
- delayMicroseconds(2);
- digitalWrite(TrigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(TrigPin, LOW);
- cm = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm
- Serial.print(cm);
- Serial.print("cm");
- Serial.println();
- delay(1000);
- }
复制代码
|