超声波的应用

认识超声波

可在空气中传播的超声波频率,大约介于20~200KHz之间,其衰减程度与频率成正比(即频率越高,传播距离越短)
在室温20°C的环境中,声波的传输速度约为344m/s(**声音在水中传播的速度比在空气快60倍),因此,假设超声波往返的时间为600μs,可通过公式: = 344 / × 2 距离 = 344米/秒 \times \frac{传播时间}{2} 求得:被测物的距离为10.3cm。

影响声音传播速度的因素

  1. 空气的密度会影响声音的传播速度,空气的密度越高,声音的传播速度越快,而空气的密度又与温度密切相关,考虑温度变化的声音传播速度的近似公式:
    = V 0 + 0.6 × T 速度 = V_0 + 0.6 \times T
    其中, V 0 V_0 :声音在0摄氏度时的传播速度331.5米/秒。T:温度
  2. 物体的形状和材质会影响超声波传感器的效果和准确度,探测表面平整的墙壁和玻璃时,声波将会入射角度反射回来;只要物体表面的坑洞尺寸小于声波波长的 1 4 \frac{1}{4} ,即可视为平整表面。波长计算公式:
    = 波长 = \frac{相速度}{频率}

超声波传感器简介

超声波传感器模块上面通常有两个超声波元器件,一个用于发射,一个用于接收。电路板上有4个引脚:VCC(正极)、Trig(触发)、Echo(回应)、GND(接地),主要参数:

  • 工作电压与电流 :5V、15mA。
  • 感测距离 :2~400cm
  • 感测角度:不大于15°。
  • 被测物的面积不要小于50cm²并且尽量平整。
  • 具备温度补偿电路。
    在超声波模块的触发脚位输入10微妙以上的高电位,即可发射超声波,发射超声波之后,与接收到传回的超声波之前,“响应”脚位呈现高电位。因此,程序可从“响应”脚位的高电位脉冲持续时间,换算出被测物的距离。

任务1:使用超声波传感器制作数字量尺

实验说明: 使用超声波感测与障碍物之间的距离,显示在串口监视器或LCD模块。
实验材料:

名称 数量
超声波传感器 1个

测量脉冲持续时间的pulseln()函数

Arduino提供一个测量脉冲时间长度的pulseln()函数,语法格式:

Syntax

pulseIn(pin, value)

pulseIn(pin, value, timeout)
此函数将传回微妙单位的脉冲时间,建议用unsigned long类型的变量来存放。
pulseln()函数会等待脉冲出现再开始计时,预设的等待截止时间是1秒(即 1 0 6 10^6 微秒),假如脉冲信号未在等待时间内出现,pulseln()将传回0.假如有需要,指定timeout的值为10微秒~3分钟的等待截止时间。

如果想要测量信号的频率,可以采用Martin Nawrath开发的频率计时器扩展库“FreqCounter”。

Parameters

pin: the number of the pin on which you want to read the pulse. (int)

value: type of pulse to read: either HIGH or LOW. (int)

timeout (optional): the number of microseconds to wait for the pulse to start; default is one second (unsigned long)
实验程序:

const byte trigPin = 10;
const int echoPin = 9;
unsigned long d;
unsigned long ping() {
	digitalWrite(trigPIN,  HIGH);
	delayMicroseconds(5);
	digitalWrite(trigPin, LOW);
	return pulseln(echoPin, HIGH);
}
void setup()  {
	pinMode(trigPin, OUTPUT);
	pinMode(echoPin, INPUT);
	Serial.begin(9600);
}

void loop(){
	d = ping() / 58;

	Serial.print(d);
	Serial.print("cm");
	Serial.println();
	delay(1000);
}

猜你喜欢

转载自blog.csdn.net/acktomas/article/details/84069364