Как подключить ультразвуковой дальномер HC-SR04 к Arduino. Практические схемы включения датчиков Библиотека для работы с HC SR04

Новые статьи

● Проект 23: Ультразвуковой датчик расстояния HC-SR04. Принцип работы, подключение, пример

В этом эксперименте мы рассмотрим ультразвуковой датчик для измерения расстояния и создадим проект вывода показаний датчика на экран ЖКИ WH1602.

Необходимые компоненты:

Ультразвуковой дальномер HC-SR04 (рис. 23.1) - это помещенные на одну плату приемник и передатчик ультразвукового сигнала. Излучатель генерирует сигнал, который, отразившись от препятствия, попадает на приемник. Измерив время, за которое сигнал проходит до объекта и обратно, можно оценить расстояние. Кроме самих приемника и передатчика, на плате находится еще и необходимая обвязка, чтобы сделать работу с этим датчиком простой и удобной.

Характеристики ультразвукового дальномера HC-SR04:

Измеряемый диапазон - от 2 до 500 см;
. точность - 0,3 см;
. угол обзора - < 15°;
. напряжение питания - 5 В.

Датчик имеет 4 вывода стандарта 2,54 мм:

VCC - питание +5 В;
. Trig (T) - вывод входного сигнала;
. Echo (R) - вывод выходного сигнала;
. GND - земля.

Последовательность действий для получения данных такова:

Подаем импульс продолжительностью 10 мкс на вывод Trig;
. внутри дальномера входной импульс преобразуется в 8 импульсов частотой 40 кГц и посылается вперед через излучатель T;
. дойдя до препятствия, посланные импульсы отражаются и принимаются приемником R, в результате получаем выходной сигнал на выводе Echo;
. непосредственно на стороне контроллера переводим полученный сигнал в расстояние по формуле:

Ширина импульса (мкс) / 58 = дистанция (см);
-- ширина импульса (мкс) / 148 = дистанция (дюйм).

В нашем эксперименте мы создадим звуковую сигнализацию, которая будет включаться при приближении к плате Arduino на расстояние меньше 1 м. Датчик размещен на кронштейне вращающейся сервы и контролирует пространство с углом обзора 180°. Если датчик обнаруживает объект в радиусе 1 м, подается звуковой сигнал на пьзоизлучатель, вращение сервы прекращается. Схема соединения элементов представлена на рис. 23.2.

Рис. 23.2. Схема соединения элементов для звуковой сигнализации

При написании скетча будем использовать библиотеку Servo для работы с сервоприводом и библиотеку Ultrasonic.
Для работы Arduino с датчиком HC-SR04 имеется готовая библиотека - Ultrasonic.
Конструктор Ultrasonic принимает два параметра: номера пинов, к которым подключены выводы Trig и Echo, соответственно:

Ultrasonic ultrasonic(12,13);

Содержимое скетча показано в листинге 23.1.

#include // подключение библиотеки Servo Servo servo1; const int pinServo=8 ; // пин для подключения сервопривода int pos = 0 ; // переменная для хранения позиции сервопривода int dir =1 ; // направление перемещения сервопривода // Выводы для подключения HC-SR04 Trig - 12, Echo - 13 Ultrasonic ultrasonic (12 , 13 ) ; float dist_cm; // переменная для дистанции, см // подключить динамик к pin 9 int speakerPin = 9 ; void setup () { // подключить переменную servo1 к выводу pinServo1 servo1.attach(pinServo1); pinMode(speakerPin, OUTPUT); } void loop () { servo1.write(pos); // поворот сервоприводов на полученный угол delay(15 ); // пауза для ожидания поворота сервоприводов float dist_cm = ultrasonic.Ranging(CM); if (dist_cm<100 && dist_cm>20 ) tone(speakerPin,); // включить пьезозуммер else { tone(speakerPin,0 ); // отключить пьезозуммер pos=pos+dir; // изменение переменной положения сервопривода if (pos==0 || pos==180 ) dir=dir*(-1 ); // изменение направления движения } }
Порядок подключения:

