在树莓派中使用超声波传感器测量距离

Excelsior_07

我正在尝试使用超声波传感器来测量从传感器(S)到障碍物(X)的距离(D)。基本原理是,我将发送声音脉冲并将其接收回去,并使用从S到X并返回(例如T)所花费的时间,我将使用以下公式计算距离:D =(V * T)/ 2。(V是空气中的声音速度)。以下是一些实现相同功能的python代码:

#Define GPIO to use on Pi
GPIO_TRIGGER = 23
GPIO_ECHO    = 24
print "Ultrasonic Measurement"

# Set pins as output and input
GPIO.setup(GPIO_TRIGGER,GPIO.OUT)  # Trigger
GPIO.setup(GPIO_ECHO,GPIO.IN)      # Echo

# Set trigger to False (Low)
GPIO.output(GPIO_TRIGGER, False)

# Allow module to settle
time.sleep(0.5)

# Send 10us pulse to trigger
GPIO.output(GPIO_TRIGGER, True)
time.sleep(0.00001)
GPIO.output(GPIO_TRIGGER, False)
start = time.time()

while GPIO.input(GPIO_ECHO)==0:
    start = time.time()

while GPIO.input(GPIO_ECHO)==1:
     stop = time.time()

# Calculate pulse length
elapsed = stop-start

# Distance pulse travelled in that time is time
# multiplied by the speed of sound (cm/s)
distance = elapsed * 34300

# That was the distance there and back so halve the value
distance = distance / 2

我很难理解为什么开始时间和停止时间是这样计算的。在我看来,开始时间是“我们第一次收到高信号时”的时间,而停止时间是“我们最后一次收到高信号时”的时间,因此它们的差值就是“时间”。脉冲是高电平”,我认为这与距离无关,因为每次都会在相同的持续时间内发送高电平。我尝试查看其他来源,他们似乎都只考虑这次,即ECHO传感器输入高的时间。但是,我不同意。

它认为代码应该像这样:

# start time is time when we start sending the signal
start = time.time()
GPIO.output(GPIO_TRIGGER, True)
time.sleep(0.00001)
GPIO.output(GPIO_TRIGGER, False)

while GPIO.input(GPIO_ECHO)==0:
    pass
# stop time is the time when we first get a high on the output.
stop = time.time()

while GPIO.input(GPIO_ECHO)==1:
    pass

# Calculate pulse length
elapsed = stop-start

在我看来,我缺少明显的东西。如果有人可以指出我的意思,我将不胜感激。

G.睡觉

这是因为超声波回波传感器就是这样工作的。您将脉冲发送到GPIO_TRIGGER线路。这导致传感器开始发送短暂的声音脉冲。但是,这本身需要一些时间。然后,它必须等待,直到收到该脉冲的回声。当它的传感器的输出变高完成发送声脉冲,并将其再次变为低时,它已经完成接收的声音脉冲。两者之间的时间是声脉冲到达某个物体并反射回去所花费的时间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在JavaScript中播放超声波WAV / PCM文件而不丢失数据

来自分类Dev

超声波传感器HC-SR04 + Arduino计算?

来自分类Dev

Arduino UNO +以太网屏蔽+超声波传感器=失败

来自分类Dev

Python:用树莓派将传感器数据推送到xively时出错TypeError:__init __()

来自分类Dev

如何在Android智能手机中使用加速度传感器找到位移距离?

来自分类Dev

Arduino + HC SR04超声波+电位计

来自分类Dev

正交传感器窦信号到距离值

来自分类Dev

为什么使用arduino uno,sr04超声波传感器和9个led不能使用此代码?

来自分类Dev

Microsoft Band的距离传感器中的CurrentMotion不变

来自分类Dev

如何在Unity中使用Android光传感器

来自分类Dev

上树莓裨使用Python最有效的方式来存储数据从传感器

来自分类Dev

如何与HM-19 BLE模块通讯并使用超声波传感器进行扫描

来自分类Dev

消除传感器测量中的峰值

来自分类Dev

我可以在使用Arduino超声波传感器处理移动/播放时制作图像序列吗?

来自分类Dev

我可以在使用Arduino超声波传感器处理移动/播放时制作图像序列吗?

来自分类Dev

使用鼠标的激光传感器进行心跳测量

来自分类Dev

距离小于4厘米时伽利略和超声波误差

来自分类Dev

arduino uno和超声波传感器的结果不正确

来自分类Dev

Android Wear:测量传感器并防止环境模式/睡眠

来自分类Dev

简单的Verilog即可控制MD1715超声波驱动器

来自分类Dev

在特定区域内分布许多超声波传感器

来自分类Dev

将传感器数据树莓派保存到数据库

来自分类Dev

使用 python 用 BBB 读取多个超声波传感器

来自分类Dev

温度传感器 /w 树莓派 3

来自分类Dev

我可以使用 FFMPEG 来录制超声波吗?

来自分类Dev

在 NodeMCU 中使用 Micropython 访问多个传感器值?

来自分类Dev

我有一张图片 18F4550 如何从超声波传感器读取距离

来自分类Dev

如何使用带有树莓派(C语言)的i2c程序配置霍尔效应传感器(si7210)

来自分类Dev

arduino 无法打开树莓派的红外传感器

Related 相关文章

  1. 1

    如何在JavaScript中播放超声波WAV / PCM文件而不丢失数据

  2. 2

    超声波传感器HC-SR04 + Arduino计算?

  3. 3

    Arduino UNO +以太网屏蔽+超声波传感器=失败

  4. 4

    Python:用树莓派将传感器数据推送到xively时出错TypeError:__init __()

  5. 5

    如何在Android智能手机中使用加速度传感器找到位移距离?

  6. 6

    Arduino + HC SR04超声波+电位计

  7. 7

    正交传感器窦信号到距离值

  8. 8

    为什么使用arduino uno,sr04超声波传感器和9个led不能使用此代码?

  9. 9

    Microsoft Band的距离传感器中的CurrentMotion不变

  10. 10

    如何在Unity中使用Android光传感器

  11. 11

    上树莓裨使用Python最有效的方式来存储数据从传感器

  12. 12

    如何与HM-19 BLE模块通讯并使用超声波传感器进行扫描

  13. 13

    消除传感器测量中的峰值

  14. 14

    我可以在使用Arduino超声波传感器处理移动/播放时制作图像序列吗?

  15. 15

    我可以在使用Arduino超声波传感器处理移动/播放时制作图像序列吗?

  16. 16

    使用鼠标的激光传感器进行心跳测量

  17. 17

    距离小于4厘米时伽利略和超声波误差

  18. 18

    arduino uno和超声波传感器的结果不正确

  19. 19

    Android Wear:测量传感器并防止环境模式/睡眠

  20. 20

    简单的Verilog即可控制MD1715超声波驱动器

  21. 21

    在特定区域内分布许多超声波传感器

  22. 22

    将传感器数据树莓派保存到数据库

  23. 23

    使用 python 用 BBB 读取多个超声波传感器

  24. 24

    温度传感器 /w 树莓派 3

  25. 25

    我可以使用 FFMPEG 来录制超声波吗?

  26. 26

    在 NodeMCU 中使用 Micropython 访问多个传感器值?

  27. 27

    我有一张图片 18F4550 如何从超声波传感器读取距离

  28. 28

    如何使用带有树莓派(C语言)的i2c程序配置霍尔效应传感器(si7210)

  29. 29

    arduino 无法打开树莓派的红外传感器

热门标签

归档