Ультразвуковой дальномер

Отличия лазерного и ультразвукового дальномеров

1

Дальномеры – один из самых востребованных инструментов на любой стройке, будь то домашний ремонт или масштабное строительство.

Существует два основных типа дальномеров: ультразвуковые и лазерные. А по своему функционалу они делятся на бытовые и профессиональные.

Ультразвуковые дальномеры

Принцип работы ультразвукового дальномера схож с эхолотом и основан на отражении звука от измеряемого объекта. Основным преимуществом таких дальномеров является низкая цена, что делает их идеальными для бытового использования и квартирного ремонта. На сегодняшний день средняя стоимость прибора варьируется от двух до трех тысяч рублей.

Достоинства

  • Измерение расстояний до объектов пропускающих свет, например, окон.
  • Встроенный термометр – зачастую полезная функция на стройплощадке. Например, если необходимо соблюдать температурный режим высыхания бетонной смеси.
  • Лазерный целеуказатель упрощает наведение на объект измерений. (присутствует не во всех моделях)

Недостатки

  • Диапазон работы прибора не превышает 20-25 метров из-за рассеивания звуковых волн.
  • Сравнительно невысокая точность измерений.
  • Объект измерений должен быть достаточно большим, а его поверхность не должна поглощать звук.

Ультразвуковой дальномер стоит выбирать если вам не нужна высокая точность.

Такой прибор отлично подойдет для оценки расстояний и предварительных расчетов.

Лазерные дальномеры

Огромный ассортимент лазерных рулеток включает в себя как бытовые приборы, которые лишь немного дороже ультразвуковых, так и профессиональные за несколько десятков тысяч рублей. Таким образом можно подобрать дальномер на любой бюджет и задачи.

Достоинства

  • Измерительный диапазон от 30 до 250 метров (некоторые профессиональные модели).
  • Высокая точность измерений ± 1-5 мм на всем диапазоне.
  • Измерение расстояний даже до очень маленьких объектов, например шляпки гвоздя.
  • Обширный вычислительный функционал даже у самых простых моделей: площадь, объем, теорема Пифагора и т.д.

Недостатки

  • Некорректная работа при ярком освещении и в солнечную погоду. (проблема решается использованием специальных отражателей).
  • Невозможность измерить расстояние до окон и зеркал.

Несмотря на незначительные недостатки даже самый простой лазерный дальномер во многом выигрывает у ультразвукового. Вы получаете хорошую точность и универсальность использования.

Если рассматривать более дорогие модели вы получаете целый ряд полезных функций:

  • Встроенная память позволяет производить серии измерений, не отвлекаясь на записи промежуточных результатов.
  • Аналитические функции: расчет угла, неизвестной высоты и прочего.
  • Запуск измерений по таймеру снизит погрешность измерений исключив смещение прибора при нажатии на клавиши.
  • Синхронизация со смартфоном для переноса всех результатов измерений на чертежи.

Выводы

С развитием технологий ультразвуковые дальномеры постепенно отходят на второй план, уступая место лазерным, благодаря их точности и универсальности. Разница в стоимости все больше сокращается и на сегодняшний день каждый может позволить себе лазерный дальномер.

1

Источник: http://www.Rusgeocom.ru/otlichiya-lazernogo-i-ultrazvukovogo-dalnomerov

Как выбрать лазерный или ультразвуковой дальномер?

  • 04-12-2014
  • 35
  • 867

Дальномеры, современные приборы, используются для замера расстояния и применяются в разных отраслях строительства и при изготовлении мебели. Своей популярностью они обязаны высочайшей точности и дальности измерений. Заменяя примитивную рулетку, дальномер отлично справляется с измерениями и дает более точные результаты. При измерении больших расстояний его погрешность составляет миллиметры.

Схема ультразвукового дальномера.

Существует 2 типа этого измерительного прибора, но то, какой выбрать дальномер (лазерный или ультразвуковой), можно определить после изучения технических характеристик и качеств каждого из аппаратов.

Самым простым и дешевым аппаратом, разработанным современными конструкторами, является ультразвуковой дальномер. Аналогичную конструкцию по-другому называют эхолотом. Они довольно часто используются во многих бытовых и промышленных сферах.

В конструкцию ультразвукового дальномера включается приемный и передающий блок, а также микропроцессор, который несет запоминающую функцию и впоследствии обрабатывает и отображает полученную информацию.

Принцип работы ультразвукового дальномера

Принцип действия ультразвукового дальномера.

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

В процессе внедрения новых технологий и производственных возможностей конструктора добились усовершенствования конструкции аппарата. Это позволило создать новый прибор, более точно направленный звуковым пучком. Был создан ультразвуковой дальномер с лазерной указкой. Такой аппарат значительно увеличил точность измерений и облегчил проведение работ.

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

Такой аппарат имеет значительные недостатки. Главным минусом является точность замера, так как она определяется с учетом окружающей среды, в которой будет распространяться звук.

Параметры и значения (главным из которых является плотность) не могут быть постоянными и имеют способность изменяться в период работ.

Немаловажным недостатком считается и ограничение длины измерений, так как пределы расстояния — от 30 см до 20 м.

В связи с этим использовать ультразвуковые приборы можно в том случае, когда не требуется точных замеров и замеров не более допустимых пределов. В иных случаях лучше приобрести дальномер лазерный, хотя он стоит немного дороже, но имеет лучшие технические характеристики.

Источник: https://moiinstrumenty.ru/izmeritelnye/dalnomer-lazernyi-ili-ultrazvukovoi.html

Как работает ультразвуковой дальномер | РОБОТОША

Бесконтактные способы измерения расстояний, используя волны в ультразвуковом диапазоне широко применяются в нашей повседневной жизни. Мы сталкиваемся с ними, делая УЗИ в поликлинике, используя эхолот на рыбалке.

Парктроник в автомобиле помогает нам избежать столкновения, сдавая задним ходом. И конечно же ультразвуковые датчики широко применяются в робототехнике, помогая нашему роботу лучше «осязать» мир.

В живой природе принцип ультразвуковой локации используется, например, летучими мышами и дельфинами. Сегодня я расскажу как же все это работает.

Что такое ультразвук

Человек способен воспринимать звуковые волны, совершающие колебания в диапазоне от 20 до 20000 Гц (напомню, 1 Герц — это число колебаний в секунду). С возрастом диапазон воспринимаемых нами частот снижается, но в среднем, ребенок способен воспринимать звук именно в этом диапазоне.

Если же колебания звуковых волн превысят этот диапазон, то человек перестает воспринимать их, но летучие мыши, собаки, дельфины, и мотыльки вполне могут их услышать. Такие колебания являются примерами ультразвука. Ультразвук — это упругие колебания и волны в диапазоне от 20 кГц до 1 ГГц.

Термин упругие подчеркивает неэлектромагнитную природу этих колебаний и волн.

