Приветствую всех. Попал мне в руки недавно ультразвуковой датчик, который измеряет расстояние до объекта — 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 отладчик), а также небольшое видео, демонстрирующее работу схемы.
Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот
IC1
МК AVR 8-битATmega81
VR1
Линейный регуляторL7805AB1
HG1
LCD-дисплейSC16021
На базе HD44780U1
УЗ-датчикUS-1001
R1
Подстроечный резистор10 кОм1
3296W-1-103LFR2
Резистор10 кОм1
0.25 ВтR3
Резистор390 Ом1
0.25 ВтC1, C4
Конденсатор220 мкФ2
16-25 ВC2, C3, C5, C6
Конденсатор100 нФ4
С7
Конденсатор10 мкФ1
16-25 ВLED1
Светодиод1
S1-S5
Тактовая кнопкаTC-A1095
Добавить все
Скачать список элементов (PDF)
Прикрепленные файлы:
- HEX непрерывно.hex (4 Кб)
- HEX с фиксацией данных.hex (4 Кб)
- usart1-proteus.rar (21 Кб)