2017-01-28 1 views
0

센서 (S)에서 장애물 (X)까지 거리 (D)를 측정하기 위해 초음파 센서를 사용하려고합니다. 기본 원리는 내가 소리의 펄스를 보내고 되돌려 받고, S에서 X까지 그리고 뒤로 (말하자면 T) 여행하는 데 걸리는 시간을 사용하여 다음과 같이 거리를 계산할 것입니다. 공식 : D = (V * T)/2. (V는 공기 중 소리의 속도). 다음은 동일을 달성하기 위해 몇 가지 파이썬 코드 :라즈베리 파이의 초음파 센서를 사용한 측정 거리

#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 

그것은 내가 뭔가를 분명 실종 나에게 보인다. 나는 누군가가 나에게 그것이 무엇인지 가르쳐 주면 고마워 할 것이다.

답변

1

이것은 초음파 에코 센서가 작동하는 방식이기 때문입니다. 당신은 펄스를 GPIO_TRIGGER 라인으로 보낸다. 그러면 센서가 짧은 소리의 펄스를 보내기 시작합니다. 그러나 그 자체로는 시간이 걸립니다. 그런 다음 그 펄스의 에코를받을 때까지 기다려야합니다. 센서의 출력은 이 사운드 펄스 인 송신을 마쳤을 때 하이가되고 이 사운드 펄스를 수신하면을 수신하면 다시 로우로 바뀝니다. 그 사이의 시간은 사운드 펄스가 어떤 물체에 도달하여 반사되는 데 걸리는 시간입니다.

관련 문제