Длина волны находится в обратной зависимости от ее частоты, следовательно ультразвуковые волны, по сравнению с обычным звуком имеют меньшую длину волны. Вследствие этого, ультразвуковые волны отражаются от различных препятствий гораздо лучше, чем обычные звуковые волны, что делает их весьма полезными на практике.

Автомобильный парктроник

Пьезоэффект и магнитострикция

Как же получить колебания в ультразвуковом диапазоне?

Кристаллы некоторых материалов (таких как кварц) способны совершать очень быстрые колебания, при прохождении через них электричества. Это, так называемый, обратный пьезоэффект.

Во время вибрации, они толкают и тянут воздух вокруг себя, производя, тем самым, ультразвуковые волны. Устройства, которые производят ультразвуковые волны с помощью пьезоэлектричества известны как пьезоэлектрические преобразователи.

Пьезоэлектрические кристаллы также работать в обратном порядке: если ультразвуковые волны, распространяясь по воздуху,  сталкиваются с пьезоэлектрическим кристаллом, слегка деформируют его поверхность, в результате чего в кристалле возникает электрическое поле.

Итак, если подключить пьезоэлектрический кристалл к измерителю электрического напряжения, мы получим детектор ультразвука.

Пьезоэлектрический эффект

Ультразвуковые волны могут быть получены с использованием магнетизма вместо электричества.

Так же, как пьезоэлектрические кристаллы производят ультразвуковые волны в ответ на электричество, существуют и другие кристаллы, которые излучают ультразвук в ответ на магнетизм. Это эффект магнистрикции.

Такие кристаллы называются магнитострикционными кристаллами. Датчики, использующие их, называются магнитострикционными преобразователями.

В англоязычной литературе ультразвуковые датчики называются ultrasound sensor.

Ультразвуковой дальномер

Используя пьезоэлектрические или магнитострикционные преобразователи мы можем создать устройство, измеряющее расстояние до объектов — ультразвуковой дальномер, который работает следующим образом.

В момент измерения мы создаем электрическое колебание при помощи генератора, которое преобразуясь (например, при помощи пьезокристалла) в ультразвуковую волну, излучается в окружающее пространcтво.

Эта волна отражается от препятствия и возвращается как эхо в приемник (также можно использовать пьезокристалл).

Измеряя время между посылкой и приемом нашего отраженного сигналаи, зная скорость звуковой волны , распространяемой в данной среде (для воздуха это величина около 340 м/с), мы можем вычислить расстояниедо препятствия.

Принцип действия ультразвукового дальномера

Ограничения

  • Повышением частоты (снижением длины) излучаемой волны можно увеличивать чувствительность прибора к более мелким объектам.
  • Частичные отражения, или как их называют паразитный эхо-сигнал, могут исказить результаты измерений (причиной могут стать криволинейные или наклонные по-отношению к направлению излучения сигнала поверхности).

Паразитный эхо-сигнал

  • Измерения объектов из звукопоглощающих, изоляционных материалов или имеющих тканевую (шерстяную) поверхность могут привести к неправильным измерениям вследствии поглощения (ослабления) сигнала. Домашний кошара может стать этаким «стелсом» для ультразвукового дальномера.
  • Чем меньше объект, тем меньшую отражающую поверхность он имеет. Это приводит к более слабому отраженному сигналу.

Отражение от маленького объекта приводит к слабому сигналу

  • При высокой влажности (дождь, снег) сигнал также может частично отражаться от капель (снежинок), что приводит к паразитному эхо-сигналу.
  • Сильный ветер может повлиять на распространение волн (буквально «сдуть»), что также приводит к ошибке измерений.

Зная ограничения, связанные с физической природой ультразвука можно решить подходит этот тип дальномера для вашей задачи или же нет.

 

Источник: http://robotosha.ru/electronics/how-works-ultrasound-meter.html

Ультразвуковой дальномер-рулетка CP-3001

Заказал это устройство из-за своей тяги к многофункциональными гаджетам.

Дальномер, да еще рулетка для измерений небольших расстояний в одном флаконе – это прикольно! Конечно, я был в курсе, что измерение расстояния ультразвуком имеет множество недостатков и не идет в никакое сравнение с измерением лазерным дальномером, но возможность протестировать новое, да еще не описанное устройство взяла верх, и я его заказал. Так что, если вам интересно, что из этого получилось… Дальномер пришел в стандартной для магазина OEM-упаковке – белой картонной коробке. В комплекте был сам дальномер, источник питания (редкая для наших краев батарейка 23A 12V) и инструкция.По дизайну и размерам дальномер сходен с обычной рулеткой. Только в отличие от рулетки сбоку расположены жидкокристаллический дисплей и функциональные кнопки.С противоположной стороны – батарейный отсек и кнопка для сворачивания рулетки. Да, здесь в отличие от обычной рулетки лента фиксируется при извлечении.С лицевой стороны – излучатель / приемник ультразвука, лазерный целеуказатель и кнопка активации измерения.Сверху — тумблер включения и выход рулетки. Общая длина рулетки – 1 м. Материал – пластик. С одной стороны шкала в миллиметрах, с другой — в дюймах. По сравнению с моей 3-х метровой рулеткой из металлической ленты смотрится довольно скромно.Вес дальномера с батарейкой – почти 90 г.Корпус прибора скреплен только двумя болтами (два других закрывают отсек с рулеткой). Это позволило без проблем его вскрыть, для того чтобы ознакомиться с внутренним строением.
Заявленные параметры устройства:

Измеряемое расстояние: 0.5 – 18 м.

Точность: 0.5%
Рабочая частота: 40 kHz
Рабочая температура: 0 – +43 градуса Цельсия В отличие от измерений рулеткой, для осуществления корректных измерений ультразвуком требуется выполнение определенных условий: 1) Так как измерение осуществляется по принципу эхолокации (измеряется время, за которое ультразвуковая волна доходит до препятствия, отражается от него и возвращается назад), необходимо чтобы пространство между прибором и объектом, расстояние до которого измеряется, было свободно. Также нежелательно проводить измерения до предметов, которые могут поглощать звуковую волну (например, штор) и имеют неровную поверхность. 2) Скорость распространения ультразвука в воздухе зависит от температуры. Для оценки температуры в дальномер встроен термодатчик. Поскольку он находится внутри прибора, то при переносе его из одной температурной среды в другую перед измерением следует подождать, чтобы температура прибора сравнялась с температурой окружающей среды. 3) Фронт звуковой волны по мере распространения расширяется, поэтому если объект до которого проводится измерение находится на большем расстояния, он также должен быть достаточно большим (то есть измерение длины узкого и длинного коридора может оказаться некорректным). 4) Атмосферные колебания также оказывают влияние на измерение, поэтому прибор не рекомендуется использовать на открытом воздухе. Ограничения, накладываемые на измерения, как видите, настолько существенны, что исключают профессиональное использование этого инструмента. В быту же измерения необходимы довольно редко, они как правило происходят в более комфортных условиях и не требуют точности до миллиметра. Лично я делал их обычной рулеткой. Применимость ультразвукового дальномера для бытовых измерений в моем представление зависело от того, насколько удобным и точным это будет по сравнению с рулеткой. Прежде всего, проверим точность определения температуры. Думаю приемлемо.Процесс измерения заключается в наведении прибора на поверхность, до которой измеряется расстояние и нажатии на кнопку «MEAS». Поверхность в месте приложения звуковой волны подсвечивается лазером (это для того чтобы было видно, до куда конкретно мы измеряем расстояние), слышен негромкий щелчок и на экране отображается результат. Все занимает пару секунд.

