Ультразвуковой датчик.HC-SR04.Урок 17.AVR для начинающих.

Автор: | 29.04.2017

Здравствуйте!

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

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

Для начала измерения, следует на выход TRIG подать сигнал высокого уровня, длительностью 10-15 микро секунд. После этого следует следить за состоянием вывода ECHO,так как на него будет подан сигнал высокого уровня, длительностью пропорциональной измеренному расстоянию. То есть микроконтроллеру достаточно измерить длительность ECHO сигнала для определения расстояния до объекта. Для того чтобы перевести измеренное значение в сантиметры, следует воспользоваться следующей формулой:

S=t/58,

где S – расстояние в сантиметрах,

t – продолжительность импульса в микросекундах.

Для лучшей наглядности приведу рисунок:

 

Для обработки ответа датчика используем внешнее прерывание INT0 микроконтроллера AtMega8. Следует настроить его на генерацию прерывания при любом изменении логического уровня на входе INT0( у AtMega8 это вывод PD2). Так же необходимо настроить таймер1 для подсчета времени импульса ECHO. При переходе вывода INT0 от низкого уровня к высокому таймер будет обнулен, а при переходе от высокого к низкому, в регистре TCNT1 будет хранится число тиков таймера, отображающее время импульса ECHO. Полученное значение не забудьте математически перевести в необходимые Вам единицы времени (Милли- или микросекунды).

Читайте также  GSM / GPRS модуль SIM800L

Приведу мой код прошивки:

 

Библиотеку lcd_new.h предназначенную для работы с дисплеем можете взять !ЗДЕСЬ!

Итак, все готово к созданию устройства.

Читайте также  Программаторы AVR.

Сначала соберем схему в Proteus. Для корректной работы симуляции датчика необходима версия Proteus >= 8.4. , так как именно начиная с версии 8.4. стал доступен компонент SRF04, описывающий работу ультразвукового датчика.

Схема в Proteus:

При запуске симуляции, результат работы датчика будет отображен на ЖК дисплее.

Вопросы оставляйте в комментариях.

До новых встреч!

Ультразвуковой датчик.HC-SR04.Урок 17.AVR для начинающих.: 5 комментариев

  1. Блуждающий странник

    Здравствуйте,игрался с датчиком расстояния.Задачу немного изменил,при расстоянии меньше 10 сантиметров светодиод должен загораться.Проблема в том, что прерывание INT0 вызывается постоянно(возможно это дребезги).Может на echo и trig нужны соответствующие подтягивающие резисторы?Использовал atmega8 и HC-SR04.

  2. Блуждающий странник

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

    1. DamiKK Автор записи

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

      1. Анна

        Здравствуйте , что то не получается скачать Библиотеку lcd_new.h , можете помочь ?

        1. DamiKK Автор записи

          Выложу библиотеку в ближайшее время)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *