Pull to refresh

Comments 17

В заголовок бы картинку датчика вывесили, или указали в начале в тексте, что это ИК-шный. А то 90% дальномеры такого плана это УЗ датчики. Я долго затуплял прежде чем понял что к чему:)
и правда
теперь уточнил
Опытным путем я заметил, что функция лучше всего работает, если запускать ее с промежутком в 15 миллисекунд для любого количества дальномеров.

Это как вообще? Что значит «лучше работает», и почему именно 15 миллисекунд — если запускать без пауз неправильно определяет, или что?

Кстати, а зачем делали линейную интерполяцию по точкам — разве не проще приблизить функцию как 1/x с некоторым коэффициентом? Там весьма точно получается.
если запускать без пауз неправильно определяет, или что?
Неправильно.

Там весьма точно получается.
Не совсем. Они ведут себя по-разному на краях, в работе это особенно заметно.
Так же у других моделей (например) — по-другому нужно подгонять 1/х

Я предлагаю интерполяцию, как универсальную, для всей линейки.
А не пробовали смотреть, из-за чего так получается, что нужна искусственная задержка? Для случая нескольких независимых датчиков вообще не видно причины, откуда ей взяться.

Про кривую напряжение-расстояние — ведь всё равно по хорошему нужно каждый датчик хоть как-нибудь откалибровать по расстоянию, и по-моему проще всего это сделать сняв показания для разных длин и построив с помощью любого подходящего софта наилучшую кривую вида a/(x+b). Это и в коде проще выглядеть будет, и явно точнее поточечной линейной аппроксимации. Да и быстрее, чем у вас сейчас с проходом по таблице.
Имел опыт работы с этими дальномерами, из выводов — для повышения точности их нужно калибровать (вольт-амперная характеристика, сохраняя свою форму, все таки немного разная от датчика к датчику), аналоговый сигнал иногда дает одинокие пики в 2.4-2.6 вольта, их срезал медианным фильтром.
В прочем у меня были датчики на 150 см, на 40 см это может быть не так актуально
Скажите — при приближении на расстояниях 2 и 4.5 см — выдается одинаковый вольтаж?
Нет. По графику видно, что на 3 см приходится пик вольтажа и к 2-ум см выходное напряжение заметно падает.
На практике же у меня в этих пределах датчик выдавал сильно зашумленные показания.
Ну да, одинаковое напряжение, по графику же это чётко видно. У меня немного другой датчик — на бОльшее расстояние — и там абсолютно то же и на графике, и в реальности (там на другом расстоянии, конечно). Шум усреднял по многим отсчётам.
Эх! Хотел написать статью про ультразвуковой дальномер и «типа 3d сканер» на основе него.
Но т.к. результат оказался так себе, то ограничился сообщением на форуме.
А для чего нужно столько плавающей точки? АЦП выдаёт целое значение, а главное, что 8-битный AVR-контроллер считает её программно и ОЧЕНЬ долго…
А для чего нужно столько плавающей точки?
Где именно?

А долготы я не замечал
В программе очень много переменных типа float, и, соответственно, операций с ними.

Ну, на самом деле, если контроллер выполняет только одну задачу (например, данную), на глаз это не заметно. Другое дело, если вы захотите написать что-то более серьёзное, а особенно при использовании прерываний, могут начаться проблемы. Время выполнения операций с плавающей точкой на AVR идёт даже не на микро-, а на миллисекунды.

Да, большие массивы могут так же неожиданно заполнить всю оперативку (которой в ардуине совсем немного, в Uno всего 2 КБ).
Подскажите пожалуйста, а эти датчики аналогичны тому с которым вы работали: GP2Y0A02YK0F 20-150CM и gp2y0a2yk
Просто они на ебее продаются не дорого (~200р), а тот что описываете Вы — 750р.
Аналогичны.
Про цену — видимо другой производитель
Ну везде Шарп. Например:
тут, тут. А вот ваш. Может быть конечно разница в цене это очередные причуды Ебея…
Ого! Я давно покупал, и тогда цены были пропорциональны рабочему расстоянию
Sign up to leave a comment.

Articles