Что касается точности измерений. В дальномере предусмотрен выбор измерения расстояния от задней (по умолчанию) или передней кромки. Независимо от выбора кромки, прибор почему то прибавляет 2 см. к результату измерения.

Судя по схожей проблеме, описанной в обзоре дальномера другой модели, это очевидно какой-то нюанс электроники. Точность, как вы можете убедиться, в обоих случаях соизмерима точности рулетки (естественно учитывая отступ в 2 см).

Расстояние между кромками – 7см.

От задней кромкиОт передней кромки

Измерения проводились в узком и длинном коридоре, как раз в условиях, где применение ультразвукового дальномера не рекомендуется. По этой причине отправная точка измерений располагалась примерно посередине коридора, расстояния измерялись в обе стороны от нее, а для определения общей длины была использована функция суммирования (кнопка “+/=“).

В одну сторону получилось 5.29 м.В другую – 9.29 м.Итого – 14.58 м. Общее время измерений – секунд 30.В принципе, таким способом можно суммировать любое число расстояний, тут главное не сбиться в процесс измерения.

Длина коридора по замерам рулеткой составила 15 м, а сам процесс измерения 3-х метровой рулеткой – около 5 минут (с учетом простановку пометок карандашом). Этот результат более точен, но трудозатраты значительно выше.

Помимо суммирования, прибор может умножать значения (кнопка “x/=“), что позволяет вычислять площадь

и объем

Плюсы:

Удобно. Не нужно мотаться с рулеткой по помещению. Процесс измерения занимает считанные секунды.

Минусы:

Низкая точность измерения. На процесс прохождения звука влияет довольно много внешних факторов, поэтому погрешность измерения в различных условиях будет также разная. К тому же, если рулеткой мы можем мерять просто по полу не смотря на его наклон, то дальномер придется фиксировать по уровню чтобы волна не ушла в сторону.

Ограниченная область применения. Расстояния можно измерять только до относительно больших и плоских предметов и только в помещении.

Как обычно у китайцев – отличная идея и хромающая реализация. Сам по себе ультразвуковой дальномер мало востребован из-за низкой точности и ограниченной области применения. Если снабдить его рулеткой, то можно проводить измерения на скорую руку дальномером, а более точные или недоступные дальномеру измерения рулеткой.

В реальности же, область применения измерений рулеткой значительно выше, следовательно, нужно было бы к качественной рулетке приделать дальномер. То есть чтобы в качестве дополнительной опции выступал дальномер, а не посредственная рулетка делала из посредственного дальномера многофункциональное устройство.

В общем, как идея такой «комбайн» вполне имеет право на жизнь. Что касается этой конкретной реализации – решать вам. Лично я удовлетворил свое любопытство, получив этот инструмент бесплатно на обзор от интернет — магазина Chinabuye.com. Купил бы я его? Думаю — нет. Слишком мало ситуаций в которых я бы нашел ему применение.

Источник: https://mysku.ru/blog/china-stores/29314.html

Ультразвуковой дальномер

Приветствую всех. Попал мне в руки недавно ультразвуковой датчик, который измеряет расстояние до объекта – US-100. Подобную вещь можно приобрести на торговых интернет площадках. На рынках своего города таких игрушек в продаже не удалось найти.

Было решено построить схему на основе такого датчика на распространенном микроконтроллере AVR ATmega8. Назначение устройства состоит в измерении расстояния до объекта, а также измерения температуры. К слову о температуре.

Модель US-100 это ультразвуковой датчик с температурной компенсацией. Скорость распространения звуковой (ультразвуковой) волны при разных температурах будет отличаться. Измерение датчика основано на времени прохождения звуковой волны от объекта до приемника датчика.

 Температурная компенсация, скорее всего не полностью, устранит погрешность вызванную температурой окружающей среды.

При рассмотрении печатной платы, можно сделать заключение об источнике измерения температуры: термометр находится в микросхеме или измерение температуры идет за счет диода, расположенного на краю платы.

При измерении температуры диодом используется его P-N переход и связано это с температурным коэффициентом проводимости. С большой уверенностью это второй вариант, так как при работе ниже приведенной схемы при касании пальцами этого диода, температура изменяется.

Так что при измерении лучше всего стараться руками не трогать датчик, чтобы получить более точные данные о расстоянии.

Для измерения датчик использует 2 головки, напоминающие большой микрофон или маленький динамик. По сути это и то, и то. Одна из головок излучает ультразвуковую волну, вторая принимает отраженный сигнал ультразвуковой волны. По времени прохождения определяется пройденное расстояние. По видимому ограничение измеряемого расстояния в 4,5 метра обусловлена мощностью излучателя.

Что относительно общения датчика с микроконтроллером, модель US-100 имеет два возможных интерфейса, выбираемые перемычкой на задней стороне платы датчика. Если перемычка стоит выбран интерфейс UART, если перемычка снята, используется интерфейс или режим работы GPIO.

В первом случае для общения с микроконтроллером используется либо аппаратные средства микроконтроллера, либо программные. Во втором случае принимать и передавать данные придется только вручную.

В схеме устройства задействуем более простой режим работы с использованием UART интерфейса.

Необходимо уточнить нюансы по распиновке и подключению датчика к микроконтроллеру. Обычно при передачи данных по UART линии Rx и Tx подключаются крест накрест – Rx на Tx, а Tx на Rx. Данный ультразвуковой датчик же нужно подключать в соответствии с подписанными контактами на печатной плате Rx на Rx, а Tx на Tx.

Китайцы отожгли, согласен. Прежде чем это определилось, пришлось долго мучиться и в конце концов придти к этому. Итак, при работе по UART, для инициализации одного измерения расстояния ультразвуковому датчику US-100 необходимо на вывод Trig/Tx передать значение 0x55, что соответствует символу “U”.

В ответ датчик передаст два байта информации о расстоянии на вывод Echo/Rx – первый байт – это старшие 8 бит, второй байт – младшие 8 бит. Единицы измерения расстояния – миллиметры. Чтобы два байта перевести в одно значение расстояния, необходимо первый байт умножить на 256 и прибавить второй байт.

