Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/Гайд по использованию ультразвукового датчика HC-SR04 с Arduino

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Гайд по использованию ультразвукового датчика HC-SR04 с Arduino[1]

Эта статья – об ультразвуковом датчике HC-SR04. Она объясняет, как он работает, рассказывает о некоторых его функциях, а также содержит скетч Arduino, который вы можете использовать в своих проектах.

Описание

Ultra HC-SR04.png

Ультразвуковой датчик HC-SR04 использует сонар, с помощью которого определяет расстояние до объекта, как это делают летучие мыши. Кроме того, этот датчик отличается высокой точностью и простотой использования. Диапазон измеряемого расстояния – от 2 до 400 см. В отличие от дальномеров Sharp, датчику HC-SR04 не мешает ни солнечный свет, ни черные материалы, но ему трудно определять акустически мягкие материалы вроде тканей. В комплекте с HC-SR04 также идет ультразвуковой приемопередатчик.

Функции

Датчик HC-SR04 обладает следующими функциями:

  • Питание: +5 вольт постоянного тока
  • Сила тока в состоянии покоя: не более 2 мА
  • Сила тока во время работы: 15 мА
  • Эффективный угол при измерении: не более 15°
  • Диапазон измеряемого состояния: от 2 до 400 см
  • Разрешение: 0,3 см
  • Рабочий угол при измерении: 30°
  • Продолжительность импульса для триггера: 10 мкс
  • Размеры: 45 мм х 20 мм х 15 мм

Назначение контактов HC-SR04

  • Контакт VCC – для постоянного тока +5 вольт
  • Контакт Trig – для запуска измерения
  • Контакт Echo – для выдачи измеренных данных
  • Контакт GND – для заземления

Использование HC-SR04 с платой Arduino

Датчик HC-SR04 очень популярен среди тех, кто занимается разработкой проектов на базе Arduino. Поэтому я решил написать для него специальный скетч. В нем ультразвуковой датчик определяет расстояние до объекта, а затем передает эти данные на монитор порта IDE Arduino. Все очень просто.

Примечание: Чтобы упростить использование датчика HC-SR04, можно воспользоваться библиотекой NewPing для Arduino.

Схема

Schematics.png

Код

  1. /*
  2.  * Автор – Руи Сантос (Rui Santos); http://randomnerdtutorials.com
  3.  *
  4.  * Скетч сделан для руководства по ультразвуковому датчику HC-SR04
  5.  *
  6.  * Подключение контактов:
  7.  * VCC: к +5 вольтам постоянного тока
  8.  * Trig (входной): к контакту 11
  9.  * Echo (выходной): к контакту 12
  10.  * GND: к контакту GND
  11.  */
  12.  
  13. int trigPin = 11;    // Trig – зеленый провод-перемычка
  14. int echoPin = 12;    // Echo – желтый провод-перемычка
  15. long duration, cm, inches;
  16.  
  17. void setup() {
  18.   // открываем последовательный порт:
  19.   Serial.begin (9600);
  20.   // задаем входные и выходные контакты:
  21.   pinMode(trigPin, OUTPUT);
  22.   pinMode(echoPin, INPUT);
  23. }
  24.  
  25. void loop()
  26. {
  27.  
  28.   // датчик запускается импульсом HIGH продолжительностью 10 мкс
  29.   // или более; но перед этим нужно подать короткий импульс LOW,
  30.   // чтобы Trig в конце концов получил четкий импульс HIGH:
  31.   digitalWrite(trigPin, LOW);
  32.   delayMicroseconds(5);
  33.   digitalWrite(trigPin, HIGH);
  34.   delayMicroseconds(10);
  35.   digitalWrite(trigPin, LOW);
  36.  
  37.   // считываем сигнал от датчика; продолжительность импульса HIGH –
  38.   // это время, прошедшее от отправки импульса
  39.   // до получения эха от объекта:
  40.   pinMode(echoPin, INPUT);
  41.   duration = pulseIn(echoPin, HIGH);
  42.  
  43.   // конвертируем время в расстояние:
  44.   cm = (duration/2) / 29.1;
  45.   inches = (duration/2) / 74;
  46.  
  47.   Serial.print(inches);
  48.   Serial.print("in, ");  //  "дюймов, "
  49.   Serial.print(cm);
  50.   Serial.print("cm");  //  "сантиметров"
  51.   Serial.println();
  52.  
  53.   delay(250);
  54. }

Код с библиотекой NewPing

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

  1. /*
  2.  * Опубликовано на: http://randomnerdtutorials.com
  3.  * Создано на: http://playground.arduino.cc/Code/NewPing
  4. */
  5.  
  6. #include <NewPing.h>
  7.  
  8. #define TRIGGER_PIN 11
  9. #define ECHO_PIN 12
  10. #define MAX_DISTANCE 200
  11.  
  12. NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
  13. // настройка объекта NewPing: контакты и максимальная дистанция
  14.  
  15. void setup() {
  16.    Serial.begin(9600);
  17. }
  18.  
  19. void loop() {
  20.    delay(50);
  21.    unsigned int uS = sonar.ping_cm();
  22.    Serial.print(uS);
  23.    Serial.println(“cm”);  //  "сантиметров"
  24. }

Где купить?

HC-SR04 1.jpg

Купить датчик HC-SR04 можно тут.

О таймауте

Если HC-SR04 не получит эхо, то выходной сигнал никогда не перейдет в состояние LOW. У датчика Devantec таймаут составляет 36 мс, а у Parallax28 мс. Если вы используете функцию pulseIn(), как в первом скетче, то при отсутствии эха программа зависнет на 1 секунду – это таймаут для pulseIn() по умолчанию. Если вы хотите изменить время таймаута, то это значение задается в третьем параметре функции pulseIn().

Подробнее почитать о функции pulseIn() можно тут.

Если HC-SR04 будет измерять расстояние 300 см, то полный путь сигнала туда-обратно составит 600 см, а время пути – около 20 мс. Следовательно, таймаут нужно выставить чуть выше этого значения: на 25 или 30 мс.

Кроме того, вы можете подключить HC-SR04 всего к одному контакту Arduino. Для этого контакты Trig и Echo нужно подключить друг к другу с использованием резистора на 2200 Ом, а затем подключить контакт Trig к Arduino. Подробнее ищите в статьях об 1-контактном использовании ультразвуковых датчиков.

Если вы используете HC-SR04 вместе с PicAxe, то его тактовую частоту нужно поднять как минимум до 8 МГц. В противном случае вы не увидите начало эхо-импульса, из-за чего функция pulseIn() никогда не запустится. HC-SR04 отлично работает с BS2.

См.также

Внешние ссылки

  1. randomnerdtutorials.com - Complete Guide for Ultrasonic Sensor HC-SR04