Ультразвуковой датчик расстояния ардуино hc-sr04

Содержание:

Ультразвуковой датчик HC-SR04

Ультразвуковой датчик HC-SR04 — Ultrasonic Ranging  Module HC — SR04 —  Ultrasonic Sensor Distance Measuring Module — Sonar

      Ультразвуковой дальномер HC SR04 самый известный датчик для применения в Arduino, Raspberry Pi,  ESP8266 и  ESP32 модулях. Позволяет измерять расстояние до объекта  в диапазоне от 2 до 400 (180) см. Например, если вы хотите собрать робота, который объезжает преграды, то данный дальномер прекрасно подойдет для ваших задач. Датчик имеет небольшие габариты и простой интерфейс.

Рис. 4 Внешний вид  ультразвукового датчика (сонара, ультразвукового сенсора, ультразвукового модуля) HC-SR04

About Ultrasonic Sensor

Ultrasonic sensor HC-SR04 is used to measure the distance to an object by using ultrasonic waves.

Pinout

The ultrasonic sensor HC-SR04 includes four pins:

  • VCC pin needs to be connected to VCC (5V)

  • GND pin needs to be connected to GND (0V)

  • TRIG pin this pin receives the control signal (pulse) from Arduino.

  • ECHO pin this pin sends a signal (pulse) to Arduino. Arduino measures the duration of pulse to calculate distance.

How It Works

This section is the in-depth knowledge. DON’T worry if you don’t understand. Ignore this section if it overloads you, and come back in another day. Keep reading the next sections.

  1. Micro-controller: generates a 10-microsecond pulse on the TRIG pin.
  2. The ultrasonic sensor automatically emits the ultrasonic waves.
  3. The ultrasonic wave is reflected after hitting an obstacle.
  4. The ultrasonic sensor:
  • Detects the reflected ultrasonic wave.

  • Measures the travel time of the ultrasonic wave.

Ultrasonic sensor: generates a pulse to the ECHO pin. The duration of the pulse is equal to the travel time of the ultrasonic wave.
Micro-controller measures the pulse duration in the ECHO pin, and then calculate the distance between sensor and obstacle.

How to Get Distance From Ultrasonic Sensor

To get distance from the ultrasonic sensor, we only need to do two steps (1 and 6 on How It Works part)

  • Generates a 10-microsecond pulse on TRIG pin

  • Measures the pulse duration in ECHO pin, and then calculate the distance between sensor and obstacle

Distance Calculation

We have:

  • The travel time of the ultrasonic wave (µs): travel_time = pulse_duration

  • The speed of the ultrasonic wave: speed = SPEED_OF_SOUND = 340 m/s = 0.034 cm/µs

So:

  • The travel distance of the ultrasonic wave (cm): travel_distance = speed × travel_time = 0.034 × pulse_duration

  • The distance between sensor and obstacle (cm): distance = travel_distance / 2 = 0.034 × pulse_duration / 2 = 0.017 × pulse_duration

Arduino’s pins can generate a 10-microsecond pulse and measure the pulse duration. Therefore, we can get the distance from the ultrasonic sensor by using two Arduino’s pins:

Принцип действия датчиков движения

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

В основе работы микроволнового (радиочастотного) ДД лежит принцип радиолокатора. Устройство автоматически срабатывает только при улавливании сигналов в определенном диапазоне. Специалисты считают, что такие приборы практичнее ультразвуковых, но и стоят они дороже.

Принцип действия инфракрасных устройств напоминает работу термометра с высокой чувствительностью. Они настроены на определенную температуру и срабатывают, когда в поле их «зрения» попадает объект с соответствующим показателем. Ввиду высокой чувствительности приборов к температурным колебаниям их нельзя ставить в кухне или рядом со входными дверьми.

В представленном видео подробно рассказано о датчиках движения, их разновидностях и особенностях работы:

Wrapping Up

In this post, we’ve shown you how the HC-SR04 ultrasonic sensor works and how you can use it with the Arduino board. For a project example, you can build a Parking Sensor with LEDs and a buzzer.

If you are a beginner to the Arduino, we recommend following our Arduino Mini-Course that will help you get started quickly with this amazing board.

If you like Arduino, you may also like:

  • Arduino Step-by-step Projects course
  • Guide to SD card module with Arduino
  • Guide to DHT11/DHT22 Humidity and Temperature Sensor With Arduino
  • Guide for TCS230/TCS3200 Color Sensor with Arduino

You can find all our Arduino projects and tutorials here.

We hope you found this tutorial useful. Thanks for reading.

Применение сенсоров ультразвукового излучения в робототехнике