1. Закрепляем датчик расстояния HC-SR04 на сервоприводе.
2. Подключаем датчик HC-SR04, пьезозуммер и сервопривод к плате Arduino по схеме на рис. 23.2.
3. Загружаем в плату Arduino скетч из листинга 23.1.
4. Наблюдаем за циклическим перемещением сервопривода, при попадании объекта в поле зрения датчика HC-SR04 пьезозуммер издает сигнал, сервопривод останавливается, при исчезновении объекта из поля зрения датчика сервопривод возобновляет движение.

Листинги программ

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

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

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

Разрешающая способность

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

Пример:

Simatic PXS 3RG6014- (от 60 до 600 см)

При дальности действия от 60 до 600 см разрешающая способность получается равной 1,3 мм:

6000 мм - 600 мм = 5400 мм 5400 мм/4096 = 1,3 мм (12 бит)

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

Температурная компенсация

Для компенсации изменений расстояния срабатывания из-за колебаний температуры датчики Simatic PXS типоряда компактных моделей II, III и М 18, а также модульного типоряда II снабжены датчиками температуры и схемой компенсации.

Компенсация действует во всем диапазоне температур. За счет этого достигается абсолютная точность +/- 1,5 % (типоряд II и III) и, соответственно, +/- 2,5 % (типоряд М 18).

Датчики BERO с коммутирующим выходом

Датчики Simatic PXS с коммутирующим выходом, в зависимости от типа, могут использоваться в следующих режимах:

Только излучатель, только приемник

Для этого режима используются два датчика Simatic PXS. Один параметрируется как приемник, другой как излучатель. Имеются две возможности применения:

  • УЗ-барьер однонаправленного действия:
    Определяется только наличие объекта между датчиками. Дальность действия удваивается. В этом случае настройка коммутационной зоны и обработка сигнала аналогового выхода являются излишними.
  • Активная измерительная система:
    Измеряется время прохождения ультразвука от излучателя до приемника. Для этого деблокирующие входы обоих датчиков должны быть связаны друг с другом. Все возможности применения сохраняются; дальность действия удваивается.

Излучатель и приемник

Это нормальный режим работы датчика Simatic PXS; он работает как классический сенсорный выключатель.

  • Датчик отражающего действия:
    При датчике отражающего действия объект, который должен быть обнаружен, действует как отражатель. Когда объект находится в установленной коммутационной зоне, эхо от этого предмета вызывает срабатывание.
  • Барьер отражающего действия:
    При работе в качестве барьера отражающего действия против устанавливается фиксированный отражатель (например, маленькая металлическая пластинка). Коммутационная зона настраивается под этот отражатель. При пересечении объектом промежутка между Simatic PXS и отражателем датчик перестает «видеть» отражатель, что вызывает изменение сигнала на коммутирующем выходе.

Синхронизация

Несколько датчиков компактных типорядов II, III и М18 могут быть синхронизированы друг с другом путем соединения только их выходов синхронизации (контакт 2 при функции замыкающего контакта, контакт 4 при функции размыкающего контакта). Можно синхронизировать до 10 приборов (до 6 приборов компактной модели 0). Благодаря этому во многих случаях становится возможной установка датчиков очень близко друг к другу без их взаимного влияния.

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

  • Не требуется дополнительной электропроводки, необходимо только соединение деблокирующих выходов отдельных Simatic PXS.
  • Быстрота реакции, поскольку каждый Simatic PXS постоянно активен.

Недостатки

  • Объект нельзя присвоить определенному Simatic PXS.

Пример

Два датчика Simatic PXS смонтированы на расстоянии е, которое меньше минимального (см. инструкции по монтажу). Объект находится в их общей коммутационной зоне. Эхо от B2 может путем отражения попасть на B1 (GB). Поэтому может иметь место взаимное влияние. Объект захватывается обоими эхо E1 и E2 от датчиков Simatic PXS B1 и B2. Благодаря синхронизации можно добиться, чтобы оба прибора перестали влиять друг на друга, так, например, эхо E1 приходит на BERO B2 только после E2. Приборы всегда реагируют только на первое эхо.


Мультиплексная функция

Внешний мультиплексный режим

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

Контакт деблокирующего входа:

  • Simatic PXS активен, деблокирующий вход XI на L+ или открыт.
  • Simatic PXS не активен, деблокирующий вход XI на DC от 0 до 3 В

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

  • Надежная защита от взаимного влияния.
  • Объект можно присвоить определенному Simatic PXS.

