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

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

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

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

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

Основные причины для монтажа лазерного дальномера

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

  • лазерный дальномер;
  • ультразвуковой дальномер.

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

Лазерный дальномер, сделанный своими руками, состоит из нескольких частей:

  • плата;
  • микроконтроллер;
  • усилитель лазерного сигнала;
  • лазер;
  • фотоприемник;
  • фильтр.

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

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

Вернуться к оглавлению

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

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

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

В качестве лазера выступает привод, установленный в DVD-приставках. Такое устройство имеет вполне достаточную мощность для функционирования на частоте, достигающей 10 МГц.

В состав приемника входит:

  • фотодиод;
  • усилитель.

В состав усилителя входит полевой транзистор, специальная микросхема. Когда увеличивается расстояние, происходит падение освещенности фотодиода. Поэтому необходимо иметь мощное усиление. Собираемая схема позволяет достичь 4000 единиц.

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

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

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

Описанная выше система позволит создать самодельный лазерный дальномер в бытовых условиях.


Приветствую всех. Попал мне в руки недавно ультразвуковой датчик, который измеряет расстояние до объекта - 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 прошивок для МК, проект в (версия 7.7, ультразвукового датчика US-100 в базе proteus"а нет, но задействован UART отладчик), а также небольшое видео, демонстрирующее работу схемы.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
IC1 МК AVR 8-бит

ATmega8

1 В блокнот
VR1 Линейный регулятор

L7805AB

1 В блокнот
HG1 LCD-дисплей SC1602 1 На базе HD44780 В блокнот
U1 УЗ-датчик US-100 1 В блокнот
R1 Подстроечный резистор 10 кОм 1 3296W-1-103LF В блокнот
R2 Резистор

10 кОм

1 0.25 Вт В блокнот
R3 Резистор

390 Ом

1 0.25 Вт

HC-SR04 один из самых распространённых и самый дешевый дальномер в робототехники. Он позволяет измерять расстояния от 2см до 4м (может и больше) с приличной точностью 0,3-1см. На выходе цифровой сигнал, длительность которого пропорционально равна расстоянию до препятствий.

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

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

УЗ дальномер HC-SR04

Характеристики датчика:

Питание — 5В
Потребляемый ток — менее 2мА
Эффективный угол обзора — 15гр
Измеряемое расстояние — 2см - 5м
Точность — 3мм
Взяты из документации к датчику

Принцип работы HC-SR04

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

У модуля есть 4 вывода, два из которых это питание - земля и +5В, а еще два - данные. Опрос модуля производится следующим способом: на вывод Trig посылается импульс длительностью 10мкс. Дальномер генерирует посылку из 8 ультразвуковых 40КГц импульсов. Которые, отражаясь от большинства поверхностей, возвращаются обратно, если не угаснут в пути. Сразу после отправки сигнала на Trig начинаем ожидать ответного положительного сигнала выводе Echo, длительностью от 150мкс до 25мс, который пропорционален расстоянию до объекта. Точнее времени прохождения от датчика до препятствия и обратно. Если ответа нет (датчик не услышит своего эха) - то сигнал вернется длиною в 38 мс. Расстояние до объекта (препятствия) вычисляется по следующей простой формуле:

Где: L - расстояние в сантиметрах до объекта, а F - длина импульса на выводе Echo.
Рекомендуемое время опроса датчика 50мс или 20Гц.

Первые тесты этого модуля проводил при помощи цифрового осциллографа, который ловил ответ от модуля и в ручную, быстрым замыканием Trig на + питания, пытался получить стартовый 10мкс импульс. В половине случаев получалось [:)] .

Конструкция

Датчик был подключен к плате вольтметра с общим анодом, немного модифицированному для работы с ним (убраны ненужные делитель с конденсатором и добавлен вывод от RA3). Был применен микроконтроллер от 5 версии вольтметра - PIC16F688, с переработанной для УЗ дальномера прошивкой.

