Ультразвуковой датчик своими руками

Ультразвуковой датчик своими руками

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


Рис.1. Робот в сборе

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

Чтобы разобраться как это все работает, потребуется немного теории.
Ультразвуком называются звуковые волны, имеющие частоту выше 20 килогерц. Они не воспринимаются человеческим ухом. В данном роботе частота сигнала составляет 40 кГц.
В подобных проектах часто используются готовые модули, такие как US-015 или HC-SR04. Основными деталями являются два цилиндрических объекта на плате. Один из них это излучатель, отмеченный буквой T, а другой является приемником сигнала, под буквой R.


Рис.2. Готовый УЗ модуль

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

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


Рис.3. Самодельный УЗ модуль

Давайте рассмотрим его схему.


Рис.4. Схема ультразвукового модуля

Этот модуль содержит передатчик и приемник сигнала.

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

Теперь разберем принцип работы приемника ультразвукового сигнала.
Когда сигнал, отраженный от объекта улавливается приемником (R), он усиливается транзисторами и фильтруется. После этого выпрямляется с помощью диодов VD1, VD2, сглаживается конденсатором и после этих преобразований сигнал поступит на компаратор.
Для того чтобы понять зачем он нужен, можно провести некоторые измерения. Черный щуп мультиметра подключить на минус питания, а красный установить до компаратора в точке X (рисунок 2).

Рис.5. Точка измерения

Измерения проводились при напряжении питания 5 Вольт. Когда перед модулем отсутствует какая либо преграда, то в точке Х напряжение составляет чуть меньше одного вольт. Если перед модулем установить преграду, то отраженный сигнал вызовет повышение напряжения в этой точке до 3 — 3,5 вольт. Это значение может меняться в зависимости от расстояния, формы объекта и некоторых других факторов. В данном случае отсутствует потребность измерения расстояния до объекта, а требуется всего лишь дать сигнал о том, что перед роботом появилась преграда. Для этого используется компаратор DA2, на выходе которого появляется сигнал низкого уровня при обнаружении препятствия, а в отсутствии него — логическая единица (два состояния). Этот логический сигнал можно направить в схему управления двигателями, которая позволит объехать препятствие.
В схеме имеется подстроечный резистор R8, подключенный в качестве потенциометра. С помощью него можно установить на каком расстоянии робот будет реагировать на препятствие (чувствительность).
В моем случае используется не компаратор, а один из операционных усилителей LM324. Но так как здесь отсутствует обратная связь и просто происходит сравнение напряжений на входах, то его использование вполне приемлемо.
Стоит отметить, что на плате готового модуля US-015 присутствует именно эта микросхема LM324 и используется для усиления принятого сигнала.

Читайте также:  Как подключить детские часы с gps

Ультразвуковой модуль имеет низкое потребление тока (в моем случае чуть меньше 5 мА при питании 6 В).

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

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

Не так давно я собирал робота, избегающего препятствия посредством инфракрасных TSOP-приемников. Датчики были расположены слева и справа, поэтому робот мог выбрать наиболее выгодное направление для объезда препятствия. А в этом случае модуль использован только один. В таких проектах ультразвуковой дальномер чаще всего устанавливается на сервоприводе. Робот подъезжает к стене, вращает модулем и сканирует пространство слева и справа от себя, после чего принимает решение куда свернуть. Такой алгоритм довольно сложно реализовать без микроконтроллера, поэтому рассмотрим самый простой вариант.


Рис.6. Простой вариант управления двигателями

Один из моторов (М1) подключен напрямую к источнику питания и будет работать всегда. Когда перед ультразвуковым датчиком отсутствуют препятствия, на выходе компаратора присутствует напряжение, которое через резистор поступает на базу транзистора VT1. Благодаря этому мотор М2 вращается, так же как и первый. Когда перед роботом возникает препятствие, на выходе компаратора устанавливается логический ноль, транзистор закрывается и второй двигатель (М2) перестает вращаться. Робот поворачивается до тех пор, пока перед ним не появится свободное пространство. После этого он поедет вперед. Поведение представлено на анимации ниже.


Анимация 1. Поведение робота с использованием первой схемы

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


Рис.7. Второй вариант управления двигателями


Рис.8. Модуль управления двигателями

При использовании этого модуля осуществляется новый алгоритм. Он заключается в следующем: все происходит как раньше, но если робот в течение нескольких секунд не находит выход из ситуации, то активный двигатель (М2) резко поменяет направление вращения. Одновременно с этим приостановленный ранее двигатель М1 возобновит движение, но тоже в обратном направлении.

Это все происходит за счет использования дополнительных компонентов (см.рис.7). Здесь использованы логические элементы "И-НЕ". В моем случае их содержит микросхема К155ЛА3, но можно использовать любую аналогичную микросхему ТТЛ.

Выводы логических элементов подключены ко входам драйвера двигателей L293D. В начальный момент времени на INPUT1 поступает логическая единица, а на INPUT2 логический ноль, т.к. элемент DD1.4 подключен в качестве инвертора сигнала. При этом двигатель М1 вращается в определенную сторону. При обнаружении препятствия, ток на транзистор VT1 перестает поступать, он закрывается и второй вход элемента DD1.1 отключается от минуса и подтягивается на плюс через резистор R2. Это вызовет смену логических уровней, поступающих на входы драйвера, при этом мотор поменяет направление вращения. Дополнительно с этим, возникшая логическая единица на шестой ножке микросхемы поступит через диод VD1 на вход INPUT3 и поменяет направление вращения двигателя М2.
Но нужно отметить важную деталь: благодаря цепочке R1-C1 эта смена сигналов и реверс двигателей произойдет не сразу, а через несколько секунд.
Как только в зоне видимости ультразвукового датчика не будет препятствия, все вернется в первоначальное состояние и робот поедет вперед.
Чтобы понять смысл посмотрите на поведение робота в такой ситуации.

