Медленная реакция дальномеров

shestipaliy
Offline
Зарегистрирован: 28.05.2019

Добрый день. Имеется движущаяся колесная платформа на Arduino Uno с установленым на нее инфракрасным дальномером Sharp (20-150 см). Он показывает коректное расстояние. Когда запускаю движение платформы с условием торможение когда расстояния станет <50 см то, то когда скорость маленькая то проблем не возникает, все останавливается точно. Но если скорость увеличивается, то платформа начинает серьезно запаздывать с торможением. Я замерил что цикл loop проходит примерно 400 раз в секунду снимая данные. Но тем не менее получается что проходя через точку 50см физически он снимает с датчика расстояние большее 50см и не тормозит. Все тоже самое если ставлю ультразвуковой датчик. Как так получается? Они не могут предоставлять актуальные данные с той скоростью которая мне нужна?

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Здесь в таких случаях часто советуют внимательнее посмотреть на строку №28, скорее всего ошибка в ней. Также стоит обратить внимание на страницу 3 даташита на дальномер и на резистор R4 на схеме.

shestipaliy
Offline
Зарегистрирован: 28.05.2019

Ворота пишет:

Здесь в таких случаях часто советуют внимательнее посмотреть на строку №28, скорее всего ошибка в ней. Также стоит обратить внимание на страницу 3 даташита на дальномер и на резистор R4 на схеме.

Намек я понял, но дело в том, что подключение дальномера элементарно в аналоговый разьем тройка-шилда. Там все слишком просто чтобы ошибиться. А в коде конструкция опять же из двух строк:

inputVoltage = analogRead(analog_Pin)*division_ADC;  // Рассчитываем напряжение на входе analog_Pin
distance_OBJ = 61.681*pow(inputVoltage, -1.133)

if(distance_OBJ < 50) MotorStop();

И тут тоже очень сложно ошибиться. И все работает прекрасно в статике и на небольшой скорости. Но если чуть разогнаться уже начинаются проблемы. Потому я хотел узнать у тех кто имел опыт работы с дальномерами, сталкивались ли они с таким, и какие вообще аппаратные возможности этих девайсов, т.к. похоже все уператся в них...?

sadman41
Offline
Зарегистрирован: 19.10.2016

Видимо Ваша конструкция двигается быстрее скорости света и звука...

Ультразвуковым датчикам нужен период покоя перед каждым замером - учитываете это?

shestipaliy
Offline
Зарегистрирован: 28.05.2019

Почитал даташит и судя по нему один замер у него занимает 38.3ms±9.6ms, т.е. в среднем миллисекунд 45, что получается 22 раза в секунду. Вроде бы достаточно много. Но если при скорости 5 км\ч машина проезжает 1.4 метра в секунду, то измерения будут производиться каждые 6 см и это и будет погрешность в любом случае, и она лишь будет увеличиваться с увеличением скорости. Я все правильно посчитал? Получается мне нужен дальномер с более высокой частотой? )

shestipaliy
Offline
Зарегистрирован: 28.05.2019

sadman41 пишет:

Видимо Ваша конструкция двигается быстрее скорости света и звука...

Ультразвуковым датчикам нужен период покоя перед каждым замером - учитываете это?

Про период покоя первый раз слышу. Сколько ему надо чтобы успокоиться?

nik182
Offline
Зарегистрирован: 04.05.2015

Обратите внимание на 400 прокрутов цикла и 22 измерения что то тут не стыкуется. А посчитано правильно. Может быть как то учитыаать скорость при приближении к препятствию? 

shestipaliy
Offline
Зарегистрирован: 28.05.2019

nik182 пишет:

Обратите внимание на 400 прокрутов цикла и 22 измерения что то тут не стыкуется. А посчитано правильно. Может быть как то учитыаать скорость при приближении к препятствию? 

Ну я так понимаю, что дальномер меняет напряжение на своем сигнальном кабеле примерно раз в 22 секунды. Ну а считать его с аналогового пина я могу хоть тысячу раз в секунду, но новые значения получу только когда дальномер поменяет напряжение, что он делает гораздо реже. В моем случае получается что примерно 20 значений будут одинаковыми, пока дальномер не изменит напряжение, ну и так далее.