Недостатки

  • Дополнительное усложнение схемы (например, появление программируемого контроллера).
  • Большее время реакции, чем в схеме с синхронизацией, поскольку каждый Simatic PXS активен лишь короткое время и затем должен ожидать, пока все другие Simatic PXS в системе выдадут излучение.

Пример: обнаружение узких объектов

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


В этом примере эхо GB может имитировать на датчике B1 наличие реального объекта. Здесь синхронизация помочь не может, так как эховый импульс Е2 приходит на B1 только после GB, a датчик всегда регистрирует только первое эхо. В этом примере необходимо, чтобы программируемый контроллер циклически включал и отключал оба датчика.

Внутренний мультиплексный режим

Датчики Simatic PXS компактных типорядов III, III и М 18 могут объединяться в группу. При этом последовательно и параллельно (см. "Синхронизация") можно включать до 10 приборов (до 6 приборов компактного типоряда 0). Для этого не нужно никакой дополнительной электроники. Следует только соединить вместе деблокирующие входы всех датчиков в группе. При программировании каждому прибору задается количество датчиков в группе, а также его позиция (адрес) в группе. После соединения и подключения напряжения питания датчики автоматически работают в мультиплексном режиме.

Программатор SONPROG

Программатор SONPROG 3RX4 000 используется для адаптации на месте рабочих параметров датчиков Simatic PXS компактных типорядов II, III и М 18 к местным условиям. Эта программа предоставляет интерфейс, с помощью которого можно:

  • проверять параметры датчика Simatic PXS
  • изменять параметры датчика Simatic PXS
  • адаптировать датчик Simatic PXS к конкретному применению.

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

К важнейшим настраиваемым параметрам относятся:

  • начало и конец коммутационной зоны
  • гистерезис
  • функция коммутационного элемента (замыкающий или размыкающий)
  • частота коммутации
  • начало и конец аналоговой характеристики (только компактные типоряды III и М 18)
  • аналоговая характеристика нарастающая или падающая
  • конец слепой зоны
  • конец дальности действия
  • формирование среднего значения
  • затухание

Кроме того, может быть задана функция датчика:

  • мультиплексная функция
  • температурная компенсация
  • функция кнопки или УЗ-барьера.

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

Подстройка с потенциометрами

Для выбора требуемых пределов диапазона срабатывания (мин. или макс.) используются потенциометры.

Входное напряжение 5 В постоянного тока, подаётся на выводы Vcc и GND датчика.

Подробнее о датчике:

Если подать положительный импульс на вход датчика TRIG длительностью 10 мкс, то датчик отправит звуковую волну (8 импульсов на частоте 40 кГц - ультразвук) и установит уровень логической «1» на выходе ECHO. Звуковая волна отразится от препятствия и вернётся на приёмник датчика, после чего он сбросит уровень на выходе ECHO в логический «0» (то же самое датчик сделает, если звуковая волна не вернётся в течении 38 мс.) В результате время наличия логической «1» на выходе ECHO равно времени прохождения ультразвуковой волны от датчика до препятствия и обратно. Зная скорость распространения звуковой волны в воздухе и время наличия логической «1» на выводе ECHO, можно рассчитать расстояние до препятствия.


Расстояние вычисляется умножением скорости на время (в данном случае скорости распространения звуковой волны V , на время ожидания эха Echo ). Но так звуковая волна проходит расстояние от датчика до объекта и обратно, а нам нужно только до объекта, то результат делим на 2:

L = V * Echo / 2

  • L – расстояние (м);
  • V – скорость звука в воздухе (м/с);
  • Echo – время ожидания эха (с).

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

V 2 = γ R T / M

  • V – скорость звука в воздухе (м/с)
  • γ – показатель адиабаты воздуха (ед.) = 7/5
  • R – универсальная газовая постоянная (Дж/моль*K) = 8,3144598(48)
  • T ° К) = t°C + 273,15
  • M – молекулярная масса воздуха (г/моль) = 28,98

Подставив в формулу известные значения γ , R , M , получим:

V ≈ 20,042 √T

Осталось объединить формулы вычисления V и L , и перевести L из м в см, Echo из с в мкс, T из °К в °C, получим:

