HC-SR04技术原理
简介
HC-SR04 模块可以测量 3cm – 4m 的距离,精确度可以达到 3mm。这个模块包括 超声波发射器、超声波接收器和控制电路三部分。有 4 个引脚。
参数表
项目 |
参数 |
工作电压 |
DC 5V |
工作电流 |
15mA |
最短测量距离 |
3cm |
最长测试距离 |
4m |
测量角度 |
15° |
Trigger引脚输入信号 |
10us TTL脉冲 |
Echo引脚输出信号 |
5V 脉冲信号 |
引脚定义
引脚 |
功能 |
VCC |
控制电压,DC 5V |
Trig |
接收来自树莓派的控制信号 |
Echo |
发送测距结果给树莓派 |
Gnd |
接地 |
物理原理
电子原理
树莓派向Trig引脚发送一个持续10us的脉冲信号。
HC-SR04接收到树莓派发送的脉冲信号,开始发送超声波(start sending ultrasoun),并把Echo置为高电平。然后准备接收返回的超声波。
当HC-SR04接收到返回的超声波(receive returned ultrasound)时,把Echo置为低电平。
从上述过程可以看出, Echo高电平持续的时间就是超声波从发射到返回所经过的时间间隔。
接线与程序
接线
GPIO可以自由选择,由程序决定。
程序
程序来自:树莓派上使用HC-SR04超声波测距模块 | 树莓派实验室 (nxez.com)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| import RPi.GPIO as GPIO import time
GPIO.setmode(GPIO.BCM)
GPIO_TRIGGER = 23 GPIO_ECHO = 24
GPIO.setup(GPIO_TRIGGER, GPIO.OUT) GPIO.setup(GPIO_ECHO, GPIO.IN) def distance(): GPIO.output(GPIO_TRIGGER, True) time.sleep(0.00001) GPIO.output(GPIO_TRIGGER, False) start_time = time.time() stop_time = time.time() while GPIO.input(GPIO_ECHO) == 0: start_time = time.time() while GPIO.input(GPIO_ECHO) == 1: stop_time = time.time() time_elapsed = stop_time - start_time distance = (time_elapsed * 34300) / 2 return distance if __name__ == '__main__': try: while True: dist = distance() print("Measured Distance = {:.2f} cm".format(dist)) time.sleep(1) except KeyboardInterrupt: print("Measurement stopped by User") GPIO.cleanup()
|