Необходимо делать таким образом, потому что при переполнении младшего байта, старший байт увеличивается на единицу. Чтобы вывести текущее значение температуры окружающей среды, необходимо передать значение 0x50, что соответствует символу “P”. В ответ датчик передаст значение температуры.

Фактическое значение температуры будет равно полученному значению от датчика отнять 45.

Параметры ультразвукового датчика US-100:

  • напряжение питания – 2,4 – 5,5 вольт постоянного напряжения
  • потребляемый ток в режиме ожидания – 2 мА
  • рабочая температура – минус 20 – плюс 70 С
  • угол обзора – 15 градусов
  • интерфейс – GPIO или UART
  • измеряемое расстояние – от 2 см до 450 см
  • погрешность – плюс минус 3 мм + 1%

Конфигурация UART для датчика: 9600 baud rate, 8 data bits, parity: none, 1 stop bit.

Перейдем к схеме устройства.

Схема ультразвукового дальномера построена на основе микроконтроллера Atmega8 и ультразвуковом датчике US-100. Питание схема берется от линейного стабилизатора напряжения L7805, его можно заменить отечественным аналогом КР142ЕН5А, конденсаторы в обвязке стабилизатора обязательны, хотя может работать и без них. Некоторые стабилизаторы просто не запускаются без конденсаторов.

Линейный стабилизатор можно заменить на импульсный, например MC34063 или LM2576, но придется немного изменить схему согласно подключению импульсных стабилизаторов в схеме. Конденсаторы С5-С7 необходимы для обеспечения стабильности работы микроконтроллера и датчика. Номиналы всех конденсаторов можно варьировать в разумных пределах.

Резистор R2 необходим для предотвращения самопроизвольного перезапускания микроконтроллера и служит подтяжкой положительного питания на вывод reset. Резистор R1 регулирует контраст LCD-дисплея. В качестве информационной панели был взят жидкокристаллический (ЖК или по другому LCD) экран SC1602, 2 строки по 16 символов на основе контроллера HD44780.

Заменить LCD-дисплей можно на любую другую модель на базе контроллера HD44780 с таким же количеством строк и символов в строке или больше. На печатной плате LCD-дисплея есть возможность задействовать подсветку экрана двумя способами – либо при помощи допаивания резистора и перемычки на самой плате экранчика или при помощи специальных выводов, обычно обозначенных как “А” и “К”.

Анод и катод соответственно. К ним через токоограничительный резистор подключается напряжение питания схемы 5 вольт. В данной схеме задействован первый способ, поэтому на схеме не обозначено. Вместо тактовых кнопок S1 – S5 можно использовать любые другие кнопки.

Светодиод LED1 можно использовать любой подходящий по цвету или заменить его на транзистор и управлять какой-либо другой схемой в зависимости от превышения дистанции от датчика.

В зависимости от примененного типа транзисторов (P-N-P или N-P-N) при превышении лимита дистанции или расстояния выход будет иметь положительное или отрицательное напряжение, то есть при высоком логическом сигнале микроконтроллера транзистор N-P-N будет открыт, а транзистор P-N-P закрыт.

 В прошивку микроконтроллера заложен параметр, при котором при превышении обозначенного лимита расстояния на вывод PB0 будет подаваться высокий логический уровень напряжения. В данной схеме светодиод просто сигнализирует о превышении. Данный сигнал дублируется на LCD-дисплее подчеркиванием данный о лимите дистанции. Данный параметр можно регулировать кнопками S1, S2.

При нажатии происходит увеличение или уменьшение на 10 мм. Информация о дистанции на дисплей выводится также в миллиметрах. Информация о температуре окружающей среды выводится на дисплей в градусах Цельсия. К статье прилагается два варианта прошивок: 1) непрерывное измерение параметров дистанции и температуры (интервал примерно 0,2 секунды), при этом кнопки S4, S5 не задействуются, 2) при нажатии кнопок S4, S5 происходит однократный запрос к датчику на измерение температуры и расстояния. Видео к статье сделано с прошивкой номер 1. Для программирования микроконтроллера необходимо прошить фьюз биты:

Новичкам рекомендую пользоваться шестнадцатеричными значениями фьюз битов HIGH и LOW, чтобы не напортачить с расстановкой галочек.

Скриншот из AVRstudio (есть отличия от дудки, sina prog и других программ для прошивки микроконтроллеров).

Если Вы используете программы для прошивки микроконтроллеров AVR, в которых нет ввода параметров фьюзов, то можно воспользоваться фьюз калькуляторами для перевода галочек в шестнадцатеричную форму и наоборот.

Схема была собрана и проверена на макетной плате для Atmega8:

Конструктивно схему можно оформить, например, в виде пистолета с лазерным указателем направления ультразвукового датчика. Единственно ограничено измеряемое расстояния, при превышении которого погрешность резко возрастает.

Также ограничение касается положения и размера предмета, до которого измеряется расстояние – расстояние до слишком мелких объектов или объектов находящихся под большим углом будет искажено.

 Идеальное сочетание достаточно большие предметы, находящиеся перпендикулярно направлению датчика. Погрешность измерений примерно соответствует заявленным производителем.

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

Предлагайте свои идеи и варианты применения, наиболее интересные идеи в будущем могут быть реализованы.

