打印

单片机超声波测距详解

[复制链接]
570|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

常用的测距感应器除了红外之外,超声波也是一个很好的选择,它可以在2cm 到200 cm之间拿到相对快速以及准确的数据,轻松帮我们定位距离,以下以瑞昱的ameba RTL8722 wifi+蓝牙单片机为例,来看一下如何用超声波模组来实现测距,



材料准备
  • Ameba x 1
  • HC-SR04 Ultrasonic x 1
  • 降压电阻 或 Level converter

范例说明HC-SR04是一款超音波测距的模组,由于形状像两只眼睛,所以常被装在自走车或机械昆虫上,兼俱美观与实用的角色。它的运作方式,首先我们先在TRIG这根GPIO对它toggle high (即pull high再pull low) 。接着HC-SR04会发出8个40k Hz的音波讯号出去,并且将ECHO这根GPIO的讯号pull high。等到音波讯号回来,再将ECHO的GPIO pull low。 假设音速是340 m/s,那么音波在空气中行走1公分所需的时间是340 * 100 * 10^-6 = 29 us。 HC-SR04的音波从发射出到折回是两段距离,所以HC-SR04与目标物的距离是 (time / 29) / 2 = time / 58。HC-SR04的工作电压是5V,为了避免ECHO这根GPIO在pull high的5V电压会损坏Ameba的GPIO,所以我们需要做降压的动作,底下是使用电阻降压的方式: 其中电阻只要取适当大小,比例为1:2,图中例子使用10kΩ与20kΩ。 HC-SR04的TRIG这根GPIO可以辨别3.3V的电压,所以不需要特地做电压转换。 如果不想使用电阻,也可以使用Level converter。以TXB0108 8 channel level converter为例: 程式的部份,打开“File” -> “Examples” -> “AmebaGPIO” -> “HCSR04_Ultrasonic” 编译并上传到Ameba,完成之后按下Reset按钮。打开Serial Monitor,可以看到每两秒量出一笔数据。 因为HC-SR04使用超音波反射的方式,所以如果遇到表面粗糙或柔软,音波可能会散射或被吸引,因而影响实验数据,所以可以先找表面平整的物体做测试。

程式码说明每次测量时,将TRIG pin pull high 10us之后再pull low告诉HC-SR04准备测量:
digitalWrite(trigger_pin, HIGH);delayMicroseconds(10);digitalWrite(trigger_pin, LOW);之后使用pulseIn测量ECHO pin pull high的时间duration = pulseIn (echo_pin, HIGH);再根据公式算出距离并印在Serial Monitor上distance = duration / 58;


使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

62

帖子

0

粉丝