Главная задача, решаемая в робототехнике с помощью датчиков этого вида — ориентирование робота на местности, предотвращение столкновений и обеспечение обхода препятствий.

Достоинства систем ориентации, построенных на ультразвуковых датчиках:

  • цена;
  • проста в изготовлении, так как монтируется из легкодоступных элементов;
  • при интегрировании в роботизированные устройства не требуется менять схему управления робота;
  • универсальность;
  • нечувствительность к неблагоприятным факторам окружающей среды: задымленность, запыленность, отсутствие света, высокая влажность.

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

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

Arduino and HC-SR04 Ultrasonic Sensor Code

First you have to define the Trig and Echo pins. In this case they are the pins number 9 and 10 on the Arduino Board and they are named trigPin and echoPin. Then you need a Long variable, named “duration” for the travel time that you will get from the sensor and an integer variable for the distance.

// defines pins numbers
const int trigPin = 9;
const int echoPin = 10;

// defines variables
long duration;
int distance;

In the setup you have to define the trigPin as an output and the echoPin as an Input and also start the serial communication for showing the results on the serial monitor.

void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
Serial.begin(9600); // Starts the serial communication
}

In the loop first you have to make sure that the trigPin is clear so you have to set that pin on a LOW State for just 2 µs. Now for generating the Ultra sound wave we have to set the trigPin on HIGH State for 10 µs. Using the pulseIn() function you have to read the travel time and put that value into the variable “duration”. This function has 2 parameters, the first one is the name of the echo pin and for the second one you can write either HIGH or LOW.

// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);

// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

In this case, HIGH means that the pulsIn() function will wait for the pin to go HIGH caused by the bounced sound wave and it will start timing, then it will wait for the pin to go LOW when the sound wave will end which will stop the timing. At the end the function will return the length of the pulse in microseconds.

For getting the distance we will multiply the duration by 0.034 and divide it by 2 as we explained this equation previously.

// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);

// Calculating the distance
distance= duration*0.034/2;

// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);

At the end we will print the value of the distance on the Serial Monitor.

Here’s the complete code:

/*
* Ultrasonic Sensor HC-SR04 and Arduino Tutorial
*
* by Dejan Nedelkovski,
* www.HowToMechatronics.com
*
*/
// defines pins numbers
const int trigPin = 9;
const int echoPin = 10;
// defines variables
long duration;
int distance;
void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
Serial.begin(9600); // Starts the serial communication
}
void loop() {
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance= duration*0.034/2;
// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);
}

See also: Arduino Range Measurer and Digital Spirit Level Project

Исходный код программы

В этом проекте мы использовали библиотеку NewPing.h для ультразвукового датчика, разработанную Tim Eckel. Хотя с ультразвуковым датчиком можно вполне успешно работать и без этой библиотеки, но в виде исключения мы в этом проекте решили использовать ее потому что она имеет много полезных функций для работы с ультразвуковым датчиком и значительно сокращает код программы.

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

Переключающий контакт (Trigger pin) датчика подключен к контакту 12 платы Arduino, а Echo pin – к контакту 11 платы Arduino. MAX_DISTANCE обозначает максимальную дистанцию, на котором датчик может обнаруживать препятствие. Оно составляет 500 см (5 м).

Установим скорость последовательного порта (в бодах/с), с которой будут передаваться данные от ультразвукового датчика к плате Arduino.

Контакт 10 конфигурируется для работы на вывод данных и к нему подключен зуммер. Другой контакт зуммера подключен к контакту GND платы Arduino.

В функции void echoCheck() команда sonar.ping_result / US_ROUNDTRIP_CM используется для расчета расстояния от датчика до препятствия. Переменная flag используется чтобы дать сигнал включения зуммера когда препятствие находится на расстоянии менее 50 см от датчика. Вы можете изменить это расстояние на то, которое вам необходимо (будет зависеть от размеров вашей двери).

Работа с ультразвуковым датчиком с помощью библиотеки NewPing.h снабжена подробными комментариями от авторов этой библиотеки. Изучая примеры этой библиотеки вы можете узнать много полезного о работе с ультразвуковым датчиком.

Изначально ультразвуковой датчик предназначен для измерения расстояний, но в этом проекте мы его применили, как вы можете видеть – в качестве охранной системы (сигнализации на дверь). Но его также можно применить и в других нестандартных проектах, например, для измерения уровня воды в баке.

Далее приведен полный текст программы.

Что нам понадобится

  1. Arduino Uno;
  2. ультразвуковой дальномер Maxbotix;
  3. 3 перемычки;
  4. припой;
  5. паяльник;
  6. компьютер с Arduino IDE;
  7. USB кабель для подключения Arduino;
  8. мультиметр;