К статье прилагаю 2 варианта HEX прошивок для МК, проект в Proteus (версия 7.7, ультразвукового датчика US-100 в базе proteus'а нет, но задействован UART отладчик), а также небольшое видео, демонстрирующее работу схемы.

Скачать список элементов (PDF)

Прикрепленные файлы:

Источник: http://cxem.net/mc/mc287.php

Ультразвуковой дальномер

Подключенный сонар

Вот прикупил я для своего робота ультразвуковой дальномер — Maxbotix LV-MaxSonar EZ1.

На днях ко мне пришла посылка из Терраэлектроники, где сей замечательный девайс был куплен. Сам сонар стоит под 750 рублей, доставка обошлась в 800 🙂 Но я заказывал кучу всего вкусного, так что оно того стоило.

Несмотря на нехватку времени, не побаловаться этой игрушкой я не мог. Итак, встречайте краткий тест системы.

Описание:
Девайс представляет из себя головку излучателя с платой контроллера на заднице. Контроллер собран на базе PIC16F676 и микросхемы LM324.

Схема сонара указана в даташите, а прошивку в итоге можно и самому написать, так что рано или поздно я повторю его на AVR 🙂 Тем более где то я эту схему уже видел… Впрочем, схема тут не важна, УЗ сонаров как грязи разработано умельцами, самое главное тут это излучатель, вот его найти задачка та еще.

Я применил MaxBotix’овский пьезоизлучатель. И если цена готового модуля почти 800рублей, то сама пищалка стоит всего 150 рублей.

Параметры пищалки:

  • уровень звукового давления (SPL): 117dB (0dB = 0.2n bar)
  • чувствительность (SEN): –60dB (0dB = 1V/u bar)
  • импеданс: 1kΩ
  • длительность импульса: менее 1ms
  • ёмкость: 2400pF ±20%
  • диапазон рабочих частот: 38kHz…42kHz
  • прикладываемое напряжение: 20V RMS максимум (максимум 60V от пика до пика при длительности импульса 10%)

Параметры сонара:

  • непрерывное изменение усиления для контроля за диаграммой направленности и подавления боковых лепестков
  • обнаружение объектов на нулевом расстоянии
  • напряжение питания: 2.5V…5.5V
  • ток потребления: 2mA
  • период измерений: 50ms (20Hz)

Выходной сигнал:
Разработчики постарались на славу. Тут тебе и полноценный UART и ШИМ выход и аналоговый. На любой вкус, короче.

Вот небольшой видеоролик, на котором я тестирую сей девайс. Поскольку времени возится нет особо, то я просто подал питание и подключился к аналоговому выходу. Напряжение выдается из соотношения 10mV на дюйм. Точность, особенно на небольших расстояния +/- один дюйм. Особо радует узкая направленность головки. С расстояния в 15см отчетливо различает карандаш если тот стоит строго напротив. Так что сканированием можно обшарить все, что рядом с неплохим разрешением. На дальность, конечно, все куда более расплывчато.

Источник: http://easyelectronics.ru/ultrazvukovoj-dalnomer.html

Ардуино: ультразвуковой дальномер HC-SR04

Дальномер — это устройство для измерения расстояния до некоторого предмета. Дальномер помогает роботам в разных ситуациях.

Простой колесный робот может использовать этот прибор для обнаружения препятствий. Летающий дрон использует дальномер для баражирования над землей на заданной высоте.

 С помощью дальномера можно даже построить карту помещения, применив специальный алгоритм SLAM.

1. Принцип действия

На этот раз мы разберем работу одного из самых популярных датчиков — ультразвукового (УЗ) дальномера.

Существует много разных модификаций подобных устройств, но все они работают по принципу измерения времени прохождения отраженного звука.

 То есть датчик отправляет звуковой сигнал в заданном направлении, затем ловит отраженное эхо и вычисляет время полета звука от датчика до препятствия и обратно.

Из школьного курса физики мы знаем, что скорость звука в некоторой среде величина постоянная, но зависящая от плотности среды. Зная скорость звука в воздухе и время полета звука до цели, мы можем рассчитать пройденное звуком расстояние по формуле:

s = v*t

где v — скорость звука в м/с, а t — время в секундах.  Скорость звука в воздухе, кстати, равна 340.29 м/с.

Чтобы справиться со своей задачей, дальномер имеет две важные конструктивные особенности. Во-первых, чтобы звук хорошо отражался от препятствий, датчик испускает ультразвук с частотой 40 кГц.

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

На рисунке представлена диаграмма направленности типичного УЗ дальномера.

Как видно на диаграмме, угол обзора самого простого УЗ дальномера составляет примерно 50-60 градусов. Для типичного варианта использования, когда датчик детектирует препятствия перед собой, такой угол обзора вполне пригоден. Ультразвук сможет обнаружить даже ножку стула, тогда как лазерный дальномер, к примеру, может её не заметить.

Если же мы решим сканировать окружающее пространство, вращая дальномер по кругу как радар, УЗ дальномер даст нам очень неточную и шумную картину. Для таких целей лучше использовать как раз лазерный дальномер.

Также следует отметить два серьезных недостатка УЗ дальномера. Первый заключается в том, что поверхности имеющие пористую структуру хорошо поглощают ультразвук, и датчик не может измерить расстояние до них.

 Например, если мы задумаем измерить расстояние от мультикоптера до поверхности поля с высокой травой, то скорее всего получим очень нечеткие данные.

Такие же проблемы нас ждут при измерении дистанции до стены покрытой поролоном.

Второй недостаток связан со скоростью звуковой волны. Эта скорость недостаточно высока, чтобы сделать процесс измерения более частым. Допустим, перед роботом есть препятствие на удалении 4 метра. Чтобы звук слетал туда и обратно, потребуется целых 24 мс. Следует 7 раз отмерить, прежде чем ставить УЗ дальномер на летающих роботов.

2. Ультразвуковой дальномер HC-SR04

В этом уроке мы будем работать с датчиком HC-SR04 и контроллером Ардуино Уно. Этот популярный дальномер умеет измерять расстояние от 1-2 см до 4-6 метров. При этом, точность измерения составляет 0.5 — 1 см.

Встречаются разные версии одного и того же HC-SR04. Одни работают лучше, другие хуже. Отличить их можно по рисунку платы на обратной стороне. Версия, которая работает хорошо выглядит так:

А вот версия, которая может давать сбои:

3. Подключение HC-SR04

Датчик HC-SR04 имеет четыре вывода. Кроме земли (Gnd) и питания (Vcc) еще есть Trig и Echo. Оба этих вывода цифровые, так что подключаем из к любым выводам Ардуино Уно:

HC-SR04 GND VCC Trig Echo
Arduino Uno GND +5V 3 2

Принципиальная схема устройства

Внешний вид макета

4. Программа

Итак, попробуем приказать датчику отправить зондирующий ультразвуковой импульс, а затем зафиксируем его возвращение. Посмотрим как выглядит временная диаграмма работы HC-SR04.

На диаграмме видно, что для начала измерения нам необходимо сгенерировать на выводе Trig положительный импульс длиной 10 мкс.

Вслед за этим, датчик выпустит серию из 8 импульсов и поднимет уровень на выводе Echo, перейдя при этом в режим ожидания отраженного сигнала.

Как только дальномер почувствует, что звук вернулся, он завершит положительный импульс на Echo.

Получается, что нам нужно сделать всего две вещи: создать импульс на Trig для начала измерения, и замерить длину импульса на Echo, чтобы потом вычислить дистанцию по нехитрой формуле. Делаем.

int echoPin = 2; int trigPin = 3; void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { int duration, cm; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); cm = duration / 58; Serial.print(cm); Serial.println(” cm”); delay(100); }

Функция pulseIn замеряет длину положительного импульса на ноге echoPin в микросекундах. В программе мы записываем время полета звука в переменную duration. Как мы уже выяснили ранее, нам потребуется умножить время на скорость звука:

s = duration * v = duration * 340 м/с

Переводим скорость звука из м/с в см/мкс:

s = duration * 0.034 м/мкс

Для удобства преобразуем десятичную дробь в обыкновенную:

s = duration * 1/29 = duration / 29

А теперь вспомним, что звук прошел два искомых расстояния: до цели и обратно. Поделим всё на 2:

s = duration / 58

Теперь мы знаем откуда взялось число 58 в программе!

