Ничего не найдено :(
    В гостях у Самоделкина! » Темы » Советы » Работа с ультразвуковым датчиком HC-SR04

    Работа с ультразвуковым датчиком HC-SR04

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

    Для начала определим два пина к которым подключим датчик.
    Работа с ультразвуковым датчиком HC-SR04


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



    Конфигурируем порты для подключения датчика и устанавливаем скорость работы серийного порта на уровне 9600 бод/с.



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



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



    Выводим данные в серийный порт компьютера для наглядности.



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



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

    #define PIN_TRIG 12// объявляем пин подключения датчика
    #define PIN_ECHO 11// объявляем пин подключения датчика
    
    long interval, cm;// объявляем переменную для хранения данных с датчика
    
    void setup() {// конфигурируем порты программы
    
      Serial.begin (9600);// настраиваем серийный порт на скорость 9600 бод
      pinMode(PIN_TRIG, OUTPUT);//определяем порт как выходной
      pinMode(PIN_ECHO, INPUT);//определяем порт как входной
    }
    
    void loop() {// основной цикл программы
    
      // формирование импульса для определения расстояния
    
      digitalWrite(PIN_TRIG, LOW);//устанавливаем на цифровом порту низкий уровень сигнала
      delayMicroseconds(5);// устанавливаем задержку длительностью 5 микросекунд
      digitalWrite(PIN_TRIG, HIGH);//устанавливаем на цифровом порту высокий уровень сигнала
      delayMicroseconds(10);//устанавливаем задержку длительностью 10 микросекунд
      digitalWrite(PIN_TRIG, LOW);//устанавливаем на цифровом порту низкий уровень сигнала
    
      //  время задержки акустического сигнала на эхолокаторе.
      interval = pulseIn(PIN_ECHO, HIGH);//определяем временной интервал и учитываем
      //погрешность при измерении сигналов на цифровом порту
    
      // преобразовываем время в расстояние
      cm = (interval / 2) / 29.1;//для получения расстояния интервал делим пополам и на константу 29,1
    
      Serial.print("Расстояние до объекта: ");// выводим в серийный порт надпись
      Serial.print(cm);// пишем в серийный порт вычисленное расстояние
      Serial.println(" см.");// выводим в серийный порт надпись
    
      // задержка между измерениями для корректной работы скеча
      delay(200);// задержка 200 милисекунд(при желании можно убрать из скетча на работу не повлияет)
    }
    Подборки: Arduino HC-SR04 Датчик

    Простой дешевый высокотемпературный клей-замазка

    Мощный усилитель из блоков и узлов от серийного усилителя

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

    6 комментариев
    Lo

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


    Ramzes360

    Почитал,посмотрел,ничего не понял   xaxa 

    wariorjam Автор

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

    wariorjam Автор

    В данном примере можно и меньшую скорость ставить, это не приципиально.

    Eig
    filkar2005,

    А сколько нужно? 9600 – стандарт. Ну, 4800 можно установить, а ниже уже большинство современного оборудования не поддерживает.

    filkar2005

    Зачем такая высокая скорость связи по serial, если данные датчика снимаются 4 раза в секунду?

    Вы думаете, всё так просто? Да, всё просто. Но совсем не так.
    А. Эйнштейн

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Последние комментарии

    Все комментарии