Сонарные датчики отправляют обратно случайные данные и отключаются случайным образом - PullRequest
0 голосов
/ 19 февраля 2019

Я работаю над датчиком сонара, который эхосигнал и получает обратно.Также создан алгоритм, который рассчитывает расстояние на основе чтения.Но я сталкиваюсь с какой-то странной проблемой: иногда датчик посылает случайные данные, которые вообще не имеют отношения к фактическому расстоянию от объекта, где сигнал попадает в диапазоне от 5 см до 160 см, но датчики посылают как 2000 + см.Очень трудно понять, почему, а также он сам отключается.

Мой вопрос

  1. Почему датчики иногда отправляют ошибочные данные?
  2. Как обнаружитьв программе этот датчик выключен или включен?

Я использую датчик Sonar на Raspberry pi и использую этот код

# set Trigger to HIGH
GPIO.output(TRIGGER, True)
#print "GPIO", GPIO

# set Trigger after 0.01ms to LOW
time.sleep(0.00001)
GPIO.output(TRIGGER, False)

StartTime = time.time()
StopTime = time.time()

# save StartTime
try:
now = time.time()
    # save the time it takes just before ECHO hears the TRIGGER pulse (0 means nothing received)
    while GPIO.input(ECHO) == 0:
        StartTime = time.time()
    #print "StartTime ", StartTime
    #print "now: ", now
    if StartTime-now > 1:
        return -1
    #print("StartTime: " , StartTime)       #Printing this causes incorrect measurements.

    # save time of arrival
    while GPIO.input(ECHO) == 1:
        StopTime = time.time()
    #print("StopTime: ", StopTime)

except KeyboardInterrupt:
    return -1

# time difference between start and arrival
TimeElapsed = StopTime - StartTime

# multiply with the sonic speed (34300 cm/s)
# and divide by 2, because there and back
distance = (TimeElapsed * 34300) / 2

Я использую этот код для вычисления расстояния

...