Инструменты
Чтобы лишний раз не бегать в магазин прямо посреди процесса сборки системы, лучше заранее подготовить все инструменты, что могут вам пригодиться. Так, стоит побеспокоиться, чтобы под рукой были:
- Паяльник. Хорошим выбором станут приборы с регулируемой мощностью, их можно приспособить к любой ситуации.
- Проводники. Естественно, датчик необходимо будет подсоединять к МК, и для этого не всегда подходят стандартные пины.
- Переходник под usb-порт. Если на вашем микроконтроллере нет встроенного порта, побеспокойтесь о том, чтобы его можно было подключить к ПК другим способом. Ведь вам необходимо будет подгружать дополнительные библиотеки и новую прошивку в ваш проект.
- Припой, канифоль и прочие мелочи, в том числе изолированное рабочее пространство.
- Сам чип и МК, а также, при необходимости, корпус будущего устройства. Наиболее опытные инженеры предпочитают распечатывать оболочку для своих проектов на 3Д принтере, однако, если вы живёте в крупном городе, не обязательно тратиться. Можете поискать компании, дающие в аренду принтеры.
Стоит понимать, что дальномер Arduino относится к приборам бесконтактного типа и способен обеспечивать точные измерения. Но всё же не стоит забывать, что профессиональные устройства используют совершенно другие технологии и проходят длительную калибровку под все материалы, а соответственно, в любом случае, окажутся лучше. Также у нашего проекта будет ограниченный диапазон измерения расстояний, от 0.03 до 4 метров, что подойдёт не во всех случаях.
Но, что хорошо, на работу устройства не оказывается никакого влияния со стороны ЭМ излучений и солнечной энергии. А в комплекте к датчику уже находятся нужные ресиверы и трансмиттеры, которые пригодятся, когда вы будете собирать ультразвуковой дальномер Ардуино.
Важно! В нашем уроке можно будет ничего не паять, т.к. мы будем использовать макетную плату и провода-перемычки
Но если вы захотите в итоге собрать законченное устройство — вам пригодится всё что мы указали выше.
Схема
Схема проста, часть деталей запаивается на макетной плате.
Через скользящие контакты от Arduino к датчику VL53L03X подключаются контакты +5В, земля и две линии интерфейса I2C (SCL и SDA). К датчику Холла подключается земля, +5В и вывод D8 от Arduino. Также между +5В и D8 устанавливается резистор на 10кОм.
На повышающего преобразователя подаётся 5В. На плате построечным резистором устанавливается выходное напряжение примерно 12В. Эти 12В с выхода стабилизатора подключаются к выводам «питание мотора» модуля драйвера моторов. Так же по линии 12В устанавливается электролитический конденсатор, который нужен что бы драйвер мотора работал без сбоев (на плате его может не быть совсем, а даже когда запаян керамический или танталовый конденсатор, его ёмкости обычно недостаточно). 5В подключается к выводам «питание логики» драйвера моторов. Не перепутайте, где выводы «питание логики» и «питание мотора», иначе драйвер может выйти из строя.
Платы бывают разные, иногда плюс питания для мотора обозначается, допустим надписью VMOT, а плюс питания логики обозначаться как VCC. Выводов GND на плате может быть один или несколько, в данном случае это не имеет значения.
Выводы STEP, DIR и EN от драйвера моторов подключаются к Arduino, а выводы RESET и SLEEP соединяются между собой.
На платах с драйвером моторов A4988 обычно запаян подстроечный резистор, им настраивается ограничение по току для шагового мотора. Ограничение тока для шаговых моторов очень желательно настроить. Если ограничить ток слишком сильно, мотор под нагрузкой или не сможет вообще проворачивать вал или будут пропуски шагов. Если задать слишком большой ток и источник питания способен будет его обеспечить, мотор будет греться или его обмотки просто сгорят. Так же это абсолютно ненужная нагрузка на источник питания. При питании от аккумулятора это приведёт к тому, что он будет быстрей разряжаться. При питании от USB (блока питания, порт компьютера или ноутбука и т.д.) в лучшем случае будет просто лишняя нагрузка, в худшем, когда блок питания или порт не рассчитан на такой ток и нет защиты, это даже может привести к выходу из строя блока питания или порта.
Вот и все. В качестве источника питания используется USB-кабель, подключенный к Arduino NANO.
Скетч
Последовательность совершения операций для ультразвукового дальномера HC-SR04:
- На 10 мс устанавливаем High на пине TRIG сенсора, который подключается к Ардуино.
- Замеряем время длительности высокого сигнала на ноге с ECHO и присваиваем его T. Оно равно времени прохождения УЗ между отправкой и возвратом, но не более 38 мс.
- Считаем, что, если эхо вернулось за время более 25 мс, — расстояние слишком велико для точности — заканчиваем.
- Вычисляем дальность разделив время пополам и перемножив его на скорость распространения волны в стабильной воздушной среде. Формула: t/2×340.
- Приводим результат в читабельный вид и отправляем на монитор порта, для последующего отображения его на дисплее пользователя.
Слегка модернизировав приведенный скетч, можно создать сонар для использования в быту. Речь идет об уже рассказанных сферах — парктроник, «глазах» роботов, определителя препятствий для слабовидящих, или высотомере дрона. Естественно с коррекцией последней паузы кода в сторону ее уменьшения.
Если применяется схема с соединением по одному пину на Arduino, используется следующий скетч (модификация предыдущего):
Существует отдельная библиотека работы с ультразвуковым датчиком. Называется она «NewPing» и распространяется через сайт https://playground.arduino.cc/Code/NewPing/
Код работы с ней:
Основное преимущество модуля в совместимости с различными ультразвуковыми дальномерами, без изменения исходного кода скетчей. Он управляет Paralax Ping, Dyp-ME007, SRF06, SRF05, SR04. С ними всеми взаимодействие может проходить в режиме двух пинов или по одному. Достаточно в строке инициализации указать его и для ECHO и в случае TRIG. Единственным исключением будет ультразвуковой датчик SRF06. Его конструкция не допускает подключение через совмещение контактов.
Шаг 6: тестирование
Рисунок 10 – Скетч ProcessingРисунок 11 – Графический экран Processing
Подключите USB кабель Arduino к компьютеру.
Запустите “dual_sensor_echo_locator.pde”, нажав кнопку запуска вверху слева в Processing 3 IDE.
На вашем экране должны начать появляться числа, разделенные запятой (рисунок 10).
Сообщение об ошибке при запуске
При запуске может появиться сообщение об ошибке. Если это так, то измените в строке 88 (рисунок 10) на номер, связанный с вашим COM портом.
В зависимости от вашей системы могут быть указаны несколько COM портов. Один из номеров будет работать.
На рисунке 10 номер связан с моим «COM4»
Расположение датчиков
Расположите датчики на расстоянии 100 см друг от друга и 100 см от объекта, фронтальной стороной к нему.
Медленно поворачивайте оба датчика к диагонально противоположному углу воображаемого квадрата со стороной 1 метр.
Когда вы будете вращать датчики, то найдете положение, в котором на графическом дисплее появится мигающая красная точка.
Также, когда датчики захватят ваш объект, будут отображаться дополнительные данные (рисунок 11):
- расстояние d1
- расстояние d2
- базовая линия (base)
- смещение (offset)
- полупериметр (s)
- площадь (area)
- координата X
- координата Y
Код
Код для нашего устройства ниже. Помните, что красный светодиод должен загораться при расстоянии менее 4 см.
/* Arduino HC-SR04 ультразвуковой датчик расстояния VCC подключается к 5v, GND к GND Echo к 13 пину на Arduino, Trig к 12 пину на Arduino Позитивная нога красного светодиода к 11 пину на Arduino Позитивная нога зеленого светодиода к 10 пину на Arduino */ #define trigPin 13 #define echoPin 12 #define led 11 #define led2 10 void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(led, OUTPUT); pinMode(led2, OUTPUT); } void loop() { long duration, distance; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration/2) / 29.1; if (distance < 4) { // На этом этапе происходит вкл/выкл светодиода digitalWrite(led,HIGH); // когда загорается красный, зеленый обязан выключится digitalWrite(led2,LOW); } else { digitalWrite(led,LOW); digitalWrite(led2,HIGH); } if (distance >= 200 || distance <= 0){ Serial.println("Out of range"); // Вне диапазона } else { Serial.print(distance); Serial.println(" cm"); // тут тоже можно указать " см" } delay(500); }
Единственное, о чем стоит помнить, – далеко не все функции и библиотеки написаны профессионалами. Многие из них создаются такими новичками, как и вы, соответственно, старайтесь просматривать код, прежде чем заключать, что датчик не работает или выдаёт неправильные данные.
Но значительно лучше будет изучить основы программирования и С++, чтобы в дальнейшем самостоятельно писать многие вещи самому.
Step 6: Next, Try…
Congratulations! You have learned to detect distance using an ultrasonic sensor. You also learned about standalone functions in this lesson, and used and the serial monitor to track changes inside your Arduino. You could expand this project by making it a proximity alarm by adding a piezo buzzer that turns on when all three LEDs are lit up (closest distance). Consider swapping the distance sensor for a temperature sensor. Or add motors to create a robot with obstacle detection!
You can also learn more electronics skills with the free Instructables classes on Arduino, Basic Electronics, LEDs & Lighting, 3D Printing, and more.
Conclusion
In this article, I have shown you how the HC-SR04 ultrasonic distance sensor works and how you can use it with Arduino. I hope you found it useful and informative. If you did, please share it with a friend that also likes electronics!
Personal project: A couple of months ago I built an interactive wall installation with some friends. We used around 30 ultrasonic distance sensors to detect people walking in front of the wall. The wall included lights and sound effects that changed depending on how far away people were standing.
Photo: Guus Schoonewille
I would love to know what projects you plan on building (or have already built) with the HC-SR04 distance sensor. If you have any questions, suggestions or if you think that things are missing in this tutorial, please leave a comment down below.
Note that comments are held for moderation to prevent spam.
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Beginner
Step 5: Build a Physical Circuit (Optional)
If you build a physical version of this circuit, you can try it out with the Arduino software’s serial monitor (magnifying glass button in the upper right of the sketch window), activating the sensor with your hand, body, notebook, etc.
If using a physical board, put something in front of the sensor and observe the distance reading using the serial monitor, and set distanceThreshold to that value.
Adjust your different distance threshold «buckets» to a range suitable to your initial value, for instance if your hand was 60cm away, your ranges might be 60-40, 40-20, and 20-0.
Upload your code again, and try moving in front of the sensor. As the distance shortens, you should see the LEDs turn on one by one.
Шаг 5: установка программного обеспечения
Установите следующее программное обеспечение в этом порядке:
Arduino IDE
Скачайте и установите Arduino IDE (интегрированную среду разработки) с сайта https://www.arduino.cc/en/main/software, если она еще у вас не установлена.
Скетч Arduino
Скачайте и откройте в Arduino IDE файл «dual_sensor _echo_locator.ino«, загрузите его в свою Arduino Uno R3.
Закройте Arduino IDE, но USB кабель оставьте подключенным.
Скетч Processing
Скопируйте содержимое прикрепленного файла, “dual_sensor_echo_locator.pde” в Processing «Sketch».
Теперь нажмите вверху слева кнопку «Run»… На вашем экране должен появиться графический экран.
Разбор скетча
Ну что ж, пришло время разобрать скетч. Объяснять простые моменты я не буду, а постараюсь рассказать про интересные участки кода.
Рассмотрим самый интересный участок скетча, который и отвечает за работу проекта. Поделим этот участок кода на две части, которые вы можете увидеть выше. Рассмотрим каждую часть в отдельности.
1 часть кода Как вы видите, составляющим первой части кода является действие, которое называется условием. Мы указываем условие, при котором выполняются некоторые команды. Смысл этой команды такой: если расстояние, которое замерил дальномер, больше или равно минимальному значению (это минимальное значение мы задали в начале скетча) и меньше или равно максимальному значению (это максимальное значение мы также указали в начале скетча), то поворачиваем сервопривод на угол, вычисляющийся по формуле (10*(замеряемая длина — минимальное значение)).
2 часть кода Вторая часть кода продолжает первую часть… Иначе (при значении, не попадающим в указанный нами интервал), если замеренная датчиком длина меньше минимального значения, то сервопривод устанавливается в положение с углом поворота равным 0 градусов. Иначе сервопривод устанавливается в положение с максимальным углом поворота равным 180 градусов.
То есть мы указали для сервопривода все возможные случаи работы: рабочее состояние, положение сервопривода с углом в 0 градусов и в положении с 180 градусами
Датчик расстояния в проектах Arduino
Способность ультразвукового датчика определять расстояние до объекта основано на принципе сонара – посылая пучок ультразвука, и получая его отражение с задержкой, устройство определяет наличие объектов и расстояние до них. Ультразвуковые сигналы, генерируемые приемником, отражаясь от препятствия, возвращаются к нему через определенный промежуток времени. Именно этот временной интервал становится характеристикой помогающей определить расстояние до объекта.
Описание датчика HC SR04
Датчик расстояния Ардуино является прибором бесконтактного типа, и обеспечивает высокоточное измерение и стабильность. Диапазон дальности его измерения составляет от 2 до 400 см. На его работу не оказывает существенного воздействия электромагнитные излучения и солнечная энергия. В комплект модуля с HC SR04 arduino также входят ресивер и трансмиттер.
Ультразвуковой дальномер HC SR04 имеет такие технические параметры:
- Питающее напряжение 5В;
- Рабочий параметр силы т ока – 15 мА;
- Сила тока в пассивном состоянии -6 с.
Датчик оснащен четырьмя выводами (стандарт 2, 54 мм):
- Контакт питания положительного типа – +5В;
- Trig (Т) – выход сигнала входа;
- Echo (R) – вывод сигнала выхода;
- GND – вывод «Земля».
Схема взаимодействия с Arduino
Для получения данных, необходимо выполнить такую последовательность действий:
- Подать на выход Trig импульс длительностью 10 микросек;
- В ультразвуковом дальномере hc sr04 подключенном к arduino произойдет преобразование сигнала в 8 импульсов с частотой 40 кГц, которые через излучатель будут посланы вперед;
- Когда импульсы дойдут до препятствия, они отразятся от него и будут приняты приемником R, что обеспечит наличие входного сигнала на выходе Echo;
- На стороне контроллера полученный сигнал при помощи формул следует перевести в расстояние.
При делении ширины импульса на 58.2, получим данные в сантиметрах, при делении на 148 – в дюймах.
Подключение HC SR04 к Arduino
Выполнить подключение ультразвукового датчика расстояния к плате Arduino достаточно просто. Схема подключения показана на рисунке.
Контакт земли подключаем к выводу GND на плате Arduino, выход питания соединяем с 5V. Выходы Trig и Echo подсоединяем к arduino на цифровые пины. Вариант подключения с помощью макетной платы:
Библиотека для работы с HC SR04
Для облегчения работы с датчиком расстояния HC SR04 на arduino можно использовать библиотеку NewPing. Она не имеет проблем с пинговыми доступами и добавляет некоторые новые функции.
К особенностям библиотеки можно отнести:
- Возможность работы с различными ультразвуковыми датчиками;
- Может работать с датчиком расстояния всего через один пин;
- Отсутствие отставания на 1 секунду при отсутствии пинга эха;
- Для простой коррекции ошибок есть встроенный цифровой фильтр;
- Максимально точный расчет расстояния.
Скачать бибилотеку NewPing можно здесь
Точность измерения расстояния датчиком HC SR04
Точность датчика зависит от нескольких факторов:
- температуры и влажности воздуха;
- расстояния до объекта;
- расположения относительно датчика (согласно диаграммы излучения);
- качества исполнения элементов модуля датчика.
В основу принципа действия любого ультразвукового датчика заложено явление отражения акустических волн, распространяющихся в воздухе. Но как известно из курса физики, скорость распространения звука в воздухе зависит от свойств этого самого воздуха (в первую очередь от температуры). Датчик же, испуская волны и замеряя время до их возврата, не догадывается, в какой именно среде они будут распространяться и берет для расчетов некоторую среднюю величину. В реальных условиях из-за фактора температуры воздуха HC-SR04 может ошибаться от 1 до 3-5 см.
Фактор расстояния до объекта важен, т.к. растет вероятность отражения от соседних предметов, к тому же и сам сигнал затухает с расстоянием.
Также для повышения точности надо правильно направить датчик: сделать так, чтобы предмет был в рамках конуса диаграммы направленности. Проще говоря, “глазки” HC-SR04 должны смотреть прямо на предмет.
Для уменьшения ошибок и погрешности измерений обычно выполняются следующие действия:
- усредняются значения (несколько раз замеряем, убираем всплески, потом находим среднее);
- с помощью датчиков (например, DHT11 или DHT22) определяется температура и вносятся поправочные коэффициенты;
- датчик устанавливается на серводвигатель, с помощью которого мы “поворачиваем голову”, перемещая диаграмму направленности влево или вправо.
4Калибровка ультразвукового дальномера
После небольшого опыта использования данного прибора, выявилось, что измеренное расстояние отличается от действительного, причём чем больше расстояние от датчика до цели, тем больше отклонение. В связи с этим возникла необходимость в корректировке показаний дальномера.
Для этого я измерил на всём рабочем диапазоне датчика (от 0 до 400 см) расстояния и составил таблицу из двух столбцов: реальное расстояние и показания датчика. По этим данным построил график:
График отклонения показаний ультразвукового дальномера
Здесь зелёным цветом показан график для идеального дальномера, как должно быть, а красным – реального, который в моём случае занижает показания.
Зависимость получилась линейная. Прекрасно! Из курса геометрии мы помним, что уравнение прямой, проходящей через две точки: (x − x1)/(x2 − x1) = (y − y1)/(y2 − y1)
Подставив вместо x1, 2 и y1, 2 значения из таблицы и упростив выражение, я получил уравнение для графика измерений ультразвукового дальномера: y = 0,97x + 0,27
В уравнении прямой коэффициент 0,97 возле «икс» является тангенсом угла наклона прямой к оси абсцисс. Назовём его tg(α). Можно посчитать, что угол наклона прямой равняется 44,13 градусам (арктангенс от 0,97), а в идеальном случае он должен быть равен 45 градусам (и уравнение прямой идеального дальномера очень простое: y = x, то есть каждому измеренному числу соответствует точно такое же реальное расстояние). Постоянная 0,27 – это смещение графика относительно нуля по оси ординат.
Посмотрим на следующий рисунок. Видны два прямоугольных треугольника, приподнятые над осью OX. Один из катетов, назовём его h, треугольника с углом α равен измеренному дальномером расстоянию Rизм за вычетом константы b, равной 0,27. Катет другого треугольника равен реальному расстоянию Rреал. У обоих треугольников катеты h равны. Зная длину катета h и тангенс угла α (равный 0,97), мы узнаем реальное расстояние Rреал, поделив, длину катета h на tg(α),
Последовательность коррекции показаний ультразвукового дальномера
Таким образом, для того чтобы скорректировать ошибку при измерениях дальномера, нужно следовать формуле: Rреал = (Rизм − b) / tg(α) = (Rизм − 0,27) / 0,97 Обратите внимание, что это выражение можно было получить из предыдущего уравнения, выразив x через y. В вашем случае коэффициент и константа, естественно, будут отличаться
Эту коррекцию следует внести в скетч для Arduino. После этого ультразвуковой дальномер на датчике HC-SR04 будет показывать расстояние более точно
В вашем случае коэффициент и константа, естественно, будут отличаться. Эту коррекцию следует внести в скетч для Arduino. После этого ультразвуковой дальномер на датчике HC-SR04 будет показывать расстояние более точно.
Напоследок приведу видеодемонстрацию работы готового ультразвукового дальномера (до калибровки).
KY-008: лазерный модуль для Ардуино
Основной компонент модуля — это красный лазерный светодиод с медным цилиндрическим радиатором охлаждения. Также на плате передатчика размещены пассивные компоненты, обеспечивающие стабильный режим работы светодиода. Лазера луч виден в задымленном помещении. и создает небольшое световое пятно на поверхности объекта, расположенного на расстоянии до 14 метров от источника.
Принцип работы лазерного светодиода на схеме
При подключении светодиода к Arduino, во время прохождения электронов через p-n переход происходит спонтанное излучение фотонов света. В лазерном светодиоде происходит рекомбинация фотонов (вынужденное излучения фотонов с одинаковыми параметрами). Принцип работы лазера основан на том, что излучаемые фотоны света вызывают повторное излучение, которое увеличивается лавинообразно.
Интенсивность излучения передатчика ky-008 зависит от силы тока. При малых токах модуль работает, как обычный светодиод, так как происходит только спонтанное излучение фотонов. Когда сила тока превышает пороговое значение – мощность излучения резко вырастает. Лазерный диод испускает свет перпендикулярно поверхности кристалла и фокусируется с помощью оптики (см. фото выше).
Работа схемы
Схема робота на основе Arduino и датчика скорости LM393 представлена на следующем рисунке.
Вычислительные и управляющие задачи в схеме возложены на плату of Arduino Nano. Колеса робота приводятся в движение двумя электродвигателями постоянного тока при помощи драйвера двигателя на основе H-моста L298N. Джойстик используется для управления скоростью и направлением движения робота, а два датчика скорости H206 используются для измерения скорости, пройденной дистанции и угла поворота робота. Измеренные значения этих параметров отображаются на экране ЖК дисплея 16×2. Потенциометр, подключенный к ЖК дисплею, можно использовать для управления его контрастностью, а резистор служит для ограничения тока для управления яркостью подсветки дисплея.
Схема запитывается от литиевого элемента на 7.4V. Эти 7.4V подаются на контакт 12V драйвера двигателя, а регулятор напряжения драйвера двигателя преобразует их в стабилизированное напряжение +5V, которое используется для питания платы Arduino, ЖК дисплея, датчиков и джойстика.
Двигатели управляются с помощью цифровых контактов 8, 9, 10 и 11 платы Arduino. Поскольку нам необходимо управлять еще и скоростью вращения двигателей мы используем сигналы ШИМ (широтно-импульсной модуляции), подаваемые на положительные контакты двигателей. Для этой цели мы используем контакты 9 и 10 платы Arduino, на которых возможно использование ШИМ сигналов. Значения положения осей X и Y джойстика подаются на аналоговые контакты A2 и A3 соответственно.
Поскольку, как мы уже знаем, датчик H206 формирует управляющее воздействие (триггер) каждый раз когда обнаруживается отверстие в пластине с делениями. Для повышения точности определения скорости мы эти управляющие воздействия будем подавать на входы внешних прерываний на контактах 2 и 3 платы Arduino. После сборки робота у нас получилась конструкция показанная на следующем рисунке. Более подробно вы ее можете рассмотреть на видео, приведенном в конце статьи.
Технические характеристики разработанного лазерного сканирующего дальномера
Для реализации SLAMнеобходима аппаратная база. В совместной работе кафедры «Мехатроника и Робототехника» с предприятием ОАО «Восход КРЛЗ» был разработан сканирующий лазерный дальномер. Трехмерная модель сканера приведена на рисунке (Рисунок 3).
Тип лазера: Импульсный;
Мощность лазерного излучения: 75 Вт в импульсе;
Угол сканирования: 90 0 ;
Высота плоскости сканирования относительно основания: 140 мм;
Количество точек в одном скане: 5000 точек;
Максимальное измеряемое расстояние: 31 м;
Погрешность измерений: до ±2% от измеряемого расстояния;
Напряжение питания: 12 В;
Ток потребления: 0.9 А;
Рисунок 3 – Трехмерная модель сканера
Examples of Arduino Ultrasonic Sensors
HC-SR04
One of the most popular ultrasonic sensors would be the HC-SR04. The configuration pin of HC-SR04 is VCC (1), TRIG (2), ECHO (3), and GND (4). The supply voltage of VCC is 5V and you attach TRIG and ECHO pin to any Digital I/O in your Arduino Board to power it.
Specifications
- Power Supply: DC 5V
- Working Current: 15mA
- Working Frequency: 40Hz
- Ranging Distance : 2cm – 400cm/4m
- Resolution : 0.3 cm
- Measuring Angle: 15 degree
- Trigger Input Pulse width: 10uS
- Dimension: 45mm x 20mm x 15mm
Grove – Ultrasonic Distance Sensor
Next up we have our very own Grove – Ultrasonic Distance Sensor, Seeed’s very own version of an ultrasonic distance sensor which is comparative to the HC-SR04.
It can measure from 3cm to 350cm with the accuracy up to 2mm. It is a perfect ultrasonic module for distance measurement, proximity sensors, and ultrasonic detector.
Specifications
- Power Supply: 3.3V – 5V
- Operating Current: 8mA
- Working Frequency: 40Hz
- Ranging Distance : 3cm – 350cm/3.5m
- Resolution : 1 cm
- Measuring Angle: 15 degree
- Trigger Input Pulse width: 10uS TTL
- Dimension: 50mm x 25mm x 16mm
What is an Arduino Ultrasonic Sensor?
An ultrasonic sensor is a sensor that measures distances through ultrasound which travels through the air. If the ultrasound hits an object or obstacle on its path, it will then bounce back towards the sensor.
Ultrasonic Sensor Working Principle
Here is a simple example of how an ultrasonic sensor works to measure distance:
- Firstly, the transmitter (trig pin) sends a sound wave
- The object picks the wave up, reflecting it back to the sensor.
- The receiver (echo pin) picks it up
The time between transmission and reception allows distance between to be calculated since sound’s velocity in air is known.
Программирование своего собственного приложения с использованием Processing
Если наше приложение вас не устраивает и вы хотите написать свое собственное Android приложение для управления рассматриваемым в этой статье радаром, то вы можете сделать это с помощью программной среды Processing. Для этого понадобятся минимальные знания в программировании. Но если у вас совсем не имеется опыта программирования, то лучше вам все таки скачать готовое приложение в предыдущем раздела статьи.
Подобное приложение использует две библиотеки, которые называются “Ketai library” и “ControlP5 library”. Ketai library используется для управления всеми аппаратными средствами вашего смартфона, например, уровнем заряда батареи, значениями с датчика близости (proximity sensor), значениями с датчика ускорения (accelerometer sensor), настройками Bluetooth и т.д. Ко всем этим настройкам можно легко получить доступ с использованием Ketai library. В нашей программе мы используем эту библиотеку для установления связи между Bluetooth смартфона и Bluetooth модулем HC-05, подключенном к Arduino. Библиотека “ControlP5 library” используется для построения графиков на основе данных, получаемых от нашего радара.
Замечание: не забудьте установить две упомянутые библиотеки и не копируйте просто код программы, потому что код программы импортирует изображения из каталога с данными, который вы также скачаете по приведенной ссылке.
Если вы закончили с написанием программы и успешно скомпилировали ее вы можете соединить ваш смартфон с компьютером соответствующим кабелем и скопировать и установить ее на ваш смартфон.
Основные причины для монтажа лазерного дальномера
Схема работы лазерного дальномера.
Пользоваться механической рулеткой не всегда удобно. Порой она не дает положительного эффекта. В последние 10 лет все большее предпочтение отдается электронным дальномерам. К этой группе приборов, которые измеряют расстояние при помощи электроники, относятся:
- лазерный дальномер;
- ультразвуковой дальномер.
Все эти приборы функционируют по принципу бесконтактного метода. Такой дальномер своими руками сегодня создают отечественные мастера. Приборы работают не хуже тех, которые были выпущены в заводских условиях.
Лазерный дальномер, сделанный своими руками, состоит из нескольких частей:
- плата;
- микроконтроллер;
- усилитель лазерного сигнала;
- лазер;
- фотоприемник;
- фильтр.
Довольно сложно получить такой сигнал, имеющий частоту 10 МГц. Простой контроллер здесь не подходит. Для этого лучше использовать меандр, у которого имеется нужная частота. Когда усиливается сигнал, приходящий из фотоприемника, удаляются ненужные гармоники специальным полосовым фильтром, который функционирует на частоте 10 МГц. На выходе появляется сигнал, сильно напоминающий синусоидальный.
Объяснение программы для приемного датчика
В приемном датчике мы должны заклеить передающую часть непрозрачной лентой (как обсуждалось ранее). И затем мы должны просто использовать описанный ранее в статье метод чтобы приемный датчик синхронизировался с передающим датчиком.
Arduino
Trigger_US();
while (digitalRead(echoPin)==HIGH);
delayMicroseconds (10);
Trigger_US();
duration = pulseIn(echoPin, HIGH);
1 |
Trigger_US(); while(digitalRead(echoPin)==HIGH); delayMicroseconds(10); Trigger_US(); duration=pulseIn(echoPin,HIGH); |
Сначала мы запускаем в работу датчик с помощью функции Trigger_US() и затем в цикле while ждем до тех пор пока на контакте echo будет напряжение высокого уровня. Как только на контакте echo появится напряжение низкого уровня мы ждем заранее известную нам задержку – она должна быть в интервале от 10 до 30 микросекунд (можно экспериментально определить наилучшее значение для этой задержки или использовать прием описанный нижу в данной статье). После этой задержки мы снова запускаем в работу датчик с помощью функции Trigger_US() и затем используем функцию pulseIn() чтобы определить длительность импульса.
И затем по известной формуле мы можем рассчитать расстояние.
Arduino
distance= duration*0.034;
1 | distance=duration*0.034; |
Краткие выводы
Ультразвуковые датчики расстояния достаточно универсальны и точны, что позволяет их использовать для большинства любительских проектов. В статье рассмотрен крайне популярный датчик HC SR04, который легко подключается к плате ардуино (для этого следует сразу предусмотреть два свободных пина, но есть вариант подключения и с одним пином). Для работы с датчиком существуют несколько бесплатных библиотек (в статье рассмотрена лишь одна из них, NewPing), но можно обойтись и без них – алгоритм взаимодействия с внутренним контроллером датчика достаточно прост, мы показали его в этой статье.
Исходя из собственного опыта, можно утверждать, что датчик HC-SR04 показывает точность в пределах одного сантиметра на расстояниях от 10 см до 2 м. На более коротких и дальних дистанциях возможно появление сильных помех, что сильно зависит от окружающих предметов и способа использования. Но в большинстве случаев HC-SR04 отлично справлялся со своей работой.