-
Notifications
You must be signed in to change notification settings - Fork 0
2. Дальномер
На иллюстрации - Ультразвуковой дальномер HC-SR04. Часто конструкторы робота обыгрывают его форму, устанавливая его таким образом, что он находится "где глаза". И они правы - это устройство может оценивать расстояние до окружающих объектов, "видеть" их.
Когда контроллер подаёт сигнал на контакт Trig - дальномер издает звук на частоте 40 кГц и слушает, когда придёт "Эхо" - выводит сигнал, соответствующий паузе между изданным и отраженным звуком на контакт echo. Контакты Vcc и Gnd соответственно - для питания/ с подключением практически нет проблем.
Люди не слышат частоту, на которой работает дальномер. А вот домашние питомцы могут отреагировать на него - собаки на этой частоте сигналы дальномера услышат.
Альтернативой ультразвуковому дальномеру может быть лазерный либо инфракрасный, которые работают на похожем принципе, только используют отражение света. Отличающей особенностью ик.дальномеров - является отсутствие эха или задержки порядка 200милисекунд объясняющейся весьма невысокой скоростью распространения звука.
Была собрана простейшая схема, загружен в Ардуино проверочный скетч (доступен по https://github.com/dmashine/robotroma/tree/master/test_sketches/sketch_test_NewPing). Открыл в Ардуино IDE графопостроитель по ком-порту и получил график сигнала, соответствующего расстоянию.
У датчика достаточно узкий диапазон определения расстояния: он "видит" очень узкую (4-5 см) полосу прямо перед "собой", без рассеивания сигнала. Датчик реагирует даже на тонкий лист бумаги перед собой. Диапазон измерений - от 5 до 50 см проверен, паспортный больше. В общем, этот датчик вполне подходит для определения положения робота в пространстве. Из минусов - На графике видны пики/провалы, когда датчик терял сигнал. Но они кратковременные, и от них легко избавиться программным фильтром.
Существенно упрощает работу с датчиком библиотека NewPing.
Бывают случаи, когда библиотека NewPing конфликтует с другой используемой библиотекой. При компиляции в таком случае выдается ошибка
(symbol from plugin): In function __vector_41': (.text+0x0): multiple definition of
__vector_41'
В данном случае, следует в файле NewPing.h заменить одну строку (подробнее):
#define TIMER_ENABLED false
//#define TIMER_ENABLED true // Set to "false" to disable the timer ISR (if getting "__vector_7" compile errors set this to false). Default=true
На РОМАНа планируется установка двух таких датчиков. В качестве крепежных элементов используется детский конструктор. Место и угол расположения будут установлены экспериментально, важно учесть чтоб сигнал одного эхом не попадал на другой. Также, следует рассчитывать временные интервалы - за те миллисекунды, пока датчик получает значение, обстановка вокруг может измениться.
Без датчиков робот глух и слеп - а дальномер расскажет нам о ближайших объектах, и позволит избежать столкновения, главное правильно его запрограммировать.