L ≈ Echo √(t+273,15) / 1000

  • L – расстояние (см)
  • Echo – время ожидания эха (мкс)
  • t – температура воздуха (°C)

iarduino_HC_SR04 и iarduino_HC_SR04_int , синтаксис обеих библиотек одинаков. Они сами рассчитывают все значения и возвращают только расстояние в см. Температура по умолчанию установлена в 23°C, но её можно указывать. Работа с библиотеками и их функции описаны ниже.

Для работы с датчиком, нами разработаны две библиотеки iarduino_HC_SR04 и iarduino_HC_SR04_int , синтаксис обеих библиотек одинаков.

  • Преимуществом библиотеки iarduino_HC_SR04 является то, что датчики можно подключать к любым выводам Arduino , а недостаток заключается в том, что библиотека ждёт ответа от датчика, который может длиться до 38 мс.
  • Преимуществом библиотеки iarduino_HC_SR04_int является то, что она не ждёт ответа от датчиков (не приостанавливает выполнение скетча), но выводы ECHO датчиков нужно подключать только к тем выводам Arduino , которые используют внешние прерывания.

Подробнее про установку библиотеки читайте в нашей .

Примеры:

Определение расстояния с использованием библиотеки iarduino_HC_SR04:

#include // Подключаем библиотеку iarduino_HC_SR04 sensor(2,3); // Объявляем объект sensor, указывая номера arduino подключенные к выводам TRIG и ECHO датчика // Можно использовать любые выводы Arduino void setup(){ Serial.begin(9600); // Инициализация передачи данных в монитор последовательного порта } void loop(){ delay(500); // Задержка 0,5 сек Serial.println(sensor.distance()); // Вывод расстояния (см) при температуре воздуха, около +23 °C Serial.println(sensor.distance(-20)); // Вывод расстояния (см) при температуре воздуха, около -20 °C Serial.println("=================="); }

Определение расстояния с использованием библиотеки iarduino_HC_SR04_int:

#include // Подключаем библиотеку iarduino_HC_SR04_int sensor(2,3); // Объявляем объект sensor, указывая номера arduino подключенные к выводам TRIG и ECHO датчика // (вывод ECHO нужно подключить к выводу Arduino использующему внешнее прерывание) void setup(){ Serial.begin(9600); // Инициализация передачи данных в монитор последовательного порта } void loop(){ delay(500); // Задержка 0,5 сек Serial.println(sensor.distance()); // Вывод расстояния (см) при температуре воздуха, около +23 °C Serial.println(sensor.distance(-20)); // Вывод расстояния (см) при температуре воздуха, около -20 °C Serial.println("=================="); }

Результат работы обоих примеров:


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

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

Принцип активации (работы) датчиков при этом может быть любым – индуктивные (приближения), оптические (фотоэлектрические), и т.д.

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

Схемы подключения датчиков PNP и NPN

Отличие PNP и NPN датчиков в том, что они коммутируют разные полюсы источника питания. PNP (от слова “Positive”) коммутирует положительный выход источника питания, NPN – отрицательный.

Ниже для примера даны схемы подключения датчиков с транзисторным выходом. Нагрузка – как правило, это вход контроллера.

Датчика. Нагрузка (Load) постоянно подключена к “минусу” (0V), подача дискретной “1” (+V) коммутируется транзистором. НО или НЗ датчик – зависит от схемы управления (Main circuit)

Датчика. Нагрузка (Load) постоянно подключена к “плюсу” (+V). Здесь активный уровень (дискретный “1”) на выходе датчика – низкий (0V), при этом на нагрузку подается питание через открывшийся транзистор.

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

На схемах ниже показано в принципе то же самое. Акцент уделён на отличия в схемах PNP и NPN выходов.

Схемы подключения NPN и PNP выходов датчиков

На левом рисунке – датчик с выходным транзистором NPN . Коммутируется общий провод, который в данном случае – отрицательный провод источника питания.

Справа – случай с транзистором PNP на выходе. Этот случай – наиболее частый, так как в современной электронике принято отрицательный провод источника питания делать общим, а входы контроллеров и других регистрирующих устройств активировать положительным потенциалом.

Как проверить индуктивный датчик?

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

Замена датчиков

