Arduino实验二十三:HC-SR04超声波传感器实验

来自丢石头百科

模块介绍

模块说明

超声波模块主要是由两个通用的压电陶瓷超声传感器,并加外围信号处理电路构成的。具体为:两个压电陶瓷超声传感器一个用于发出超声波信号,一个用于接收反射回来的超声波信号。由于发出信号和接收信号都比较微弱,所以需要通过外围信号放大器提高发出信号的功率,和将反射回来信号进行放大,以能更稳定地将信号传输给单片机。超声波模块常用于机器人避障、物体测距、液位检测、公共安防、停车场检测等场所。

工作原理

超声波测距原理是在超声波发射装置发出超声波,它的根据是接收器接到超声波时的时间差,与雷达测距原理相似。 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。(超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/200)

    • Ultrasonic Distance Sensor 原理.png

参数说明

  • 工作电压:DC3.3-5V
  • 输出端口:GPIO/UART/IIC/1-Wrie
  • 输出信号:TTL 电平,与射程成正比
  • 工作电流:2.2mA
  • 工作频率:40Hz
  • 测量距离:2cm - 4.5m
  • 测量角度:15度
  • 测量精度:0.1cm+2%
  • 工作温度:-10°C-+70°C
  • PCB尺寸:45mm*20mm*16mm
  • UART设置:波特率 9600,起始位 1位,停止位 1 位,数据位 8 位,无奇偶校验位,无流控

引脚说明

  • Ultrasonic Distance Sensor HC-SR04.jpg
  • 引脚说明
    • 1、VCC:电源正极,接电压3V-5.5V
    • 2、Trig/Rx/SCL/ I/O:接收MCU发送的控制脉冲
      • GPIO模式:Trig 触发信号,接外部电路的Trig端
      • UART模式:Rx 接收信号,接外部电路的Tx端
      • IIC模式:SCL 时钟信号,接外部电路的SCL端
      • 1-Wire模式:I/O 接收/发送信号
    • 3、Echo/Tx/SDA:向MCU发送数据脉冲
      • GPIO模式:Echo 反馈信号,接外部电路的Echo端
      • UART模式:Tx 发射信号,接外部电路的Rx端
      • IIC模式:SDA 数据信号,接外部电路的SDA端
    • 4、GND:电源负极,接地
  • 功能选择端说明
    • Ultrasonic Distance Sensor (HC-SR04) 引脚说明.png

操作说明

  • 实际应用,如果需要精确距离值,必需要考虑温度影响,做温度补偿
  • GPIO模式
    • Ultrasonic Distance Sensor (HC-SR04) GPIO.png
    • 工作模式同老版本HC-SR04。外部MCU给模块Trig脚一个大于10uS的高电平脉冲;模块会给出一个与距离等比的高电平脉冲信号,
    • 可根据脉宽时间“T”算出:距离=T*C/2 (C为声速)
    • 声速温度公式:c=(331.45+0.61t/℃)m•s-1 (其中330.45是在0℃) 其中:
      • 0℃声速: 330.45M/S
      • 20℃声速: 342.62M/S
      • 40℃声速: 354.85M/S
      • 0℃-40℃声速误差7%左右。
  • UART模式
    • UART模式:波特率9600,起始位1位,停止位1位,数据位8位,无奇偶校验位,无流控制
    • 连接串口。外部MCU或PC发命令0XA0,模块完成测距后发3个返回距离数据,BYTE_H,BYTE_M与BYTE_L。
    • 距离计算方式如下(单位mm):
      • 距离=((BYTE_H<<16)+(BYTE_M<<8)+ BYTE_L)/1000
  • IIC模式
    • IIC地址: 0X57
    • IIC传输格式:
      • 写数据:Ultrasonic Distance Sensor (HC-SR04) IIC 1.png
      • 读数据:Ultrasonic Distance Sensor (HC-SR04) IIC 2.png
    • 命令格式:Ultrasonic Distance Sensor (HC-SR04) IIC.jpg
    • 向模块写入0X01,模块开始测距;等待200mS(模块最大测距时间)以上。直接读出3个距离数据。BYTE_H,BYTE_M与BYTE_L。
    • 距离计算方式如下(单位mm):距离=((BYTE_H<<16)+(BYTE_M<<8)+ BYTE_L)/1000

实验说明

实验现象

  • 通过串口打印模块测量到的距离

电路连接

  • Arduino实验二十三:HC-SR04超声波传感器实验 接线1.png

主要程序

  digitalWrite(trig,LOW);
  delayMicroseconds(20); 
  digitalWrite(trig,HIGH);
  delayMicroseconds(20);
  digitalWrite(trig,LOW);                     //发一个20US的高脉冲去触发Trig
  
  distance  = pulseIn(echo,HIGH);             //计数接收高电平时间
  distance  = distance*340/2/10000;           //计算距离 1:声速:340M/S  2:实际距离1/2声速距离 3:计数时钟为1US
  Serial.print("距离: ");
  Serial.print(distance);
  Serial.println("cm");
  delay(20);        //单次测离完成后加20mS的延时再进行下次测量。防止近距离测量时,测量到上次余波,导致测量不准确。
  delay(500);                                  //500mS测量一次

相关下载