А скорость да можно учитывать видимо увеличивая порог после которого начинается торможение.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Видимо надо вводить корректировку значений взависимости от скорости

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

shestipaliy пишет:
подключение дальномера элементарно

Там все слишком просто чтобы ошибиться.

И тут тоже очень сложно ошибиться. 

Если всё элементарно и без ошибок, то должно работать.

Я так понял, что ни кода, ни схемы, ни даташита на дальномер мы так и не увидим?

Ну, значит, так оно тебе надо.

shestipaliy
Offline
Зарегистрирован: 28.05.2019

Ворота пишет:
Я так понял, что ни кода, ни схемы, ни даташита на дальномер мы так и не увидим?

https://iarduino.ru/lib/3464eac90d757a03cb15ac1a664f9467.pdf

пожалуйста, даташит

по итогам его изучения я сделал вывод что он замеряет примерно 20 раз в секунду (все измышления постами выше есть)

что при моих скоростях маловато, т.к. у меня платформа не под хиленького трехколесного робота, а бывшая радиоуправляемая модель автомобиля, которая и 40 км\ч может гнать)

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

shestipaliy пишет:

Ворота пишет:
Я так понял, что ни кода, ни схемы, ни даташита на дальномер мы так и не увидим?

https://iarduino.ru/lib/3464eac90d757a03cb15ac1a664f9467.pdf

пожалуйста, даташит

Спасибо, благодетель! Теперь будем ждать пока барин смилостивится на схему и скетч.

Тебе не кажется. что помощь нужна тебе, а не нам и то, что нам приходится у тебя что-то на коленях выклянчивать - как-то странно?

Мне вот нафиг это не нужно. Тебе, похоже, тоже.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Мда, а эффект Доплера дальномер учитывает?

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Этот сенсор не подходит для вашей задачи. Согласно даташиту он рассчитан на дистанции не более 1.5 метра и, действительно измеряет примерно за 1/20 секунды. При скорости даже в 10 КМ/ч за 1/20 секунды машинка переместится на 1.8 метра. То есть к тому моменту как расстояние будет померяно вы уже врежетесь. Нужен дальномер работающий на более дальние дистанции.

nevkon
Offline
Зарегистрирован: 20.01.2015

Что-то вы неправильно посчитали. У меня при 40 км/ч получилось что за период (1/20 с) успеет проехать 0.56м, т.е. с момента как увидит препятствие успеет его еще один раз увидеть до столкновения. Но на торможение времени уже скорее всего не останется даже при первом обнаружении препятствия не говоря уж об отсчете 0.5 м.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Да, не на то поделил. При 10Км/ч за одно измерение проезжает 14 сантиметров. Тут должно успеть затормозить. А вот при 40Км/ч уже не успеет. Можно взять УЗ сенсор. Он на 4 метрах уже работает.

shestipaliy
Offline
Зарегистрирован: 28.05.2019

Понял в чем проблема, всем спасибо за информацию. В приниципе, увеличением расстояния начла торможения в зависимости от скорости проблема частично решается. Если уж так все упирается в скорость получения информации с датчиков. А, в принципе, если я хочу дальномер который будет мерять не 20 а 40 раз или больше в секунду такие в природе существуют, или это уже что-то дорогое-промышленное и не DIY? )

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Этот не пробовали?
https://www.adafruit.com/product/3317
Я в сериал мониторе пробовал, по моему достаточно быстро и стабильно показывает.

shestipaliy
Offline
Зарегистрирован: 28.05.2019

trembo пишет:
Этот не пробовали? https://www.adafruit.com/product/3317 Я в сериал мониторе пробовал, по моему достаточно быстро и стабильно показывает.

Не открывает ссылку из-за какой-то ддос защиты видимо. А можно просто название модели?

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

VL53L0X
Или:

Тут у коллег ещё нашёлся, работает по сериалу.
Не пробовал, пошёл покупать.....
ToF10120