Мы будем использовать Arduino Uno в качестве нашего микропроцессора, чтобы иметь возможность считывать расстояние, определенное сонаром. Сонар, который мы используем, – это ультразвуковой дальномер Maxbotix, но в этом проекте могут быть использованы любые модели, близкие к этой, которые на выдают ШИМ или аналоговый сигнал. Три перемычки будут припаяны к датчику ультразвукового дальномера, поэтому нам понадобятся припой и паяльник. После того, как всё будет припаяно и подключено, необходимо будет с помощью IDE загрузить в Arduino код, приведенный ниже.

Принцип действия

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

   В отличие от инфракрасных дальномеров, на показания ультразвукового дальномера не влияют засветки от солнца или цвет объекта. Но могут возникнуть трудности с определением расстояния до пушистых или очень тонких предметов. Поэтому высокотехнологичную мышеловку выполнить на нём будет затруднительно.

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

     Принцип передачи и приема ультразвуковой энергии лежит в основе многих очень популярных ультразвуковых датчиков и детекторов скорости. Ультразвуковые волны являются механическими акустическими волнами, частота которых лежит за пределами слышимости человеческого уха — более 20 кГц. Однако сигналы этих частот воспринимаются некоторыми животными: собаками, кошками, грызунами и насекомыми. А некоторые виды млекопитающих, таких как летучие мыши и дельфины, общаются друг с другом ультразвуковыми сигналами.

УЛЬТРАЗВУКОВОЙ ДАТЧИК Lego Mindstorm EV 3. ЗРИ В КОРЕНЬ

Технические спецификации и особенности продукта:

    • Измерение расстояния в диапазоне от 1 до 250 см
    • Точность измерения до +/- 1 см
    • Передняя подсветка в виде красного кольца горит постоянно при передаче сигнала и мигает при прослушивании эфира
    • Если ультразвуковой сигнал распознан, датчик возвращает логическое значение «Истина»
    • Автоматическая идентификация производится программным обеспечением микрокомпьютера EV3

Рис. 1 Ультразвуковой датчик Lego Mindstorm EV 3  (стоимость вместе с внутренним микроконтроллером и микросхемами усиления сигнала $50, при себестоимости $5)

Рис. 2  Схема ультразвукового датчика Lego Mindstorm EV 3 (ultrasonic sensor hardware schematics) построена на микроконтроллере STM8S103F3

  • Введение в микроконтроллеры stm8
  • Схема центрального микроконтроллера  LEGO MINDSTORMS EV3 programmable brick main hardware schematics

Рис. 3 Ультразвуковые излучатель  AW8T40 и приемник AW8R40 ультразвукового датчика Lego Mindstorm EV 3

Преимущества и недостатки ультразвуковых датчиков

Преимущества:

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

Недостатки:

  • ультразвуковые датчики рассчитаны на то, что импульс не будет затронут во время его полета, поэтому следует избегать жидкостей, образующих тяжелые газы или слои пара;
  • поскольку для прохождения импульса требуется воздух, применение ультразвукового-датчика в вакууме невозможно;
  • конструкционные материалы прибора обычно ограничивают температуру работы, примерно до 70 C;
  • приборы можно использовать на силосохранилищах, содержащих сухие продукты, такие как гранулы, зерна или порошки, но необходимо учитывать такие факторы, как угол поверхности, запыленность и расстояние.

Датчик расстояния в проектах 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) определяется температура и вносятся поправочные коэффициенты;
  • датчик устанавливается на серводвигатель, с помощью которого мы “поворачиваем голову”, перемещая диаграмму направленности влево или вправо.

Характеристики и применение ультразвуковых датчиков движения

Принцип работы

Работа этих датчиков основана на изменении колебаний ультразвуковых волн (не воспринимаемых человеческим ухом), отраженных от предметов, и последующей их регистрации при помощи эффекта Доплера. Если длина отраженной волны меняется — устройство срабатывает.

Примечание. Эффект Доплера основан на изменении частоты или длины волны при удалении или приближении предмета, на которого направлено излучение. Наблюдается неподвижным человеком, мимо которого проходит поезд или машина на скорости. Человек слышит изменение тональности приближающегося и удаляющегося звука.

Особенности применении:

  • узкое поле обзора — до 60°;
  • нечувствительность к тепловым изменениям;
  • реакция на звуковые волны и шумы;
  • влияет на поведение домашних животных.

Особенности монтажа:

  • монтируются на стене или в углу;
  • рекомендуется использовать для контроля разбития или вибрации стекол;
  • возможно применение в узких небольших помещениях.

