超声波测距驱动-HCSR04(增加温度补偿,误差极小)

micro:bit编程、教学、展示
STEM
回复
头像
shaoziyang
帖子: 700
注册时间: 2019年 10月 21日 13:48

超声波测距驱动-HCSR04(增加温度补偿,误差极小)

#1

帖子 shaoziyang » 2019年 11月 25日 12:20

原帖作者:chpczx 发表于 2019-7-5

Code: Select all

from microbit import *
from time import sleep_us
from machine import time_pulse_us
from math import sqrt

class Hcsr04():
    def __init__(self, pin_trig, pin_echo):
        self.pin_trig = pin_trig
        self.pin_echo = pin_echo

    # 设置速度温度补偿
    def speed(self):
        t = temperature()
        sp = 331*sqrt(1+t/273)
        return sp

    # 距离返回单位为毫米
    def distance(self):
        self.pin_echo.read_digital()

        self.pin_trig.write_digital(1)
        sleep_us(10)
        self.pin_trig.write_digital(0)

        ts = time_pulse_us(self.pin_echo, 1, 30000)
        v = self.speed()
        if ts > 0:
            return ts * v // 2000
        return ts

if __name__== "__main__":
    while True:
        hcsr = Hcsr04(pin15, pin16)
        print(hcsr.distance())
        sleep(500)
说明:本驱动参照了邵子扬老师(我是邵老师在孝感培训的学员)对hc-sr04写的驱动,因为误差较大,增加温度补偿后,误差大大减小。

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章