2018/1/16

超音波距離センサの仕組み[HC-SR04とラズパイの場合]


超音波距離センサは、計測対象物に超音波を発信して、その反射波を受信するまでの時間から、センサと対象物との距離を計算・検出するセンサです。 この記事では超音波距離センサHC-SR04とRaspberryPiを使って、超音波距離センサの距離検出の仕組みを紹介します。 記事の最後にRaspberryPiでHC-SR04を動かすサンプルコードも掲載します。

超音波距離センサの仕組み

超音波距離センサの仕組みは、超音波を計測対象に発射し、反射が返ってくるまでに要した時間と、音の進むスピードから距離を計算し求めるものです。距離測定の手順を示します。

①パルス発射・計測開始

②パルス伝搬中

②パルス伝搬中

③反射パルス到着・記録終了

④距離計算

実際に距離を測定してみる

以降はラズパイを使ってセンサ使って距離を測定します。

必要なもの

  • RaspberryPi2

  • ジャンパワイヤ(メス—メス)×4本

  • 超音波距離センサHC-SR04×1個

HC-SR04の仕様

測距範囲 2~400cm(15度の範囲、分解能:0.3cm)   電源電圧 DC 5.0V   動作電流 15mA   動作周波数 40kHz   トリガ信号 10μS(TTLレベルのパルス波)   エコー出力信号 反射(往復)時間   サイズ 45×20×15mm    ※通電時の接続はGND端子から行ってください。 

配線

HC-SR04(gnd)—GPIO6番ピン(GND) HC-SR04(trig)—GPIO21番ピン HC-SR04(echo)—GPIO20番ピン HC-SR04(vcc)—GPIO4番ピン(5V)

コード

#!/usr/bin/python
class hcsr04:
    def measure(sensor):
        import time
        import RPi.GPIO as GPIO
        #GPIO.setwarnings(False)
        GPIO.setmode(GPIO.BCM)
        if sensor == 0:
            GPIO.setup(21,GPIO.OUT)
            GPIO.setup(20,GPIO.IN)
            GPIO.output(21, GPIO.LOW)
        
            time.sleep(0.3)
            GPIO.output(21, True)
            time.sleep(0.00001)
            GPIO.output(21, False)

            while GPIO.input(20) == 0:
              startTime = time.time()
            while GPIO.input(20) == 1:
              stopTime = time.time()
        
            timepassed = stpoTime - startTime    
            distance = timepassed * 17000
        
            return distance
        
            GPIO.cleanup()
        else:
            print "Incorrect usonic() function varible."
    print measure(0)

if __name__ == "__main__":
    pass

参考

超音波距離センサ(HC-SR04)を使う|Make. 超音波センサーってなに?仕組みとアプリケーション例から学ぼう!|富士エレクトロニクス株式会社 超音波距離センサー HC-SR04|秋月電子通商