Как измерить расстояние между двумя точками с помощью Arduino?

В электронике большую часть времени ультразвуковые датчики используются для измерения расстояния от одной конкретной точки до другой. Для выполнения этой задачи очень легко написать код на плате Arduino и интегрировать ультразвуковой датчик. Но в этой статье мы собираемся принять другой подход. Мы собираемся использовать два отдельных ультразвуковых датчика, которые будут интегрированы с двумя отдельными Arduino. Эти два модуля будут размещены в двух разных точках, между которыми должно измеряться расстояние. Один датчик станет приемником, а другой – передатчиком. Таким образом, мы сможем измерить расстояние между ними, просто определив местоположение передатчика, используя множество ультразвуковых приемников. Техника, которую мы здесь используем, называется триангуляцией.

Измерение расстояния с помощью Arduino

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

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

Как использовать Arduino и ультразвуковой датчик для измерения расстояния?

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

Шаг 1: Сбор компонентов (оборудование)

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

Шаг 2: Сбор Компонентов (Программное Обеспечение)

  • Proteus 8 Professional (можно загрузить с Вот)

После загрузки Proteus 8 Professional создайте схему на нем. Я включил здесь симуляции программного обеспечения, чтобы новичкам было удобно спроектировать схему и выполнить соответствующие подключения на оборудовании.

Шаг 3: Работа HCR-05

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

Этот датчик имеет два контакта, триггерный и экологический контакт, которые оба используются для измерения расстояния между двумя конкретными точками. Процесс инициируется отправкой ультразвуковой волны от датчика. Эта задача выполняется с помощью запуска триггера на 10us. Как только эта задача будет выполнена, от передатчика посылается 8 звуковых импульсов ультразвуковых волн. эта волна будет распространяться по воздуху, и как только она столкнется с объектом на своем пути, она нанесет ответный удар и будет получена приемником, встроенным в датчик.

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

Чтобы сделать передатчик только для вашего ультразвукового датчика, просто сделайте триггерный вывод своим выходным контактом и отправьте высокий импульс на этот контакт в течение 10 мкс. Как только это будет сделано, ультразвуковой импульс будет запущен. Таким образом, всякий раз, когда волна должна быть передана, должен контролироваться только триггерный вывод ультразвукового датчика.

Невозможно сделать ультразвуковой датчик приемником только потому, что микроконтроллер не может контролировать подъем ECO-контакта, поскольку он связан с триггерным контактом датчика. Но есть одна вещь, которую мы можем сделать: мы можем накрыть передатчик этого ультразвукового датчика клейкой лентой, чтобы УФ-волна не выходила. Тогда на вывод ECO этого передатчика передатчик не повлияет.

Шаг 4: Работа Цепи

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

Чтобы решить эту проблему, нам нужно отправить сигнал HIGH на ECO приемника, как только ультразвуковая волна будет передана на датчик передатчика. Или, простыми словами, мы можем сказать, что ECO приемника и триггер передатчика должны быть отправлены в HIGH одновременно. Таким образом, чтобы достичь этого, мы каким-то образом заставим триггер приемника подняться высоко, как только уровень триггера передатчика повысится. Этот триггер приемника будет оставаться на высоком уровне, пока вывод ECO не станет НИЗКИМ. Когда ультразвуковой сигнал будет получен выводом ECO приемника, он станет НИЗКИМ. Это будет означать, что триггер датчика передатчика только что получил сигнал HIGH. Теперь, как только ECO опустится до минимума, мы дождемся известной задержки и установим триггер получателя в положение HIGH. Таким образом, триггеры обоих датчиков будут синхронизированы, а расстояние будет рассчитано с учетом задержки времени прохождения волны.

Шаг 5: Сборка компонентов

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

  1. Взять два ультразвуковых датчика. Накройте приемник первого датчика и передатчик второго датчика. Для этого используйте белую клейкую ленту и убедитесь, что эти два элемента полностью закрыты, чтобы сигнал не выходил из передатчика второго датчика и сигнал не попадал в приемник первого датчика.
  2. Соедините два Arduino на двух отдельных макетах и ​​подключите к ним соответствующие датчики. Подключите контакт триггера к контакту 9 Arduino, а ecoPin к контакту 10 Arduino. Подайте питание на ультразвуковой датчик от 5 В Arduino и подайте все необходимые сигналы.
  3. Загрузите код приемника в Arduino приемника и код передатчика в Arduino передатчика.
  4. Теперь откройте последовательный монитор принимающей стороны и запишите измеряемое расстояние.

Принципиальная схема этого проекта выглядит так:

Принципиальная электрическая схема

Шаг 6: Начало работы с Arduino

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

  1. Загрузите последнюю версию Arduino IDE с Arduino.
  2. Подключите плату Arduino Nano к ноутбуку и откройте панель управления. на панели управления нажмите на Оборудование и звук. Теперь нажмите на устройства и принтеры. Здесь найдите порт, к которому подключена ваша плата микроконтроллера. В моем случае это COM14, но он отличается на разных компьютерах.Поиск порта
  3. Нажмите на меню инструментов. и установите плату Arduino Nano из выпадающего меню.Настольная доска
  4. В том же меню «Инструменты» установите для порта номер порта, который вы видели ранее в «Устройствах и принтерах».Настройка порта
  5. В том же меню «Инструменты» установите для процессора значение «ATmega328P» («Старый загрузчик»).процессор
  6. Загрузите приведенный ниже код и вставьте его в свою Arduino IDE. Нажмите на кнопку загрузки, чтобы записать код на вашей плате микроконтроллера.Загрузить

Чтобы скачать код, кликните сюда.

Шаг 7: Понимание кода