Читайте также:  Чем можно приклеить экран смартфона к корпусу


Анимация 2. Поведение робота с использованием расширенной схемы управления (рис.4)

Если выход не будет найден в течение некоторого времени, то активируется логическая схема и робот меняет тактику объезда препятствия.
Промежуток времени, который я изобразил в виде загрузки зависит от емкости C1 и от положения переменного резистора R1.

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


Анимация 3. Поведение робота при описанных выше изменениях

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

Примечания по питанию
В моем случае все узлы робота питались от одного источника — 4 батарейки АА. При необходимости на 8-ой вывод драйвера L293D можно подать раздельное питание для двигателей от более мощного источника. Микросхемы модуля управления требуют напряжения 5 вольт, поэтому одобряется использование стабилизатора напряжения (например L7805).
Модуль УЗ стабильно работает при напряжении от 5 до 9 Вольт. Не желательно отказываться от сглаживающего конденсатора по питанию.

Еще немного фотографий:

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

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

Отличительные особенности:

  • небольшое количество внешних компонентов;
  • размер кода 200 Байт;
  • диапазон рабочих расстояний: 30 см – 200 см;
  • точность измерений ±1 см;
  • индикация при выходе за пределы измерений.

Как известно, скорость звука в воздухе равна около 340 м/с. Таким образом, принцип ультразвукового сенсора состоит в посылке ультразвуковой импульса частотой 40 кГц и отслеживание отраженного сигнала (эхо). Конечно, звука вы не услышите, но ультразвуковой датчик способен определить отраженный импульс. Следовательно, зная время прохождения импульса и отраженного ультразвукового сигнала, мы сможем получить расстояние. Разделив на два, мы получим расстояние от ультразвукового датчика до первого препятствия, от которого был отражен сигнал.

В устройстве применен пьезокерамический ультразвуковой излучатель MA40B8S и пьезокерамический ультразвуковой датчик MA40B8R открытого типа. Основные параметры приведены в таблице ниже.

Устройство Назначение Частота Направленность,
град
Емкость,
пФ
Область
детектирования,
м
Входное
напряжение,
макс, В
MA40B8S Излучатель 40 кГц 50 (симметричный) 2000 0.2 … 6 40
MA40B8R Датчик 40 кГц 50 (симметричный) 2000 0.2 … 6
Читайте также:  Как убрать отметку на фото в одноклассниках

Для тестирования была применена отладочная платформа компании mikroElektronika EasyPic4.

Однако пользователь может использовать любой микроконтроллер PIC, у которого имеется хотя бы один канал АЦП и один канал ШИМ.

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

Управление излучателем осуществляется посредством транзистора BD135. Диод 1N4007 служит для защиты транзистора от обратного напряжения. Благодаря использованию транзистора и резонансной цепочки, которая образована параллельным включением дросселя L1 330 мкГн и конденсатора, образованного самим излучателем, напряжение питания излучателя составит около 20 В, что обеспечивает дальность обнаружения до 200 см. Стоит заметить, что управлять излучателем возможно непосредственно с вывода микроконтроллера, однако в таком случае диапазон расстояний не превышает 50 см.

Датчик подключен непосредственно к АЦП микроконтроллера (при использовании PIC16F877A – канал 1 АЦП), резистор, включенный параллельно датчику, необходим для согласования импеданса.

Для начала необходимо послать ультразвуковой импульс. Сигнал с частотой 40 кГц легко получить с использованием аппаратного ШИМ микроконтроллера. Отраженный сигнал с датчика поступает в АЦП, разрешение АЦП составляет 4 мВ, что вполне достаточно для считывания данных с датчика, и дополнительные компоненты не нужны.

Внешний вид макетной платы ультразвукового сенсора

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

Осциллограмма сигнала на выходе ультразвукового датчика.

Надписи на изображении:

ultrasonic burst – ультразвуковой импульс;
mechanical echo (removed by software) – механическое эхо (исключается программно);
ultrasonic wave reflected by remote object – ультразвуковая волна, отраженная от удаленного объекта.

Цена деления осциллографа: по горизонтали – 1 мс/дел, по вертикали — 5 мВ/дел.

Механическое эхо исключается программно путем введения задержки. Отраженная волна, имеющая амплитуду около 40 мВ, получена через 9.5 мс после отправленного импульса. Учитывая, что скорость звука 340 м/с, получаем:

0.0095 / 2×340 = 1.615 м.

В реальности – это был потолок помещения на расстоянии от датчика 172 см, на ЖК дисплее, установленном на отладочной плате было отображено значение 170 см.

Загрузки

Исходный код к проекту на микроконтроллере PIC16F877A (компилятор mikroC) — скачать

Перевод: Vadim по заказу РадиоЛоцман

Этот ультразвуковой дальномер HC-SR04 был усовершенствован с помощью датчика температуры LM35.

Ещё со школы можно вспомнить что скорость звука зависит от плотности воздуха, а плотность воздуха зависит от температуры.
Рассчитывать температуру мы будем по этой формуле
temp2 = ( temp/1023.0 )*5.0*1000/10;

Где temp2 это готовое значение температуры после формулы,
А где temp это сырое значение с датчика.

Что нам понадобится:

  • Ультразвуковой дальномер HC-SR04
  • Arduino
  • Макетная плата
  • Перемычки
  • Термистор LM35 (Датчик температуры)


Начнём с того что смакетируем всё это на макетной плате.

А вот скетч для lcd дисплея-
Скачать скетч —

Пишите комментарии и вопросы я на всё отвечу!

Ссылка на основную публикацию
Adblock detector