Измерение расстояния с помощью Arduino и ультразвукового датчика сонара
Начнем измерения!
Ультразвуковые датчики расстояния (сонары)
Самое популярное и основное использование сонара – это «видеть» под водой. Для обнаружения объектов сонар использует распространение звука. Поскольку звуковые волны распространяются в воде дальше, чем в воздухе, то в этом случае использование сонара предпочтительнее, по сравнению с другими типами датчиков, такими как радар. Несмотря на то, что сонар предпочтителен для подводного зондирования, его всё равно можно использовать в воздухе; однако существует небольшая вероятность интерференции, которую мы можем наблюдать при измерении расстояния.
Существует два типа сонаров: пассивный и активный. Активный сонар имеет излучатель и детектор: в зависимости от времени, за которое сигнал возвращается к сонару, он может определить расстояние до объекта и его ориентацию. Он также определяет уровень сигнала, чтобы определить, сколько времени ему потребовалось для захвата приемником. Пассивные сонары используются для захвата сигналов от судов и других морских объектов, таких как киты и подводные лодки. Пассивные сонары не имеют излучателей; они просто принимают доходящие до них звуковые волны.
Что нам понадобится
- Arduino Uno;
- ультразвуковой дальномер Maxbotix;
- 3 перемычки;
- припой;
- паяльник;
- компьютер с Arduino IDE;
- USB кабель для подключения Arduino;
- мультиметр;
Мы будем использовать Arduino Uno в качестве нашего микропроцессора, чтобы иметь возможность считывать расстояние, определенное сонаром. Сонар, который мы используем, – это ультразвуковой дальномер Maxbotix, но в этом проекте могут быть использованы любые модели, близкие к этой, которые на выдают ШИМ или аналоговый сигнал. Три перемычки будут припаяны к датчику ультразвукового дальномера, поэтому нам понадобятся припой и паяльник. После того, как всё будет припаяно и подключено, необходимо будет с помощью IDE загрузить в Arduino код, приведенный ниже.
Начнем
Три вывода, которые будут припаяны к датчику сонара показаны ниже.
Припаяйте провода к выводу GND, к выводу V для подачи +5 В, и ко второму выводу снизу (выход ШИМ сигнала).
Вы можете подключить датчик к Arduino напрямую или через макетную плату. Земля датчика должна соединяться с выводом GND Arduino, питание на датчик необходимо подать с вывода +5V Arduino. ШИМ выход датчика должен быть подключен к любому выводу Arduino, способному принимать ШИМ сигнал. В этом случае я использую цифровой вывод 3.
#include "Maxbotix.h"
// #3 определяет, с какого цифрового входа будут считываться показания
// Maxbotix:PW определяет, что Arduino считывает ШИМ сигналы
Maxbotix rangeSensorPW(3, Maxbotix::PW, Maxbotix::LV);
void setup()
{
Serial.begin(9600);
}
void loop()
{
unsigned long start;
Serial.println("Reading 1st Sensor"); // Монитор последовательного порта напечатает эту строку
start = millis(); // Для расчета количество миллисекунд между передачей и приемом сигнала
Serial.print("PW 1: ");
Serial.print(rangeSensorPW.getRange()*.393701); // умножаем для перевода сантиметров в дюймы
Serial.print(" inches - ");
Serial.print(millis() - start);
Serial.println("ms");
Serial.println();
delay(1500); // Ждем 1,5 секунды
}
Когда Arduino подключена, как показано на рисунке выше, и загружен код, вы можете открыть монитор последовательного порта, в нем будут отображаться расстояния дюймах каждые 1,5 секунды. Попробуйте поместить над сонаром руку, и он определит расстояние до нее. Для этого конкретного сонара диапазон измерения расстояний составляет 20 футов (6 метров).
Ниже приведен пример того, что будет выведено в монитор последовательного порта.