Код, используемый в этом проекте, очень прост и довольно хорошо прокомментирован. В прилагаемой папке есть два файла кодов. Код для передатчика и код для приемной стороны оба указаны отдельно. Мы загрузим эти коды в обе платы Arduino. Хотя это говорит само за себя, это кратко описано ниже.

Код для стороны передатчика

1. В начале инициализируются контакты платы Arduino, которые будут подключены к ультразвуковому датчику. Затем объявляются переменные, которые будут использоваться для хранения значений для расчета времени и расстояния во время выполнения кода.

// определяет номера пинов
const int trigPin = 9; // Подключите триггерный вывод ультразвукового датчика к контакту 9 Arduino
const int echoPin = 10; // Подключаем эко-контакт ультразвукового датчика к контакту 10 Arduino
// определяет переменные
большая продолжительность; // переменная для запоминания времени прохождения ультразвуковой волны t travel
Int расстояние; // переменная для хранения рассчитанного расстояния

2. void setup () – это функция, которая запускается только один раз при запуске, когда плата включена или нажата кнопка включения. Здесь оба контакта Arduino объявлены для использования как INPUT и OUTPUT. Скорость передачи устанавливается в этой функции. Скорость в бодах – это скорость в битах в секунду, с которой микроконтроллер связывается с ультразвуковым датчиком.

void setup () {
 pinMode (trigPin, OUTPUT); // Устанавливаем trigPin в качестве выхода
 pinMode (echoPin, INPUT); // Устанавливает echoPin в качестве входа
 Serial.begin (9600); // Запускает последовательную связь
}

3. void loop () – это функция, которая снова и снова запускается в цикле. Здесь мы кодировали микроконтроллер так, чтобы он отправлял сигнал HIGH на контакт Trigger ультразвукового датчика, занимал 20 микросекунд и отправлял ему сигнал LOW.

void loop () {
// Устанавливает trigPin в состояние HIGH на 10 микросекунд
digitalWrite (trigPin, HIGH); // отправить сигнал HIGH на триггер первого датчика
delayMicroseconds (10); // ждать 10 микросекунд
digitalWrite (trigPin, LOW); // посылаем НИЗКИЙ сигнал на триггер первого датчика
Задержка (2); // ждать 0,2 секунды
} Код для стороны получателя

1. В начале инициализируются контакты платы Arduino, которые будут подключены к ультразвуковому датчику. Затем объявляются переменные, которые будут использоваться для хранения значений для расчета времени и расстояния во время выполнения кода.

// определяет номера пинов
const int trigPin = 9; // Подключите триггерный вывод ультразвукового датчика к контакту 9 Arduino
const int echoPin = 10; // Подключаем эко-контакт ультразвукового датчика к контакту 10 Arduino
// определяет переменные
большая продолжительность; // переменная для запоминания времени прохождения ультразвуковой волны t travel
Int расстояние; // переменная для хранения рассчитанного расстояния

2. void setup () – это функция, которая запускается только один раз при запуске, когда плата включена или нажата кнопка включения. Здесь оба контакта Arduino объявлены для использования как INPUT и OUTPUT. Скорость передачи устанавливается в этой функции. Скорость в бодах – это скорость в битах в секунду, с которой микроконтроллер связывается с ультразвуковым датчиком.

void setup () {
 pinMode (trigPin, OUTPUT); // Устанавливаем trigPin в качестве выхода
 pinMode (echoPin, INPUT); // Устанавливает echoPin в качестве входа
 Serial.begin (9600); // Запускает последовательную связь
}

3. void Trigger_US () – это функция, которая будет вызываться для искусственного запуска триггерного контакта второго ультразвукового датчика. Мы синхронизируем время срабатывания триггерного контакта обоих датчиков.

void Trigger_US ()
{
 // Поддельный триггер датчика США
 digitalWrite (trigPin, HIGH); // Посылаем сигнал HIGH на контакт триггера второго датчика
 delayMicroseconds (10); // ждать 10 микросекунд
 digitalWrite (trigPin, LOW); // отправляем НИЗКИЙ сигнал на триггерный вывод второго сендора
}

4. void Calc () – это функция, которая используется для расчета времени, которое требуется ультразвуковому сигналу для прохождения от первого датчика ко второму датчику.

void Calc () // функция для расчета времени прохождения ультразвуковой волны
{
 Продолжительность = 0; // длительность изначально установлена ​​на ноль
 Trigger_US (); // вызвать функцию Trigger_US
 while (digitalRead (echoPin) == HIGH); // пока статус eo pin в высоком
 Задержка (2); // поставить задержку 0,2 секунды
 Trigger_US (); // вызвать функцию Trigger_US
 длительность = pulseIn (echoPin, HIGH); // вычисляем время
}

5. Здесь в функции void loop () мы рассчитываем расстояние, используя время, затрачиваемое ультразвуковым сигналом для прохождения от первого датчика ко второму датчику.

void loop () {
Pdistance = расстояние;
Вычислено (); // вызвать функцию Calc ()
расстояние = продолжительность * 0,034; // вычисление расстояния, пройденного ультразвуковой волной
если (Pdistance == расстояние || Pdistance == расстояние + 1 || Pdistance == расстояние-1)
{
Serial.print («Измеренное расстояние:»); // печать на последовательном мониторе
Serial.println (расстояние / 2); // печать на последовательном мониторе
}
//Serial.print(“Distance: “);
//Serial.println(distance/2);
задержки (500); // подождать 0,5 секунды
}

Appuals.com является участником партнерской программы Amazon Services LLC, и мы получаем комиссию за покупки, сделанные по нашим ссылкам.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

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

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