По случаю приобрел себе ультразвуковой дальномер HC-SR04. Девайс представляет из себя модуль с двумя пъезоизлучателями, один из которых служит излучателем, а второй - приемником ультразвуковой волны; плюс управляющая электроника для управления излучателем и приемником. Для подключения модуль имеет 4-х контактный разъем: два из которых питание (требуется 5 вольт), и еще два для общения с микроконтроллером.

Интерфейс связи тут организован очень просто: на вход подаем короткий умпульс длительностью 10-15 микросекунд и ждем импульса на выходе. Как только до приемника дойдет отраженная волна, модуль сам рассчитает расстояние и выдаст на ногу Echo импульс высокого уровня длинной до 25 мс. Длина выходного импульса будет пропорциональна расстоянию до препятствия от которого отразилась ультразвуковая волна. Нам остается только поймать этот импульс, посчитать его длину и перевести это значение в расстояние.

Технические характеристики:

  • Напряжение питания: 5V
  • Ток покоя: < 2 мА
  • Эффективный угол обзора: < 15 °
  • Диапазон расстояний: 2 см - 500 см
  • Разрешение: 0,3 см

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

S=F/58 ; где S - дистанция в сантиметрах, F - длина импульса в микросекундах

Как видно, даже знать скорость звука не обязательно.

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

Модуль соединяется к микроконтроллеру напрямую. Резисторы подтяжки ставить не нужно, они уже есть на плате модуля.

И так, нам нужно ловить всего один импульс, и затем посчитать его длину. По началу хотел подбить под это дело одно из внешних прерываний микроконтроллера, при этом прерывание должно было происходить как по переднему фронту (переход с низкого в высокое состояние), так и по заднему фронту (с высокого на низкое). Тоесть придется на лету менять конфигурацию этого прерывания. Плюс к этому нужно задействовать один из таймеров, который должен измерять длину импульса. Слишком сложно для маленькой операции фиксирования сигнала.. В Bascom-AVR на этот случай есть специальная команда Pulsein . Вот пример того, как поймать сигнал с помощью этой команды:

Pulsein A , Pind , 5 , 1

Здесь, в переменную A запишется значение длины импульса в десятках микросекунд , снятого с ноги Pind.5 . Единица на конце команды говорит, что нужно ловить сигнал высокого уровня. Если изменить на 0, тогда контроллер будет ловить сигнал низкого уровня.

Эта команда не использует прерываний и хардверного таймера, но способна определить появление импульса и зафиксировать его длину с разрешением 10 мкс. Команда использует для хранения длины импульса 2-х байтный тип переменной, поэтому максимальная длина принятого сигнала может быть 655,35 мс. Этого вполне хватает для поставленной задачи, но по необходимости можно отредактировать файл библиотеки mcs.lib и изменить максимальную длительность фиксируемого импульса.

Полный листинг программы представлен ниже

$regfile = "m8def.dat"

$crystal = 8000000

"конфигурация подключения дисплея к портам МК

Config Lcd = 16 * 2

Config Lcdpin = Pin , Rs = Portc . 5 , E = Portc . 4 , Db4 = Portc . 3 , Db5 = Portc . 2 , Db6 = Portc . 1 , Db7 = Portc . 0

Config Portd . 4 = Output "выход для подключения ноги Trigger

Trigger Alias Portd . 4

Trigger = 0

Config Portd . 5 = Input "вход для импульса Echo

Config Portd . 7 = Output "конфигурация для подключения светодиода

Led Alias Portd . 7

Led = 0

Dim A As Word "сюда копируется значение длины сигнала

Dim S As Single "переменная для хранения расстояния

Const K = 0 . 1725 "коэффициент для перевода длины импульса в расстояние

Waitms 50

Cursor Off

Cls

Lcd "Sonar HC-SR04"

Locate 2 , 1

Lcd "сайт"

Led = 1

Waitms 100

Led = 0

Wait 3

Do

Trigger = 1 "даем импульс на ногу Portd.4 длительностью 15 мкс

Waitus 15

Trigger = 0

Waitus 10

Pulsein A , Pind , 5 , 1 "ловим импульс высокого уровня на PinD.5

Bruno Gavand

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

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

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

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

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

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

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

Однако пользователь может использовать любой микроконтроллер 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) -

Понравилось? Лайкни нас на Facebook