Arduino:超声波传感器+测距

作者:清风拂面 | 创建时间: 2023-07-21
HC-SR04超声波传感器测距, 功能:提供50px--450m的非接触式距离感测功能, 组成:包括超声波发射器、接收器与控制电路。 基本工作原理:超声波测距模块一触发信号后发射超声波, 当超声波投射到物体而反射回来时, 模块输出一回响信号...
Arduino:超声波传感器+测距

操作方法

超声波传感器主要技术参数: 使用电压:DC5V; 静态电流:小于2mA; 电平输出:高5V; 电平输出:底0V; 感应角度:不大于15度; 探测距离:50px-11250px,高精度可达5px; 接线方式端口:VCC(电源)、trig(控制端)、echo(接收端)、GND(地)。

超声波传感器工作原理: ①采用I/O触发测距,给至少10us的高电平信号; ②模块自动发送8个40kHZ的方波,自动检测是否有信号返回; ③有信号返回,通过I/O输出一高电平,高电平持续的时间就是超声波从发射到返回的时间。 测试距离=(高电平时间*声速(340M/S))/2。

超声波传感器工作原理(续): 超声波传感器主要利用多普勒原理, 通过晶振向外发射超过人体能感知的高频超声波; 一般选用25~40kHz波,然后控制模块检测反射回来波的频率, 如果区域内有物体运动,反射波频率就会有轻微的波动,即多普勒效应, 以此来判断照明区域的物体移动,从而达到控制开关的目的。 超声波的纵向振荡特性,可以在气体、液体及固体中传播且其传播速度不同;它还有折射和反射现象, 在空气中传播其频率较低,衰减较快; 而在固体、液体中则衰减较小,传播较远。 超声波传感器正是利用超声波的这些特性。

接线图: Arduino+超声波传感器

Arduino编程基础知识: pulseIn():用于检测引脚输出的高低电平的脉冲宽度。 pulseIn(pin, value); pulseIn(pin, value, timeout);//时间 Pin---需要读取脉冲的引脚 Value---需要读取的脉冲类型,HIGH或LOW Timeout---超时时间,单位微秒,数据类型为无符号长整型。

超声波传感器测距程序(典型): const int TrigPin = 2; const int EchoPin = 3; 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; //将回波时间换算成cm cm = (int(cm * 100)) / 100; //保留两位小数 Serial.print(cm); Serial.print("cm");//串口输出 Serial.println(); delay(1000); }

温馨提示

测试距离=(高电平时间*声速(340M/S))/2;
pulseIn():用于检测引脚输出的高低电平的脉冲宽度;
超声波的纵向振荡特性,可以在气体、液体及固体中传播且其传播速度不同;
点击展开全文

更多推荐