Сравнительная таблица моделей разных типов датчиков

Модель сигнализатора Тип датчика Объемные характеристики Характеристики для ШС Цена*, руб.
«Волна-5» радиоволновой Дальность 12 м, угол до 9° НР, Uпит = 5,5 – 65 В, Iпот = 1 мА от 1 800
«Астра-5А» инфракрасный Дальность 12 м, угол 90° НЗ, Uпит = 8 – 15 В, Iпот = 12 мА от 400
«Астра-642» ультразвуковой Дальность 10 м, угол 60° НЗ, Uпит = 8 – 15 В, Iпот = 25 мА от 700

* Цена на датчики движения зависит от производителя, поставщика и характеристик устройств и технологии изготовления. Некоторые датчики поставляются в комплекте с системой охраны и могут не продаваться отдельно.

Подключение к Arduino

Если вы планируете использовать ультразвуковой дальномер HC-SR04 с Arduino вы можете воспользоваться существующими библиотеками:

  • Ultrasonic — самая популярная библиотека для HC-SR04.
  • NewPing — отличается большей точностью и скоростью работы.
  • Ультразвуковой дальномер URM37

Распиновка:

  • Vcc — положительный вывод питания
  • TRIG — вход TRIG
  • ECHO — выход ECHO
  • GND — ноль питания

На выводы питания подается постоянное напряжение 5 В, потребляемый ток в рабочем режиме около 15 мА.

Вход TRIG подключается к любому выводу микроконтроллера. На этот вывод нужно подавать импульсный цифровой сигнал длительностью 10 мкс. По сигналу на входе TRIG датчик посылает ультразвуковые импульсы.

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

Контакты датчика можно соединить с макетной платой или Arduinoпроводами «мама-папа». А с Troyka Shield через провода «мама-мама».

Гаражный парктроник

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

4Библиотека для работы с эхолокатором HC-SR04

Также для работы с ультразвуковым дальномером написано множество библиотек. Например, вот эта библиотека Ultrasonic. Установка библиотеки происходит стандартно: скачать, разархивировать в директорию /libraries/, которая находится в папке с Arduino IDE. После этого библиотекой можно пользоваться.

Установив библиотеку, напишем новый скетч.

#include <Ultrasonic.h> // подключаем библиотеку

Ultrasonic ultrasonic(12, 11); // Trig - 12, Echo - 11

void setup() {
  Serial.begin(9600); // инициализация послед. порта
}

void loop() {
  float dist_cm = ultrasonic.Ranging(CM); // дистанция в см
  Serial.println(dist_cm); // выводим дистанцию в порт
  delay(100);
}

Результат его работы тот же – в мониторе последовательного порта выводится дистанция до объекта в сантиметрах.

Если в скетче написать float dist_cm = ultrasonic.Ranging(INC); – дистанция будет отображаться в дюймах.

Step 2: Setup

The photo above shows the setup of the project.  The jumper wires should be connected as follows: Connect a jumper wire from the 5 volt pin on the Arduino to the bottom channel of the breadboard Connect another jumper wire from a ground pin on the arduino to the upper channel of the breadboard Buzzer -> pin 3 (On Ultrasonic Sensor) Echo -> pin 6 Trig -> pin 7 (In Order from Right to Left) LED1 -> pin 8 LED2 -> pin 9 LED3 -> pin 10 LED4 -> pin 11 LED5 -> pin 12 LED6 -> pin 13 The jumper wires connected to the LEDs should be connected to the lead on the right, while the left lead of the LED should connected to the ground channel via a 330 ohm resistor.  

Объяснение программы для приемного датчика

В приемном датчике мы должны заклеить передающую часть непрозрачной лентой (как обсуждалось ранее). И затем мы должны просто использовать описанный ранее в статье метод чтобы приемный датчик синхронизировался с передающим датчиком.

Arduino

Trigger_US();
while (digitalRead(echoPin)==HIGH);
delayMicroseconds (10);
Trigger_US();
duration = pulseIn(echoPin, HIGH);

1
2
3
4
5

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;

3Скетч Arduino для ультразвукового дальномера

Напишем скетч для нашего дальномера:

const int trigPin = 6; // вывод триггера датчика HC-SR04
const int echoPin = 5; // вывод приёмника датчика HC-SR04

#include <LiquidCrystal.h> // подключаем стандартную библиотеку
LiquidCrystal lcd(12, 11, 10, 9, 8, 7); //инициализация ЖКИ 

