超声波模块HC-SR04
超声波测距工作原理
可以听到的声波:振动频率为20Hz~20000Hz
超声波:频率高于20000赫兹的声波
超声波特性:指向性强,能量消耗缓慢,在介质中传播的距离较远,经常用于距离的测量
超声波测距原理:超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离s=340t/2 。
模块主要技术参数
使用电压:DC---5V,静态电流:小于2mA
电平输出:高5V,低0V
感应角度:不大于15度,探测距离:2cm--450cm
高精度 可达0.2cm
模块引脚说明
VCC:供5V电源,GND:地线
TRIG:触发控制信号输入端,ECHO:回响信号输出端
测距时,用控制板给TRIG端输入脉冲信号,用ECHO端计算发射到回波的时间
系统接线
TRIG:接控制板2号引脚,ECHO:接控制板3号引脚,
VCC和GND分别接控制板5V和GND。
程序设计
1 #define Trig 2 //引脚Tring 连接 IO D2 2 #define Echo 3 //引脚Echo 连接 IO D3 3 float cm; //距离变量 4 float temp; 5 6 void setup() 7 { 8 Serial.begin(9600); 9 pinMode(Trig, OUTPUT); 10 pinMode(Echo, INPUT); 11 } 12 13 void loop() 14 { 15 //给Trig发送一个低高低的短时间脉冲,触发测距 16 digitalWrite(Trig, LOW); //给Trig发送一个低电平 17 delayMicroseconds(2); //等待2微妙 18 digitalWrite(Trig,HIGH); //给Trig发送一个高电平 19 delayMicroseconds(10); //等待10微妙 20 digitalWrite(Trig, LOW); //给Trig发送一个低电平 21 temp=float(pulseIn(Echo,HIGH)); //存储回波等待时间,pulseIn()返回脉冲的高电平时间长度,单位是微秒 22 //pulseIn函数会等待引脚变为HIGH,开始计算时间,再等待变为LOW停止计时 23 //声速是340m/1s,换算成34000cm/1000000μs=34/1000 24 //距离(厘米)=(回波时间*(34/1000))/2=回波时间*17/1000 25 cm=(temp*17)/1000; //把回波时间换算成cm 26 Serial.print("Echo="); 27 Serial.print(temp); //串口输出等待时间 28 Serial.print("|| Distance="); 29 Serial.print(cm); //串口输出距离 30 Serial.println("cm"); 31 delay(100); 32 }