• I






      
           

Научно-популярный образовательный ресурс для юных и начинающих радиолюбителей - Popular science educational resource for young and novice hams

Основы электричества, учебные материалы и опыт профессионалов - Basics of electricity, educational materials and professional experience

КОНКУРС
language
 
Поиск junradio

Радиодетали
ОК
Сервисы

Stock Images
Покупка - продажа
Фото и изображений


 
Выгодный обмен
электронных валют

Друзья JR



JUNIOR RADIO

 

Датчик расстояния Arduino с использованием HC-SR04

 

 

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

 

 

Ультразвуковой датчик расстояния HC-SR04 - популярный доступный датчик, обеспечивающий измерение от 2 см (0,7 дюйма) до 400 см (157 дюймов). Его точность может составлять 3 мм (0,1 дюйма), но она может варьироваться в зависимости от качества датчика.

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

 

 

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

Поскольку мы знаем, что скорость звука составляет 340 метров в секунду или 0,0343 сантиметра в микросекунду , мы можем рассчитать расстояние, используя время, необходимое звуковой волне, чтобы отразиться. (Расстояние = Время * Скорость)

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

Я должен отметить, что математика, используемая для расчета расстояния, очень проста и не очень точна. Однако этого должно хватить для большинства проектов.

 Настройка цепи датчика расстояния

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

Либо следуйте нескольким шагам ниже, либо обратитесь к принципиальной схеме, чтобы узнать, как собрать эту очень простую схему.

VCC подключается к 5v

Триггер подключается к контакту 2

Эхо подключается к контакту 3

GND подключается к GND

 

 

Код датчика расстояния Arduino

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

Самый простой способ - использовать библиотеку, но в этом руководстве мы будем писать код с нуля.

1.Код довольно прост, если вы предпочитаете просто скачать его, вы можете найти его на Github . Кроме того, вы можете продолжить и узнать, что делает код.

int trigger_pin = 2;

int echo_pin = 3;

long distance, pulse_duration;

Во-первых, нам нужно будет найти все переменные, которые нам понадобятся в нашем скрипте. Нам нужно будет определить контакты для триггера и эха.

Нам также требуются две переменные для наших расстояний и длительности импульса.

void setup() {

 

  Serial.begin (9600);

 

  pinMode(trigger_pin, OUTPUT);

  pinMode(echo_pin, INPUT);

}

Затем нам нужно закодировать нашу функцию настройки. Эта функция инициализирует все, что нам нужно, для нашей функции цикла.

Во-первых, мы запускаем последовательный вывод и устанавливаем скорость 9600 бод.

Как мы упоминали ранее, триггерный вывод ( trigger_pin ) необходимо настроить как выход. Этот штифт скажет нашему датчику испустить ультразвуковую звуковую волну, которую примет приемник.

Эхо-вывод ( echo_pin ) нужно будет установить как вход. Этот штифт станет высоким, когда ультразвуковая волна отразится и ударит по приемнику.

void loop() {

 

  //Set pin to high for 10 microseconds

  digitalWrite(trigger_pin, HIGH);

  delayMicroseconds(10);

  digitalWrite(trigger_pin, LOW);

 

  //Check the echo pin for when it goes high and save the time it took in microseconds)

  pulse_duration = pulseIn(echo_pin, HIGH);

Затем мы посмотрим на нашу функцию цикла. Здесь мы активируем наш ультразвуковой датчик расстояния HC-SR04 и определим расстояние до ближайшего объекта.

Мы начинаем с того, что устанавливаем для нашего trigger_pin (echo) высокий уровень, и это будет излучать ультразвуковые волны для нашего echo_pin (приемника). Мы держим вывод на высоком уровне в течение 10 микросекунд, прежде чем снова установить его на низкий уровень .

Наконец, мы используем функцию pulseIn для измерения времени, за которое эхо-контакт (echo_pin) переходит от низкого уровня к высокому . Возвращает время в микросекундах.

Если есть ошибка, он просто вернет 0, и это означает, что он никогда не получал полный импульс в течение периода тайм-аута.

  // Math: distance = ( (duration) * (speed of sound in cm per microsecond 0.0343 / 2)

  distance = round(pulse_duration * 0.0171);

 

  // Math: distance = ( (duration) * (speed of sound in inches per microsecond 0.01350 / 2)

  //distance = round(pulse_duration/0.00675);

Теперь у нас есть расчеты расстояния, как вы можете видеть выше, у нас их два. Один для сантиметров, а другой - для дюймов.

Математика для сантиметров и дюймов примерно одинакова, за исключением скорости звука. Объясню расчет в см.

Скорость звука в см в микросекунду составляет примерно 0,0343 . Мы делим это на два, поскольку мы измеряем только половину расстояния, пройденного ультразвуком. Это дает нам значение 0,0171 .

  Serial.print(distance);

  Serial.print("cm");

  Serial.println();

 

  delay(500);

}

Наконец, нам нужно распечатать нашу информацию, чтобы мы могли ее просмотреть. Мы используем Serial.print, поэтому все наши данные будут напечатаны на последовательном мониторе.

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

Наконец, мы задерживаем скрипт на 500 миллисекунд.

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

int trigger_pin = 2;

int echo_pin = 3;

long distance, pulse_duration;

 

void setup() {

 

Serial.begin (9600);

 

pinMode(trigger_pin, OUTPUT);

pinMode(echo_pin, INPUT);

 

digitalWrite(trigger_pin, LOW);

}

 

void loop() {

 

digitalWrite(trigger_pin, HIGH);

delayMicroseconds(10);

digitalWrite(trigger_pin, LOW);

 

pulse_duration = pulseIn(echo_pin, HIGH);

 

distance = round(pulse_duration * 0.0171);

 

//distance = round(pulse_duration/0.00675);

 

Serial.print(distance);

Serial.print("cm");

Serial.println();

 

delay(500);

}

2. Теперь вы должны быть готовы развернуть код на Arduino и увидеть свое творение в действии.

 Тестирование схемы и кода

1.Чтобы загрузить код, нажмите «Подтвердить» ( 1. ), а затем «Загрузить» ( 2. ).

 

 

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

Также убедитесь, что ваш Arduino подключен и он выбран в меню Tools-> Port:

3.Теперь ваш датчик расстояния Arduino должен работать. Загрузите серийный монитор, расположенный в меню инструментов, и вы должны увидеть, как распечатываются некоторые измерения.

 

 

Исправление проблем

В этом уроке есть несколько ошибок. Я выделю некоторые из наиболее распространенных проблем, с которыми сталкиваются люди.

Если компилятор Arduino выдает ошибки, вернитесь к коду, чтобы убедиться, что вы его правильно скопировали. Компилятор обычно указывает на любые проблемы, исправляет их, и код должен компилироваться.

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

Если у вас возникли проблемы с загрузкой кода в Arduino, дважды проверьте, что вы выбрали его в IDE. Он находится в разделах « Инструменты-> Порт: » и « Инструменты-> Плата ».

Я надеюсь, что этот урок показал вам все шаги по настройке датчика расстояния Arduino, который использует HC-SR04

 




Необходимо добавить материалы...
Результат опроса Результаты Все опросы нашего сайта Архив опросов
Всего голосовало: 373



          

Радио для всех© 2024