void setup() {
  pinMode(trigPin, OUTPUT); // триггер - выходной пин
  pinMode(echoPin, INPUT); // эхо - входной
  digitalWrite(trigPin, LOW); 
  lcd.begin(16, 2); //задаём кол-во строк и символов в строке
  lcd.setCursor(10, 0); // выравниваем надпись по правому краю
  lcd.print("Dist:");
  lcd.setCursor(14, 1); 
  lcd.print("cm");
}

void loop() {
  long distance = getDistance(); // получаем дистанцию с датчика   
  lcd.setCursor(10, 1);
  lcd.print("    "); // очищаем ЖКИ от предыдущего значения
  lcd.setCursor(10, 1);
  lcd.print((String)distance); // выводим новую дистанцию
  delay(100);
}

// Определение дистанции до объекта в см
long getDistance() {
  long distacne_cm = getEchoTiming() * 1.7 * 0.01;
  return distacne_cm;
}

// Определение времени задержки
long getEchoTiming() {
  digitalWrite(trigPin, HIGH); // генерируем импульс запуска
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  // определение на пине echoPin длительности уровня HIGH, мкс:
  long duration = pulseIn(echoPin, HIGH);
  return duration;
}

Тут всё просто. Сначала инициализируем ЖКИ на выводах 12, 11, 10, 9, 8 и 7 с помощью библиотеки LiquidCrystal из состава Arduino IDE. Далее привяжем выводы «триггер» и «эхо» дальномера к выводам 6 и 5 платы Arduino. Каждые 100 мс будем запрашивать с детектора расстояние с помощью функции getDistance() и выводить на ЖК-дисплей.

У меня на LCD дисплее имеется дефект, и его левая половина почти не работает. Поэтому я вывожу надписи выровненными по правому краю.

После того как записали скетч в память Arduino, можем собирать прибор. Предлагаемая мной компоновка внутренностей показана на рисунке. Дисплей и датчик я закрепил с помощью термоклея. Он держит достаточно прочно, но при этом даёт возможность снять соединённые детали, если понадобится. Желательно всё разместить так, чтобы можно было подключиться к USB порту Arduino и поправить «прошивку» при необходимости. Например, изменить выводимый текст или поправить коэффициенты для расчёта дистанции. Может понадобиться менять контрастность ЖК дисплея, так что также желательно иметь в доступности регулятор потенциометра.

Вариант готового прибора показан на фотографии. Он достаточно компактен и удобен в использовании.

Вариант компоновки ультразвукового дальномера Внешний вид готового ультразвукового дальномера

Но следует иметь в виду несколько важных замечаний при его использовании:

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

Как использовать дальномер

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

В независимости от модели дальномера на его корпусе будет расположены минимум 2 кнопки:

  • Для старта измерения.
  • Для очистки данных.

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

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

Провести замеры можно таким образом:

  • Аппарат прикладывается к стене задним торцом.
  • Лучи должны смотреть в сторону измеряемого расстояния.
  • Далее нужно нажать кнопку «Измерения».
  • После чего данные об расстоянии будут выведены на дисплей.

В зависимости от модели тип действий может отличаться.

Ультразвуковой датчик HC-SR04

Ультразвуковой датчик HC-SR04 — Ultrasonic Ranging Module HC — SR04 — Ultrasonic Sensor Distance Measuring Module — Sonar

Ультразвуковой дальномер HC SR04 самый известный датчик для применения в Arduino, Raspberry

Pi, ESP8266 и ESP32 модулях. Позволяет измерять расстояние до объекта в диапазоне от 2 до 400 (180) см. Например, если вы хотите собрать робота, который объезжает преграды, то данный дальномер прекрасно подойдет для ваших задач. Датчик имеет небольшие габариты и простой интерфейс. Рис. 4 Внешний вид ультразвукового датчика (сонара, ультразвукового сенсора, ультразвукового модуля) HC-SR04

Названия выводов и ультразвуковых излучателей модуля

  • Vcc — положительный контакт питания.
  • Trig — цифровой вход. Для запуска измерения необходимо подать на этот вход импульс (логическую единицу) длительностью 10 мкс. Следующий импульс рекомендуется подавать не ранее чем через 50 мс. что связано со временем обработки первого импульса.
  • Echo — цифровой выход. После обработки отраженного сигнала, на этот выход будет подан импульс (логическая единица), длительностью пропорциональной расстоянию до объекта.
  • GND — отрицательный контакт питания (земля).
  • Левый ультразвуковой излучатель (маркирован буквой Т — transmiter) это передатчик ультразвукового сигнала, правый ультразвуковой излучатель (маркирован буквой R — resiver) это приемник отраженного от объекта ультразвукового сигнала (эха).
Добавить комментарий

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

Adblock
detector