HC-SR04 超声波传感器使用教程

Arduino连接超声波传感器测距


超声波传感器适用于对大幅的平面进行静止测距。普通的超声波传感器测距范围大概是2cm-450cm,分辨率3mm(测试环境没那么好,个人实测比较稳定的距离10cm-2m左右,超过此距离就经常有偶然不准确的情况发生了,当然不排除技术问题。)

测试对象是SRF-04超声波传感器,有四个脚:5v电源脚(Vcc),触发控制端(Trig),接收端(Echo),地端(GND)

模块使用方法
使用本模块,占用单片机的两个IO口,一个IO口做为触发端。一个IO口做为回波PWM信号捕捉引脚。写程序时,先在TXD引脚端为8个40K周期电平,程序处理变换成一个PWM的信号从RXD引脚输出,一旦检测到有回波信号则输出回响信号,供我们方便使用。我们使用时,只需读出的低电平时间(T)。回响信号是一个脉冲的宽度成正比的距离对象。可通过发射信号到收到的回响信号时间间隔可以计算得到距离。公式: uS/58=厘米或者uS/148=英寸。也可以通过声波在空气中传播公式L=340T/2。就可以求出L(测量的距离)。如果没有检测到回响信号,模块回响信号脚将输出约140uS的电平,以防止发射信号对回响信号的影响。


模块工作原理: 

采用IO触发测距,给至少10us的高电平信号;

模块自动发送8个40HKz的方波,自动检测是否有信号返回;

有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间,测试距离=(高电平时间*声速(340m/s))/2


电路连接方法
 


Arduino程序例子:

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.0//将回波时间换算成cm 
cm = (int(cm * 100.0)) / 100.0//保留两位小数 
Serial.print(cm); 
Serial.print("cm"); 
Serial.println(); 
delay(1000); 



TAG: Milk-V Duo网口 ESP32-S3FH4R2迷你Tiny开发板蓝牙邮票孔 Uno Minima RA4M1 ZERO迷你R7FA4M1开发板Tiny兼容Arduino兼容R4 Flash固件的烧录与擦除 英伟达NVIDIA Jetson TX2 NX核心模组AI人工智能开发板RAM-4G eMMC-16 1.33TFLOPS RS232转RJ45 串口屏 Arducam 64MP Camera 树莓派RP2040摄像头 工业级8路以太网转继电器PoE供电Modbus物联网 X1012树莓派5 POE PCIE转M.2 NVME SSD固态硬盘扩展Pi5以太网供电 ESP32-S3开发板 2.8寸圆形LCD显示屏480x480 触摸屏 板载加速度与陀螺仪QMI8658传感器/SD卡槽/电池接口/RTC/MP3喇叭音频 适用于Arduino 树莓派18.5inchFHD LCD1920x1080触摸显示屏mini PC 树莓派UGV Beast ROS2 越野履带 开源AI云台机器人小车OpenCV ESP32-S3 lilygo ESP32-H2-MINI-1-N4模组 ESP32-S3 2.1寸LCD 移远SIMCom EG25-G GNSS全球定位4G通讯模块LTE Cat 4 PCI Express Mini Card 树莓派舵机驱动板 树莓派