Дальномер, о котором пойдёт речь, помимо функции измерения расстояния до удалённых объектов, снабжён функцией сигнализации – извещения пользователя о том, что расстояние до объекта меньше заданного значения. Поэтому правильнее будет назвать его дальномером-сигнализатором. Он может найти применение на производстве и в быту при возникновении необходимости точного измерения расстояний на открытом пространстве, например, для вычисления площадей и объёмов помещений, при конструировании роботов или для сигнализации о недопустимом приближении, например, в качестве автомобильного парктроника.
Принцип действия и основные характеристики
В качестве первичного датчика расстояния в устройстве используется ультразвуковой сонар из семейства HRLV-MaxSonar-EZ типа MB1043 производства MaxBotix [1]. Принцип действия сонаров семейства HRLV-MaxSonar-EZ основан на излучении в пространство и обратном приёме ультразвуковых колебаний, отражённых от пространственных объектов. Встроенная в сонар система обработки на основе анализа излучаемого и отражённого сигналов производит вычисление и выдачу во внешние устройства данных о расстоянии до объекта, от которого отразились колебания. Данные из сонара выдаются одновременно по трём различным каналам:
- аналоговому – в виде постоянного напряжения, пропорционального расстоянию до объекта;
- ШИМ – в виде импульсов со скважностью, пропорциональной расстоянию до объекта;
- цифровому (интерфейс UART) – в виде байтовых посылок, передаваемых со скоростью 9600 бит/с и содержащих значение расстояния до объекта в двоично-десятичном формате в ASCII-коде.
В предлагаемом дальномере-сигнализаторе данные от сонара принимаются только через UART. Периодичность обновления данных составляет 100 мс.
Дальномер-сигнализатор имеет следующие основные характеристики:
- диапазон измеряемых расстояний – 0,3...5 м;
- разрешающая способность измерения расстояния – 1 мм;
- количество задаваемых порогов сигнализации – 1;
- тип сигнализации – генерация звукового сигнала и переход цифрового выхода в низкий логический уровень при текущем значении измеряемого расстояния меньше заданного порога сигнализации;
- тип дисплея – символьный двухстрочный ЖКИ, совместимый с контроллером HD44780;
- формат отображения измеренного расстояния – «R=XXXX», где XXXX – значение расстояния в мм;
- формат отображения заданного порога сигнализации – «L=YYYY», где YYYY – значение заданного порога сигнализации в мм;
- звуковой излучатель – электромагнитный;
- пользовательский интерфейс из трёх кнопок: «Сброс», «Увеличение порога сигнализации» («+»), «Уменьшение порога сигнализации» («–»);
- напряжение источника питания +4,5…6 В;
- потребляемый ток от источника питания при +4,5 В – 70 мА.
Аппаратная платформа
Для аппаратной реализации устройства применена ПЛИС фирмы Altera семейства Cyclone-II EP2C5T144C8 в составе отладочной платы OpenEP2C5-C производства фирмы Waveshare [2]. При отладке макета дальномера-сигнализатора плата OpenEP2C5-C установлена в отладочную плату DVK601 [3] того же производителя. К плате DVK601 подключается символьный двухстрочный ЖКИ типа 1602ZFA, имеющий трёхвольтовое питание и встроенную подсветку дисплея. Внешний вид макета дальномера-сигнализатора показан на рисунке 1, а его структурная схема представлена на рисунке 2. Эта схема в основном повторяет блок-схему проекта ПЛИС устройства.
Принципиальная схема дальномера-сигнализатора приведена на рисунке 3. Эта схема может быть использована для изготовления устройства без плат OpenEP2C5-C и DVK601.
В качестве кнопок SB1, SB2 в макете используются позиции «вверх» и «вниз» пятипозиционного манипулятора «джойстик» платы DVK601.
Микросхема ПЛИС DD1 питается от двух источников напряжения +3,3 В и +1,2 В, формируемых последовательно включёнными стабилизаторами DA2 и DA3, соответственно. Питание стабилизатора DA2 осуществляется внешним напряжением +4,5…6 В.
Загрузка конфигурации в ПЛИС DD1 при каждом включении питания осуществляется из микросхемы энергонезависимой памяти DD3. Начальная запись конфигурации в DD3 производится через разъём X4 «JTAG» с помощью кабеля-программатора USB Blaster.
Внешний глобальный синхросигнал для ПЛИС с частотой 50 МГц вырабатывается интегральным генератором DD2 со встроенным кварцем. Конкретный тип этого генератора на схеме платы OpenEP2C5-C автору идентифицировать не удалось. В качестве DD2 подойдёт любой кварцевый генератор с частотой 50 МГц и питающим напряжением +3,3 В.
Звуковой излучатель BF1 – маломощный «спикер» электромагнитного типа. Также возможно применение пьезоизлучателя любого типа.
Все перечисленные схемные компоненты содержатся на платах OpenEP2C5-C и DVK601. Все выводы ПЛИС, а также линии питания +3,3 В и общего провода на плате OpenEP2C5-C выведены на два многоштырьковых разъёма для обеспечения возможности стыковки с внешними устройствами, например, с платой DVK601. На плате DVK601 сигналы с ответных частей этих разъёмов, в свою очередь, разведены на разъёмы, размещённые по периметру платы и используемые для подключения различных внешних устройств, например, сонара. Обозначения и нумерация элементов на схеме (см. рис. 3) не соответствуют схемам плат OpenEP2C5-C и DVK601. Соединительные разъёмы этих плат на схеме условно не показаны.
Отладочная плата DVK601 в ходе отладки макета дальномера-сигнализатора была немного доработана. Доработка заключалась в установке резистора R7 (см. рис. 3), который на принципиальной схеме платы имелся (Buzzer.R1 = 500 Ом), но на самой плате был заменён производителем короткозамкнутой перемычкой, а также в установке резистора R8 сопротивлением 1 кОм взамен резистора Buzzer.R2 = 500 Ом. До проведения указанной доработки узел звукового излучателя BF1 легко самовозбуждался от наводок других сигналов платы.
Наладка устройства сводится к установке требуемой громкости звука сигнализации путём подбора резистора R7, а также к установке требуемой контрастности ЖКИ HG1 путём подстройки резистора R6.
Перед подключением к устройству сонара MB1043 необходимо на его печатной плате замкнуть между собой перемычкой из припоя контактные площадки TTL Jumper, показанные на рисунке 4. Указанным способом осуществляется задание требуемых уровней выходного сигнала интерфейса UART сонара. При значительном удалении сонара от ПЛИС соединяющий их сигнальный провод следует экранировать.
Проект ПЛИС
Проект ПЛИС устройства написан на алгоритмическом языке Verilog HDL. Он состоит из следующих модулей:
- модуль верхнего уровня (файл MAX_SONAR.v);
- модуль подавления «дребезга» кнопок (файл noise_filter_butt.v);
- модуль формирования сигналов «озвучивания» кнопок (файл buzzer_butt.v);
- модуль приёма байта через UART (файл UART_byte_rx.v).
- Модуль верхнего уровня содержит несколько блоков:
- блок формирования звуковых частот;
- блок задания значения порога сигнализации;
- блок приёма байтовой посылки от сонара;
- блок обработки принятых от сонара данных;
- блок начальной инициализации и циклического вывода информации на ЖКИ;
- блок управления звуковым сигналом.
Все перечисленные блоки, кроме блока обработки принятых от сонара данных, являются синхронными, то есть в их списках чувствительности содержится только внутренний глобальный синхросигнал. Блок обработки принятых данных синхронизируется фронтом сигнала готовности принятой байтовой посылки от сонара Sonar_data_ready.
В качестве внутреннего глобального синхросигнала используется синхросигнал clk_pll частотой 10 МГц с выхода встроенной системы ФАПЧ (PLL) ПЛИС.
Линии входов кнопок «подтянуты» внутри ПЛИС через встроенные резисторы к плюсу источника +3,3 В. На одну из линий подсветки ЖКИ из ПЛИС подаётся напряжение низкого логического уровня, на другую – высокого. Токоограничительные резисторы светодиодов подсветки в схеме отсутствуют, поскольку они встроены в ЖКИ.
В файлах исходного кода модулей проекта ПЛИС имеется несколько константных значений parameter, модифицируя которые, пользователь может подстраивать конфигурацию проекта ПЛИС под свои нужды.
Константа parameter POROG_IMP = 500_000 задаёт количество импульсов глобального синхросигнала, определяющее длительность импульса озвучивания нажатия на кнопку. При нажатии на кнопку этот импульс пропускает на выход звука пачку соответствующей длительности импульсов звуковой частоты. Подбором этого параметра можно задавать длительность пачек озвучивания нажатий (по умолчанию – 0,05 с).
Константа parameter POROG = 600_000 задаёт порог подавления дребезга – количество импульсов глобального синхросигнала, после подсчёта которого принимается решение о пропуске входного сигнала от кнопки на управляемый ею блок. Подбором этого параметра можно добиться надёжного подавления дребезга от кнопок различных типов и размеров.
При реализации интерфейса обслуживания кнопок помимо узла подавления дребезга в ПЛИС синтезирован узел формирования импульса от кнопки, длительность которого равна строго одному периоду глобального синхросигнала. Это сделано для того, чтобы, вне зависимости от времени удержания нажатой кнопки, реакция устройства на её нажатие происходила однократно. Входной сигнал от кнопки key_in (активный уровень – низкий), содержащий дребезг, подвергается цифровой фильтрации. По переднему спаду отфильтрованного от дребезга сигнала noise_key_out (активный уровень – низкий) формируется короткий отрицательный импульс edge_noise_key_out длительностью ровно в один период глобального синхросигнала clk_pll, причём его середина совпадает с положительным (активным) перепадом clk_pll. В списке чувствительности блока, реализующего реакцию устройства на нажатие данной кнопки, содержится только передний фронт синхросигнала clk_pll.
Константа parameter UART_RATE = 9600 задаёт стандартную скорость приёма данных через UART от сонара (9600 бит/с). Остальные настройки UART жёстко заданы в конфигурации ПЛИС и не могут быть модифицированы пользователем «на лету»: 8 бит в байте, 1 стоповый бит и отсутствие контроля чётности (8–N–1). Наличие данных, поступающих с выхода UART сонара, индицируется в устройстве светодиодом HL2.
Порог сигнализации устройства задаётся с помощью кнопок SB1 «+» и SB2 «–». При нажатиях на кнопку «+» текущее значение порога увеличивается по кольцу с шагом 10 мм от минимального (300 мм) до максимального (5000 мм) значения. При нажатиях на кнопку «–» – уменьшается по кольцу с таким же шагом от максимального до минимального значения. Текущее значение порога сигнализации отображается на ЖКИ справа от значения результата измерения.
При уменьшении результата измерений ниже значения порога раздаётся прерывистый звуковой сигнал высокого тона. Одновременно выход сигнализации ПЛИС X3 переходит в низкий логический уровень. При превышении результата измерений над порогом звуковой сигнал прекращается, а выход сигнализации ПЛИС возвращается в высокий логический уровень. Текущее состояние выхода сигнализации индицируется светодиодом HL3 «Выход сигнализации».
Проект ПЛИС устройства разработан в среде Quartus II версии 13.0. Он доступен для скачивания на сайте журнала (см. дополнительные материалы к статье на www.soel.ru). Конфигурация проекта занимает около 30% ёмкости ПЛИС EP2C5T144C8.
Несколько слов об эксплуатации устройства. После включения питания необходимо нажать на кнопку SB3 «Сброс», чтобы инициализировать ЖКИ. При этом на ЖКИ кратковременно отобразится начальная заставка SONAR Vx.x, после чего устройство перейдёт к штатной работе с непрерывным отображением на ЖКИ значений измеренного расстояния и порога сигнализации. Последний по умолчанию равен 500 мм. Обновление показаний ЖКИ производится через каждые 100 мс синхронно с поступлением данных из сонара. При измерении расстояния до объекта, меньше ближней границы допустимого диапазона (0,3 м), дальномер-сигнализатор выдаёт результат 300 мм. При измерении расстояния, больше дальней границы допустимого диапазона (5 м), дальномер-сигнализатор выдаёт результат 5000 мм.
Заключение
Дальномер-сигнализатор безошибочно и стабильно измеряет расстояния до объектов с чёткими границами (стены, перекрытия, промышленные установки, предметы мебели и т.п.). При измерениях расстояний до объектов с нечёткими границами (животные с густой шерстью, люди в меховой одежде и т.п.) в результатах измерений возможны неточности.
Применённый в устройстве сонар MB1043 имеет самую узкую в своём семействе диаграмму направленности, поэтому, при наличии даже небольших препятствий на линии измерения, в его выходных данных возможны существенные ошибки. Для снижения чувствительности устройства к наличию мелких препятствий на линии измерения возможно применение других типов сонаров из семейства HRLV-MaxSonar-EZ, имеющих более широкие, чем у MB1043, диаграммы направленности. Для сравнения, на рисунке 5 приведены диаграммы направленности сонаров MB1043 и MB1003, предоставленные производителем [4]. Каждый рисунок представляет собой пространственные контуры диаграммы в одной плоскости на фоне сетки с размерами квадрата 30 ´ 30 см. При этом обнаруживаемый сонаром контрольный объект представляет собой диск диаметром 3,5 дюйма.
Литература
- MB1043HRLV-MaxSonar-EZ4 High Performance Ultrasonic Rangefinder. www.maxbotix.com/Ultrasonic_Sensors/MB1043.htm.
- OpenEP2C5-C. www.waveshare.com/wiki/OpenEP2C5-C.
- FPGA CPLD mother board. www.waveshare.com/dvk601.htm.
- HRLV-MaxSonar-EZ Series. www.maxbotix.com/documents/HRLV-MaxSonar-EZ_Datasheet.pdf.