Как я уже писал, есть принципиально 4 вида датчиков с транзисторным выходом, которые подразделяются по внутреннему устройству и схеме включения:

  • PNP NO
  • PNP NC
  • NPN NO
  • NPN NC

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

Это реализуется такими способами:

  • Переделка устройства инициации – механически меняется конструкция.
  • Изменение имеющейся схемы включения датчика.
  • Переключение типа выхода датчика (если имеются такие переключатели на корпусе датчика).
  • Перепрограммирование программы – изменение активного уровня данного входа, изменение алгоритма программы.

Ниже приведён пример, как можно заменить датчик PNP на NPN, изменив схему подключения:

PNP-NPN схемы взаимозаменяемости. Слева – исходная схема, справа – переделанная.

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

А что там свежего в группе ВК СамЭлектрик.ру ?

Подписывайся, и читай статью дальше:

Итак, схема слева. Предположим, что тип датчика – НО. Тогда (независимо от типа транзистора на выходе), когда датчик не активен, его выходные “контакты” разомкнуты, и ток через них не протекает. Когда датчик активен, контакты замкнуты, со всеми вытекающими последствиями. Точнее, с протекающим током через эти контакты)). Протекающий ток создает падение напряжения на нагрузке.

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

Если внутренней нагрузки в датчике нет, и коллектор “висит в воздухе”, то это называют “схема с открытым коллектором”. Эта схема работает ТОЛЬКО с подключенной нагрузкой.

Так вот, в схеме с PNP выходом при активации напряжение (+V) через открытый транзистор поступает на вход контроллера, и он активизируется. Как того же добиться с выходом NPN?

Бывают ситуации, когда нужного датчика нет под рукой, а станок должен работать “прям щас”.

Смотрим на изменения в схеме справа. Прежде всего, обеспечен режим работы выходного транзистора датчика. Для этого в схему добавлен дополнительный резистор, его сопротивление обычно порядка 5,1 – 10 кОм. Теперь, когда датчик не активен, через дополнительный резистор напряжение (+V) поступает на вход контроллера, и вход контроллера активизируется. Когда датчик активен – на входе контроллера дискретный “0”, поскольку вход контроллера шунтируется открытым NPN транзистором, и почти весь ток дополнительного резистора проходит через этот транзистор.

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

Да, не совсем то, что мы хотели, и схемы взаимозаменяемости npn и pnp датчиков не всегда приемлемы.

Как добиться полного функционала? Способ 1 – механически сдвинуть либо переделать металлическую пластинку (активатор). Либо световой промежуток, если речь идёт об оптическом датчике. Способ 2 – перепрограммировать вход контроллера чтобы дискретный “0” был активным состоянием контроллера, а “1” – пассивным. Если под рукой есть ноутбук, то второй способ и быстрее, и проще.

Условное обозначение датчика приближения

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

НО НЗ датчики. Принципиальные схемы.

На верхней схеме – нормально открытый (НО) контакт (условно обозначен PNP транзистор). Вторая схема – нормально закрытый, и третья схема – оба контакта в одном корпусе.

Цветовая маркировка выводов датчиков

Существует стандартная система маркировки датчиков. Все производители в настоящее время придерживаются её.

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

Вот эта маркировка.

  • Синий (Blue) – Минус питания
  • Коричневый (Brown) – Плюс
  • Чёрный (Black) – Выход
  • Белый (White) – второй выход, или вход управления, надо смотреть инструкцию.

Система обозначений индуктивных датчиков

Тип датчика обозначается цифро-буквенным кодом, в котором зашифрованы основные параметры датчика. Ниже приведена система маркировки популярных датчиков Autonics. / Каталог датчиков приближения Omron, pdf, 1.14 MB, скачан:1282 раз./

/ Чем можно заменить датчики ТЕКО, pdf, 179.92 kB, скачан:1032 раз./

/ Датчики фирмы Turck, pdf, 4.13 MB, скачан:1362 раз./

/ Схема включения датчиков по схемам PNP и NPN в программе Splan/ Исходный файл., rar, 2.18 kB, скачан:2216 раз./

Реальные датчики

Датчики купить проблематично, товар специфический, и в магазинах электрики такие не продают. Как вариант, их можно купить в Китае, на АлиЭкспрессе.

А вот какие я встречаю в своей работе.

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

Просмотров