Загружаем программу на Ардуино Уно и открываем монитор  последовательного порта. Попробуем теперь наводить датчик на разные  предметы и смотреть в мониторе рассчитанное расстояние.

Задания

Теперь, когда мы умеем вычислять расстояние с помощью дальномера, сделаем несколько полезных устройств.

  1. Строительный дальномер. Программа каждые 100мс измеряет расстояние с помощью дальномера и выводит результат на символьный ЖК дисплей. Для удобства полученное устройство можно поместить в небольшой корпус и запитать от батареек.
  2. Ультразвуковая трость. Напишем программу, которая будет «пищать» зуммером с различной частотой, в зависимости от измеренного расстояния. Например, если расстояние до препятствия более трех метров — зуммер издает звук раз в пол секунды. При расстоянии 1 метр — раз в 100мс. Менее 10см — пищит постоянно.

Заключение

Ультразвуковой дальномер — простой в использовании, дешевый и точный датчик, который отлично выполняет свою функцию на тысячах роботов.

 Как мы выяснили из урока, у датчика есть недостатки, которые следует учитывать при постройке робота. Хорошим решением может стать совместное использование ультразвукового дальномера в паре с лазерным.

В таком случае, они будут нивелировать недостатки друг друга.

Источник: http://robotclass.ru/tutorials/arduino-sonic-hc-sr04/

Датчик расстояния Ардуино HC SR04

Ультразвуковые датчики расстояния Ардуино очень востребованы в робототехнических проектах из-за своей относительной простоты, достаточной точности и доступности.

Они могут быть использованы как приборы, помогающие объезжать препятствия, получать размеры предметов, моделировать карту помещения и сигнализировать о приближении или удалении объектов. Одним из распространенных вариантов такого устройства является датчик расстояния, в конструкцию которого входит ультразвуковой дальномер HC SR04.

В этой статье мы познакомимся с принципом действия датчика расстояния, рассмотрим несколько вариантов подключения к платам Arduino, схему взаимодействия и примеры скетчей.

Датчик расстояния в проектах Arduino

Принцип работы ультразвуковых датчиков

Способность ультразвукового датчика определять расстояние до объекта основано на принципе сонара – посылая пучок ультразвука, и получая его отражение с задержкой, устройство определяет наличие объектов и расстояние до них.

Ультразвуковые сигналы, генерируемые приемником, отражаясь от препятствия, возвращаются к нему через определенный промежуток времени.

Именно этот временной интервал становится характеристикой помогающей определить расстояние до объекта.

Внимание! Так как в основу принципа действия положен ультразвук, то такой датчик не подходит для определения расстояния до звукопоглощающих объектов. Оптимальными для измерения являются предметы с ровной гладкой поверхностью.

Описание датчика HC SR04

Датчик расстояния Ардуино является прибором бесконтактного типа, и обеспечивает высокоточное измерение и стабильность. Диапазон дальности его измерения составляет от 2 до 400 см. На его работу не оказывает существенного воздействия электромагнитные излучения и солнечная энергия. В комплект модуля с HC SR04 arduino также входят ресивер и трансмиттер.

Ультразвуковой дальномер HC SR04 имеет такие технические параметры:

  • Питающее напряжение 5В;
  • Рабочий параметр силы т ока – 15 мА;
  • Сила тока в пассивном состоянии < 2 мА;
  • Обзорный угол — 15°;
  • Сенсорное разрешение – 0,3 см;
  • Измерительный угол — 30°;
  • Ширина импульса – 10-6 с.

Датчик оснащен четырьмя выводами (стандарт 2, 54 мм):

  • Контакт питания положительного типа — +5В;
  • Trig (Т) – выход сигнала входа;
  • Echo (R) – вывод сигнала выхода;
  • GND – вывод «Земля».

Схема взаимодействия Arduino с HC SR04

Для получения данных, необходимо выполнить такую последовательность действий:

  • Подать на выход Trig импульс длительностью 10 микросек;
  • В ультразвуковом дальномере hc sr04 подключенном к arduino произойдет преобразование сигнала в 8 импульсов с частотой 40 кГц, которые через излучатель будут посланы вперед;
  • Когда импульсы дойдут до препятствия, они отразятся от него и будут приняты приемником R, что обеспечит наличие входного сигнала на выходе Echo;
  • На стороне контроллера полученный сигнал при помощи формул следует перевести в расстояние.

При делении ширины импульса на 58.2, получим данные в сантиметрах, при делении на 148 – в дюймах.

Подключение HC SR04 к Arduino

Выполнить подключение ультразвукового датчика расстояния к плате Arduino достаточно просто. Схема подключения показана на рисунке.

Контакт земли подключаем к выводу GND на плате Arduino, выход питания соединяем с 5V. Выходы Trig и Echo подсоединяем к arduino на цифровые пины. Вариант подключения с помощью макетной платы:

Библиотека для работы с HC SR04

Для облегчения работы с датчиком расстояния HC SR04 на arduino можно использовать библиотеку NewPing. Она не имеет проблем с пинговыми доступами и добавляет некоторые новые функции.

К особенностям библиотеки можно отнести:

  • Возможность работы с различными ультразвуковыми датчиками;
  • Может работать с датчиком расстояния всего через один пин;
  • Отсутствие отставания на 1 секунду при отсутствии пинга эха;
  • Для простой коррекции ошибок есть встроенный цифровой фильтр;
  • Максимально точный расчет расстояния.

Скачать бибилотеку NewPing можно здесь

Точность измерения расстояния датчиком HC SR04

Точность датчика зависит от нескольких факторов:

  • температуры и влажности воздуха;
  • расстояния до объекта;
  • расположения относительно датчика (согласно диаграммы излучения);
  • качества исполнения элементов модуля датчика.

В основу принципа действия любого ультразвукового датчика заложено явление отражения акустических волн, распространяющихся в воздухе.

Но как известно из курса физики, скорость распространения звука в воздухе зависит от свойств этого самого воздуха (в первую очередь от температуры).

Датчик же, испуская волны и замеряя время до их возврата, не догадывается, в какой именно среде они будут распространяться и берет для расчетов некоторую среднюю величину. В реальных условиях из-за фактора температуры воздуха HC-SR04 может ошибаться от 1 до 3-5 см.

Фактор расстояния до объекта важен, т.к. растет вероятность отражения от соседних предметов, к тому же и сам сигнал затухает с расстоянием.

Также для повышения точности надо правильно направить датчик: сделать так, чтобы предмет был в рамках конуса диаграммы направленности. Проще говоря,  «глазки» HC-SR04 должны смотреть прямо на предмет.

Для уменьшения ошибок и погрешности измерений обычно выполняются следующие действия:

  • усредняются значения (несколько раз замеряем, убираем всплески, потом находим среднее);
  • с помощью датчиков (например, DHT11 или DHT22) определяется температура и вносятся поправочные коэффициенты;
  • датчик устанавливается на серводвигатель, с помощью которого мы «поворачиваем голову», перемещая диаграмму направленности влево или вправо.

