Медленная реакция дальномеров
- Войдите на сайт для отправки комментариев
Добрый день. Имеется движущаяся колесная платформа на Arduino Uno с установленым на нее инфракрасным дальномером Sharp (20-150 см). Он показывает коректное расстояние. Когда запускаю движение платформы с условием торможение когда расстояния станет <50 см то, то когда скорость маленькая то проблем не возникает, все останавливается точно. Но если скорость увеличивается, то платформа начинает серьезно запаздывать с торможением. Я замерил что цикл loop проходит примерно 400 раз в секунду снимая данные. Но тем не менее получается что проходя через точку 50см физически он снимает с датчика расстояние большее 50см и не тормозит. Все тоже самое если ставлю ультразвуковой датчик. Как так получается? Они не могут предоставлять актуальные данные с той скоростью которая мне нужна?
Здесь в таких случаях часто советуют внимательнее посмотреть на строку №28, скорее всего ошибка в ней. Также стоит обратить внимание на страницу 3 даташита на дальномер и на резистор R4 на схеме.
Здесь в таких случаях часто советуют внимательнее посмотреть на строку №28, скорее всего ошибка в ней. Также стоит обратить внимание на страницу 3 даташита на дальномер и на резистор R4 на схеме.
Намек я понял, но дело в том, что подключение дальномера элементарно в аналоговый разьем тройка-шилда. Там все слишком просто чтобы ошибиться. А в коде конструкция опять же из двух строк:
И тут тоже очень сложно ошибиться. И все работает прекрасно в статике и на небольшой скорости. Но если чуть разогнаться уже начинаются проблемы. Потому я хотел узнать у тех кто имел опыт работы с дальномерами, сталкивались ли они с таким, и какие вообще аппаратные возможности этих девайсов, т.к. похоже все уператся в них...?
Видимо Ваша конструкция двигается быстрее скорости света и звука...
Ультразвуковым датчикам нужен период покоя перед каждым замером - учитываете это?
Почитал даташит и судя по нему один замер у него занимает 38.3ms±9.6ms, т.е. в среднем миллисекунд 45, что получается 22 раза в секунду. Вроде бы достаточно много. Но если при скорости 5 км\ч машина проезжает 1.4 метра в секунду, то измерения будут производиться каждые 6 см и это и будет погрешность в любом случае, и она лишь будет увеличиваться с увеличением скорости. Я все правильно посчитал? Получается мне нужен дальномер с более высокой частотой? )
Видимо Ваша конструкция двигается быстрее скорости света и звука...
Ультразвуковым датчикам нужен период покоя перед каждым замером - учитываете это?
Про период покоя первый раз слышу. Сколько ему надо чтобы успокоиться?
Обратите внимание на 400 прокрутов цикла и 22 измерения что то тут не стыкуется. А посчитано правильно. Может быть как то учитыаать скорость при приближении к препятствию?
Обратите внимание на 400 прокрутов цикла и 22 измерения что то тут не стыкуется. А посчитано правильно. Может быть как то учитыаать скорость при приближении к препятствию?
Ну я так понимаю, что дальномер меняет напряжение на своем сигнальном кабеле примерно раз в 22 секунды. Ну а считать его с аналогового пина я могу хоть тысячу раз в секунду, но новые значения получу только когда дальномер поменяет напряжение, что он делает гораздо реже. В моем случае получается что примерно 20 значений будут одинаковыми, пока дальномер не изменит напряжение, ну и так далее.
А скорость да можно учитывать видимо увеличивая порог после которого начинается торможение.
Видимо надо вводить корректировку значений взависимости от скорости
Там все слишком просто чтобы ошибиться.
И тут тоже очень сложно ошибиться.
Если всё элементарно и без ошибок, то должно работать.
Я так понял, что ни кода, ни схемы, ни даташита на дальномер мы так и не увидим?
Ну, значит, так оно тебе надо.
https://iarduino.ru/lib/3464eac90d757a03cb15ac1a664f9467.pdf
пожалуйста, даташит
по итогам его изучения я сделал вывод что он замеряет примерно 20 раз в секунду (все измышления постами выше есть)
что при моих скоростях маловато, т.к. у меня платформа не под хиленького трехколесного робота, а бывшая радиоуправляемая модель автомобиля, которая и 40 км\ч может гнать)
https://iarduino.ru/lib/3464eac90d757a03cb15ac1a664f9467.pdf
пожалуйста, даташит
Спасибо, благодетель! Теперь будем ждать пока барин смилостивится на схему и скетч.
Тебе не кажется. что помощь нужна тебе, а не нам и то, что нам приходится у тебя что-то на коленях выклянчивать - как-то странно?
Мне вот нафиг это не нужно. Тебе, похоже, тоже.
Мда, а эффект Доплера дальномер учитывает?
Этот сенсор не подходит для вашей задачи. Согласно даташиту он рассчитан на дистанции не более 1.5 метра и, действительно измеряет примерно за 1/20 секунды. При скорости даже в 10 КМ/ч за 1/20 секунды машинка переместится на 1.8 метра. То есть к тому моменту как расстояние будет померяно вы уже врежетесь. Нужен дальномер работающий на более дальние дистанции.
Что-то вы неправильно посчитали. У меня при 40 км/ч получилось что за период (1/20 с) успеет проехать 0.56м, т.е. с момента как увидит препятствие успеет его еще один раз увидеть до столкновения. Но на торможение времени уже скорее всего не останется даже при первом обнаружении препятствия не говоря уж об отсчете 0.5 м.
Да, не на то поделил. При 10Км/ч за одно измерение проезжает 14 сантиметров. Тут должно успеть затормозить. А вот при 40Км/ч уже не успеет. Можно взять УЗ сенсор. Он на 4 метрах уже работает.
Понял в чем проблема, всем спасибо за информацию. В приниципе, увеличением расстояния начла торможения в зависимости от скорости проблема частично решается. Если уж так все упирается в скорость получения информации с датчиков. А, в принципе, если я хочу дальномер который будет мерять не 20 а 40 раз или больше в секунду такие в природе существуют, или это уже что-то дорогое-промышленное и не DIY? )
Этот не пробовали?
https://www.adafruit.com/product/3317
Я в сериал мониторе пробовал, по моему достаточно быстро и стабильно показывает.
Не открывает ссылку из-за какой-то ддос защиты видимо. А можно просто название модели?
VL53L0X
Или:
Тут у коллег ещё нашёлся, работает по сериалу.
Не пробовал, пошёл покупать.....
ToF10120