MicroPython RP2040使用HC-SR04

本文详细解释了HC-SR04超声波测距模块的工作原理,包括硬件连接、触发测距过程、距离计算方法以及消抖处理。同时提供了使用RP2040的Python代码示例,展示了如何在移动机器人等领域应用这种模块。
摘要由CSDN通过智能技术生成

HC-SR04是一种超声波测距模块,其工作原理基于超声波的发射和接收。该模块可提供2cm至400cm的非接触式距离感测功能,测距精度达到3mm。以下是其工作原理的详细描述:

  1. 硬件准备:首先,需要给超声波模块接入电源和地线,以确保其正常工作。
  2. 触发测距:通过给脉冲触发引脚(trig)输入一个长为10us以上时长的高电平方波,模块会自动发射8个40KHz的声波。与此同时,回波引脚echo端的电平会由0变为1。此时,应启动定时器开始计时。
  3. 接收回波:当超声波遇到障碍物并返回时,回波引脚端的电平会由1变为0。此时,应停止定时器计数。定时器所记录的时间即为超声波从发射到返回的总时长。
  4. 距离计算:根据声音在空气中的速度(约为344米/秒),可以计算出所测的距离。具体计算公式为:测试距离 = (计时时间 × 声速)/ 2。
  5. 消抖处理:由于超声波测量的时间很短,一次测量可能存在误差。为了获得更准确的结果,可以通过多次测量求平均值的方式进行消抖处理。

此外,HC-SR04超声波测距模块具有计算简单、易于实时控制、测量精度高等优点,因此在移动机器人研制等领域得到了广泛应用。、

引脚接线:

HC-SR04RP2040
VCC        VCC        
TrigGPIO1
EchoGPIO0
GndGnd

代码

from machine import Pin
import time
 
# 超声波测距模块
trig = Pin(1,Pin.OUT)  # Trig_RX_SCL_I/O
echo = Pin(0,Pin.IN,Pin.PULL_UP)  # Echo_Tx_SDA
 
def HCSR04(trig,echo,mode):
    trig.value(0)  # 先通过GPIO把MCU触发信号信号拉低2us
    time.sleep_us(2)
    
    trig.value(1)  # 再通过GPIO把MCU触发信号信号拉高10us,触发模块测距
    time.sleep_us(10)
    trig.value(0)  # 再通过GPIO把MCU触发信号信号拉低
    
    while echo.value() == 0:
        high = time.ticks_us()  # time.ticks_us返回不断递增的微秒计数器
        #print("high: ", high)
    while echo.value() == 1:
        low  = time.ticks_us()
    
    distance = 0
    if mode:
        # 计算方法1
        distance = (low - high) / 58 # us
    else:
        # 计算方法2 - 根据Echo管脚高电平的持续时间计算距离值
        distance = ((low - high) * 0.0340) / 2 # 声速 
    
    time.sleep(0.2) # 两次测量时间不能低于200ms
    
    if distance > 400:
        distance = 0  # 有效距离2 - 400cm
    return distance
 
def main():
    while True:
        distance = HCSR04(trig,echo,1)  # 听过HCSR04函数返回距离值
        print(str(distance)+'cm')
 
if __name__ == "__main__":
    main()

运行结果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值