Примеры использования датчика расстояния

Давайте рассмотрим пример простого проекта с платой Arduino Uno и датчиком расстояния HC SR04. В скетче мы будем получать значение расстояния до предметов и выводить их в монитор порта в среде Arduino IDE. Вы сможете легко изменить скетч и схему подключения, чтобы датчик сигнализировал о приближении или отдалении предмета.

Подключение датчика к ардуино

При написании скетча использовалась следующий вариант распиновки подключения датчика:

  • VCC: +5V
  • Trig – 12 пин
  • Echo — 11 пин
  • Земля (GND) — Земля (GND)

Пример скетча

Начнем работу с датчиком сразу с относительного сложного варианта – без использования внешних библиотек.

В данном скетче мы выполняем такую последовательность действий:

  • Коротким импульсом (2-5 микросекунды) переводим датчик расстояния в режим эхолокации, при котором в окружающее пространство высылаются ультразвуковые волны с частотой 40 КГц.
  • Ждем, пока датчик проанализирует отраженные сигналы и по задержке определит расстояние.
  • Получаем значение расстояния. Для этого ждем, пока HC SR04 выдаст на входе ECHO импульс, пропорциональный расстоянию. Мы определяем длительность импульса с помощью функции pulseIn, которая вернет нам время, прошедшее до изменения уровня сигнала (в нашем случае, до появления обратного фронта импульса).
  • Получив время, мы переводим его в расстояние в сантиметрах путем деления значения на константу (для датчика SR04 это 29.1 для сигнала «туда», столько же для сигнала «обратно», что в сумме даст 58.2).

Если датчик расстояния не выполняет считывание сигнала, то преобразование выходного сигнала никогда не примет значения короткого импульса – LOW. Так как у некоторых датчиков время задержки варьируется в зависимости от производителя, рекомендуется при использовании указанных скетчей выставлять его значение вручную (мы это делаем в начале цикла).

Если расстояние составляет более 3 метров, при котором HC SR04 начинает плохо работать, время задержки лучше выставлять более 20 мс, т.е. 25 или 30 мс.

#define PIN_TRIG 12
#define PIN_ECHO 11 long duration, cm; void setup() { // Инициализируем взаимодействие по последовательному порту Serial.begin (9600); //Определяем вводы и выводы pinMode(PIN_TRIG, OUTPUT); pinMode(PIN_ECHO, INPUT);
} void loop() { // Сначала генерируем короткий импульс длительностью 2-5 микросекунд. digitalWrite(PIN_TRIG, LOW); delayMicroseconds(5); digitalWrite(PIN_TRIG, HIGH); // Выставив высокий уровень сигнала, ждем около 10 микросекунд. В этот момент датчик будет посылать сигналы с частотой 40 КГц. delayMicroseconds(10); digitalWrite(PIN_TRIG, LOW); // Время задержки акустического сигнала на эхолокаторе. duration = pulseIn(PIN_ECHO, HIGH); // Теперь осталось преобразовать время в расстояние cm = (duration / 2) / 29.1; Serial.print(“Расстояние до объекта: “); Serial.print(cm); Serial.println(” см.”); // Задержка между измерениями для корректной работы скеча delay(250);
}

Скетч с использованием библиотеки NewPing

Теперь давайте рассмотрим вариант скетча с использованием библиотеки NewPing. Код существенно упростится, т.к. все описанные ранее действия спрятаны внутри библиотеки.

Все, что нам нужно сделать —  создать объект класса NewPing, указав пины, с помощью которых мы подключаем датчик расстояния и использовать методы объекта.

В нашем примере для получения расстояния в сантиметрах нужно использовать ping_cm().

#include #define PIN_TRIG 12
#define PIN_ECHO 11 #define MAX_DISTANCE 200 // Константа для определения максимального расстояния, которое мы будем считать корректным. // Создаем объект, методами которого будем затем пользоваться для получения расстояния.
// В качестве параметров передаем номера пинов, к которым подключены выходы ECHO и TRIG датчика NewPing sonar(PIN_TRIG, PIN_ECHO, MAX_DISTANCE); void setup() { // Инициализируем взаимодействие по последовательному порту на скорости 9600 Serial.begin(9600);
} void loop() { // Стартовая задержка, необходимая для корректной работы. delay(50); // Получаем значение от датчика расстояния и сохраняем его в переменную unsigned int distance = sonar.ping_cm(); // Печатаем расстояние в мониторе порта Serial.print(distance); Serial.println(“см”); }

Пример подключения ультразвукового дальномера HC SR04 с одним пином

Подключение HC-SR04  к Arduino может быть выполнено посредством использования одного пина. Такой вариант пригодится, если вы работаете с большим проектом и вам не хватает свободных пинов. Для подключения вам нужно просто установить между контактами TRIGи ECHO резистор номиналом 2.2K и подключить к ардуино контакт TRIG.

#include #define PIN_PING 12 // Пин с Arduino соединен с пинами trigger и echo на датчике расстояния
#define MAX_DISTANCE 200 // Максимальное расстояние, которое мы способны контролировать (400-500см). NewPing sonar(PIN_PING, PIN_PING, MAX_DISTANCE); // Регулировка пинов и максимального расстояния void setup() { Serial.begin(9600); // Открывается протокол с данными и частотой передачи 115200 бит/сек.
} void loop() { delay(50); // Задержка в 50 мс между генерируемыми волнами. 29 мс – минимально допустимое значение unsigned int distanceSm = sonar.ping(); // Создание сигнала, получение параметра его продолжительности в мкс (uS). Serial.print(“Ping: “); Serial.print(distanceSm / US_ROUNDTRIP_CM); // Пересчет параметра времени в величину расстояния и вывод результата (0 соответствует выходу за допустимый предел) Serial.println(“cm”);
}

Краткие выводы

Ультразвуковые датчики расстояния достаточно универсальны и точны, что позволяет их использовать для большинства любительских проектов.

В статье рассмотрен крайне популярный датчик HC SR04, который легко подключается к плате ардуино (для этого следует сразу предусмотреть два свободных пина, но есть вариант подключения и с одним пином).

Для работы с датчиком существуют несколько бесплатных библиотек (в статье рассмотрена лишь одна из них, NewPing), но можно обойтись и без них — алгоритм взаимодействия с внутренним контроллером датчика достаточно прост, мы показали его в этой статье.

Исходя из собственного опыта, можно утверждать, что датчик HC-SR04 показывает точность в пределах одного сантиметра на расстояниях от 10 см до 2 м. На более коротких и дальних дистанциях возможно появление сильных помех, что сильно зависит от окружающих предметов и способа использования. Но в большинстве случаев HC-SR04 отлично справлялся со своей работой.

