Comments 17
В заголовок бы картинку датчика вывесили, или указали в начале в тексте, что это ИК-шный. А то 90% дальномеры такого плана это УЗ датчики. Я долго затуплял прежде чем понял что к чему:)
+2
Опытным путем я заметил, что функция лучше всего работает, если запускать ее с промежутком в 15 миллисекунд для любого количества дальномеров.
Это как вообще? Что значит «лучше работает», и почему именно 15 миллисекунд — если запускать без пауз неправильно определяет, или что?
Кстати, а зачем делали линейную интерполяцию по точкам — разве не проще приблизить функцию как 1/x с некоторым коэффициентом? Там весьма точно получается.
0
если запускать без пауз неправильно определяет, или что?Неправильно.
Там весьма точно получается.Не совсем. Они ведут себя по-разному на краях, в работе это особенно заметно.
Так же у других моделей (например) — по-другому нужно подгонять 1/х
Я предлагаю интерполяцию, как универсальную, для всей линейки.
0
А не пробовали смотреть, из-за чего так получается, что нужна искусственная задержка? Для случая нескольких независимых датчиков вообще не видно причины, откуда ей взяться.
Про кривую напряжение-расстояние — ведь всё равно по хорошему нужно каждый датчик хоть как-нибудь откалибровать по расстоянию, и по-моему проще всего это сделать сняв показания для разных длин и построив с помощью любого подходящего софта наилучшую кривую вида a/(x+b). Это и в коде проще выглядеть будет, и явно точнее поточечной линейной аппроксимации. Да и быстрее, чем у вас сейчас с проходом по таблице.
Про кривую напряжение-расстояние — ведь всё равно по хорошему нужно каждый датчик хоть как-нибудь откалибровать по расстоянию, и по-моему проще всего это сделать сняв показания для разных длин и построив с помощью любого подходящего софта наилучшую кривую вида a/(x+b). Это и в коде проще выглядеть будет, и явно точнее поточечной линейной аппроксимации. Да и быстрее, чем у вас сейчас с проходом по таблице.
0
Имел опыт работы с этими дальномерами, из выводов — для повышения точности их нужно калибровать (вольт-амперная характеристика, сохраняя свою форму, все таки немного разная от датчика к датчику), аналоговый сигнал иногда дает одинокие пики в 2.4-2.6 вольта, их срезал медианным фильтром.
В прочем у меня были датчики на 150 см, на 40 см это может быть не так актуально
В прочем у меня были датчики на 150 см, на 40 см это может быть не так актуально
0
Скажите — при приближении на расстояниях 2 и 4.5 см — выдается одинаковый вольтаж?
0
Нет. По графику видно, что на 3 см приходится пик вольтажа и к 2-ум см выходное напряжение заметно падает.
На практике же у меня в этих пределах датчик выдавал сильно зашумленные показания.
На практике же у меня в этих пределах датчик выдавал сильно зашумленные показания.
0
Ну да, одинаковое напряжение, по графику же это чётко видно. У меня немного другой датчик — на бОльшее расстояние — и там абсолютно то же и на графике, и в реальности (там на другом расстоянии, конечно). Шум усреднял по многим отсчётам.
0
Эх! Хотел написать статью про ультразвуковой дальномер и «типа 3d сканер» на основе него.
Но т.к. результат оказался так себе, то ограничился сообщением на форуме.
Но т.к. результат оказался так себе, то ограничился сообщением на форуме.
0
А для чего нужно столько плавающей точки? АЦП выдаёт целое значение, а главное, что 8-битный AVR-контроллер считает её программно и ОЧЕНЬ долго…
0
А для чего нужно столько плавающей точки?Где именно?
А долготы я не замечал
0
В программе очень много переменных типа float, и, соответственно, операций с ними.
Ну, на самом деле, если контроллер выполняет только одну задачу (например, данную), на глаз это не заметно. Другое дело, если вы захотите написать что-то более серьёзное, а особенно при использовании прерываний, могут начаться проблемы. Время выполнения операций с плавающей точкой на AVR идёт даже не на микро-, а на миллисекунды.
Да, большие массивы могут так же неожиданно заполнить всю оперативку (которой в ардуине совсем немного, в Uno всего 2 КБ).
Ну, на самом деле, если контроллер выполняет только одну задачу (например, данную), на глаз это не заметно. Другое дело, если вы захотите написать что-то более серьёзное, а особенно при использовании прерываний, могут начаться проблемы. Время выполнения операций с плавающей точкой на AVR идёт даже не на микро-, а на миллисекунды.
Да, большие массивы могут так же неожиданно заполнить всю оперативку (которой в ардуине совсем немного, в Uno всего 2 КБ).
0
Подскажите пожалуйста, а эти датчики аналогичны тому с которым вы работали: GP2Y0A02YK0F 20-150CM и gp2y0a2yk
Просто они на ебее продаются не дорого (~200р), а тот что описываете Вы — 750р.
Просто они на ебее продаются не дорого (~200р), а тот что описываете Вы — 750р.
0
Sign up to leave a comment.
Работа с инфракрасным дальномером Sharp