Ультразвуковой датчик расстояния hc-sr04. Датчики. Ардуино

Ультразвуковой датчик расстояния hc-sr04
Ультразвуковой датчик расстояния hc-sr04
Ультразвуковой датчик расстояния hc-sr04

Привет! Сегодня рассмотрим еще один датчик для ардуино. Ультразвуковой датчик расстояния или дальномер HC-SR04.

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

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

Cервопривод. Датчики. Ардуино

Для выполнения этого урока нам понадобятся

  • Ардуино UNO
  • Макетная плата
  • Перемычки
  • Ультразвуковой датчик расстояния hc-sr04
  • 4 Резистора номиналом 220 Ом
  • 4 Светодиода 5 мм
  • Кабель USB

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

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

А более подробно это работает так. Сначала мы подаем сигнал продолжительностью 10 мкс на вывод Trig. Сам модуль преобразует сигнал в 8 импульсов частотой 40 кГц и посылается через излучатель T. Импульсы отражаются и принимаются приемником R и мы получаем сигнал на выводе Echo, который можно использовать в программе.

Схема подключения ультразвукового датчика расстояния  HC-SR04
Схема подключения ультразвукового датчика расстояния HC-SR04

Технические характеристики HC-SR04

  • диапазон — от 2 до 400 см;
  • погрешность — 0,3 см;
  • эффективный рабочий угол  — < 15 °;
  • угол измерений: 30 градусов;
  • напряжение питания — 5 В.
  • Сила тока покоя: < 2 мА;
  • Рабочая сила тока: 15 мА; < 15°;
  • ширина импульса триггера: 10 микросекунд;
  • размеры: 45 мм x 20 мм x 15 мм.

Программа

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

Ультразвуковой датчик расстояния измеряет достаточно точно от 2 сантиметров до 4 метров. Поэтому будем включать по одному светодиоду на 5 сантиметров расстояния. Если препятствие будет ближе 10 сантиметров должен зажечься красный сигнал.

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

Напишем свою функцию для включения светодиодов. Она будет принимать расстояние от датчика и включать светодиоды в зависимости от него.

void LedON(int dist){
      digitalWrite(10, dist <= 25);
      digitalWrite(8, dist <= 20);
      digitalWrite(7, dist <= 15);
      digitalWrite(5, dist <= 10);
}

Как вы помните, функция digitalWrite() принимает два параметра. Номер пина и значение HIGH или LOW. Однако, она позволяет использовать и логические операции. В данном случае мы использовали сравнение переменной с заданными значениями длины. Это позволит избежать использование конструкции if else и сэкономит много строк кода.

Рассчитать расстояние нам поможет еще одна новая функция pulseIn(). Она считывает длину сигнала в микросекундах. Принимает 3 параметра. Причем третий не обязателен.

duration = pulseIn(pin, value, [timeout]);

Работает это так. Функция ожидает когда на пине, установленном в первом параметре, появится сигнал HIGH или LOW из второго параметра. Когда нужный сигнал появился, включается счетчик микросекунд. И когда сигнал пропал, количество микросекунд возвращается из функции. Если установлен третий параметр, то функция ожидает сигнал определенное время. По умолчанию таймаут равен 1 секунде.

Ультразвуковой датчик расстояния hc-sr04
Ультразвуковой датчик расстояния hc-sr04

Полный текст программы

    int trigPin = 13; 
    int echoPin = 12;
    int duration, distance;

    void LedON(int dist){
    
      digitalWrite(10, dist <= 25);
      digitalWrite(8, dist <= 20);
      digitalWrite(7, dist <= 15);
      digitalWrite(5, dist <= 10);
      
    }

    void setup() { 
      Serial.begin (9600); 
      pinMode(trigPin, OUTPUT); 
      pinMode(echoPin, INPUT); 

      pinMode(10, OUTPUT);
      pinMode(8, OUTPUT);
      pinMode(7, OUTPUT);
      pinMode(5, OUTPUT);
    } 
     
    void loop() {
      digitalWrite(trigPin, LOW); 
      delayMicroseconds(2); 

      digitalWrite(trigPin, HIGH);
      delayMicroseconds(10); 
      
      digitalWrite(trigPin, LOW); 
      
      duration = pulseIn(echoPin, HIGH); 
      distance = duration / 58;
      Serial.print(distance); 
      Serial.println(" cm"); 
      LedON(distance);
      delay(100);
    }

Заключение

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

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

Ваш адрес email не будет опубликован.