Источник: https://ArduinoMaster.ru/datchiki-arduino/ultrazvukovoj-dalnomer-hc-sr04/

Ультразвуковой дальномер (HC-SR04)

Введение

Приветствую всех, сегодня мы поговорим об одном из самых популярных модулей из мира Arduino, а именно об ультразвуковом дальномере HC-SR04 (datasheet).

Данный модуль настолько популярен, что не писал о нем разве что ленивый, а это значит, что и нам пришло время рассмотреть его на нашем сайте.

Описание

Модуль HC-SR04 – это бесконтактный ультразвуковой дальномер, измеряющий расстояние от модуля до какого либо объекта.

По команде, модуль генерирует восемь ультразвуковых импульсов частотою 40кГц, после чего переходит в режим прослушивания, и фиксирует время за которое эти импульсы отразились от объекта и вернулись обратно.

Далее, путем не сложных вычислений, это время переводиться в расстояние до объекта. Таким образом, чем быстрее вернуться импульсы обратно, тем ближе объект к модулю.

Как и любое другое устройство, модуль HC-SR04 обладает как преимуществами над другими дальномерами, так и недостатками.

  • К преимуществам можно смело отнести цену, простоту и доступность. Так же на показания дальномера не влияют засветки от солнца, цвет и прозрачность объекта.
  • К недостаткам можно отнести плохое реагирование на пушистые и тонкие предметы. Отсутствие различных режимов и интерфейсов.

Характеристики

  • Рабочее напряжение: 5 В.
  • Рабочий ток: 15 мА.
  • Потребление в режиме тишины: 2 мА.
  • Рабочая частота: 40Гц.
  • Диапазон измерений: 2-400 см.
  • Эффективный угол: 15°.
  • Рабочий угол наблюдения: 30°.
  • Диапазон рабочих температур: 0 ° С до 60 ° С (± 10%).
  • Размеры: 45х20х15 мм.

Распиновка и подключение

  • Vcc – питание 5В.
  • Trig – цифровой вход. Для запуска измерения необходимо подать на этот вход логическую единицу на 10 мкс.

    Следующее измерение рекомендуется выполнять не ранее чем через 50 мс.

  • Echo – цифровой выход.

    После завершения измерения, на этот выход будет подана логическая единица на время, пропорциональное расстоянию до объекта.

  • GND – земля.

Принцип работы

  1. Подать на вывод Trig – HIGH (логическая единица, 5В) длительностью 10-11 мкс. Запуск.
  2. Ультразвуковой дальномер генерирует 8 импульсов на частоте 40 кГц и получает отражение (эхо).
  3. Считать длительность фронтов на выводе Echo (мкс).
  4. Перевести время в дальность до объекта.

Программирование

Работать с ультразвуковым дальномером HC-SR04 довольно просто, т.к. Arduino IDE и ее библиотека Wiring содержат все необходимые функции для работы с данным модулем. [pinMode(), digitalWrite(), LOW, HIGH, delayMicroseconds(), pulseIn()]

Но, если вы хотите сократить программирование к минимуму, вы можете воспользоваться и готовыми решениями в виде библиотек Ultrasonic и NewPing.

Теперь давайте рассмотрим несколько подготовленных мною примеров, где мы попробуем как самостоятельно работать с модулем, так и при помощи различных библиотек.

Примеры

Пример №1 (Самостоятельная работа).

#define TRIGGER_PIN 12 // Вывод Trig подключен к 12-у порту Ардуино. #define ECHO_PIN 11    // Вывод Echo подключен к 11-у порту Ардуино. void setup() {   Serial.begin(9600);             // Инициализация передачи по COM порту.   pinMode(TRIGGER_PIN, OUTPUT);   // Устанавливаем режим работы вывода, как “выход”.   pinMode(ECHO_PIN, INPUT);       // Устанавливаем режим работы вывода, как “вход”.   digitalWrite(TRIGGER_PIN, LOW); // Приводим порт Trig к состоянию по умолчанию.   delayMicroseconds(50);          // Делаем небольшую задержку в 50 мкс. } void loop() {   long duration, cm, inch, mm;        // Объявляем переменные для расчетов.   digitalWrite(TRIGGER_PIN, HIGH);    // Подаем логическую единицу (5В) на порт Trig (Включаем передатчик).   delayMicroseconds(11);              // Ждем 10-11 мкс.   digitalWrite(TRIGGER_PIN, LOW);     // Подаем логический ноль на порт Trig (Выключаем передатчик).   duration = pulseIn(ECHO_PIN, HIGH); // Засекаем время ответного импульса на порту Echo.   // Пересчет и вывод результата в сантиметрах.   cm = duration / 58;   Serial.print(“cm: “);   Serial.println(cm);   // Пересчет и вывод результата в миллиметрах.   mm = duration / 5.8;   Serial.print(“mm: “);   Serial.println(mm);   // Пересчет и вывод результата в дюймах.   inch = duration / 148;   Serial.print(“inch: “);   Serial.println(inch);   // Выводим разделитель и ждем 1 секунду.   Serial.println(“”);   delay(1000); }

Пример №2 (Библиотека Ultrasonic).

#include “Ultrasonic.h” #define TRIGGER_PIN 12   // Вывод Trig подключен к 12-у порту Ардуино. #define ECHO_PIN 11      // Вывод Echo подключен к 11-у порту Ардуино. // Создаем объект ultrasonic. Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN); void setup() {   Serial.begin(9600); // Инициализация передачи по COM порту. } void loop() {   // Вывод расстояния раз в секунду в сантиметрах.   Serial.print(“cm: “);   Serial.println(ultrasonic.Ranging(CM));   // Ждем 1 секунду.   delay(1000); }

Пример №3 (Библиотека NewPing).

#include “NewPing.h” #define TRIGGER_PIN 12   // Вывод Trig подключен к 12-у порту Ардуино. #define ECHO_PIN 11      // Вывод Echo подключен к 11-у порту Ардуино. #define MAX_DISTANCE 400 // Максимальная дистанция в сантиметрах. Чем меньше – тем точнее. // Создаем объект sonar. NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);   void setup() {   Serial.begin(9600); // Инициализация передачи по COM порту. }   void loop() {   // Вывод расстояния раз в секунду в сантиметрах.   Serial.print(“cm: “);   Serial.println(sonar.ping_cm());   // Ждем 1 секунду.   delay(1000); }

Заключение

Как вы видите работать с данным модулем довольно таки просто, ну а дополнительные библиотеки и вовсе сводят программирование к минимуму. Самостоятельно писать скетч или использовать одну из библиотек – решать вам, но мне лично приглянулась библиотека NewPing.

На этом обзор бесконтактного ультразвукового дальномера HC-SR04 подходит к концу, оставляйте свои комментарии и пожелания. Всем успехов и удачи!

Источник: http://arduino.on.kg/ultrazvukovoy-dalnomer-HC-SR04

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}