Ультразвуковые датчики расстояния характеристики. Ультразвуковой датчик измерения расстояния HC-SR04

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

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

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

Распространение таких колебаний в газообразных, жидких и твердых средах зависит от параметров самой среды. Скорость передачи колебаний для газов равна 200-1300 метров в секунду, для твердых тел 1500-8000 м/с, для жидких веществ 1100-2000 м/с. Значительно зависит скорость колебаний от давления газа.

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

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

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

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

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

Где l — длина стержня, Е — модуль упругости, р - плотность.

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

Обратный эффект состоит в деформации пластины по оси Х. Относительное изменение размера пластины (толщины) равно:
Δa/a=kUx/a
Поперечный эффект состоит в деформации пластины по оси У. Относительное изменение толщины пластины равно:
Δl/l=kUx/a

Размеры пластины не влияют на величину продольной деформации. Поперечная деформация повышается с увеличением отношения l/а. При разности потенциалов до 2500 вольт имеется прямая зависимость деформации и напряжения. При высоких напряжениях деформация повышается не так интенсивно. Амплитуда колебаний доходит до наибольшего значения, когда частота напряжения и частота колебаний пластины совпадают.

Частота продольных колебаний вычисляется:

Модуль упругости определяется по оси Х. Модуль упругости по оси У влияет на частоту поперечных колебаний:

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

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

Рис 1

Ультразвуковые датчики в момент времени Т 0 излучают сигнал (некоторый набор импульсов) длительностью ∆t, распространяющийся в среде со звуковой скоростью С. При достижении объекта сигналом, часть его отражается и возвращается в приемник за время Т 1 . Схема электронного устройства, предназначенная для обработки сигнала, определяет расстояние, вычисляя время Т 1 — Т 0 .

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

Ультразвуковые датчики с одной головкой

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

Мертвое время вынуждает ультразвуковые датчики работать в «слепой зоне». Другими словами, когда объект расположен очень близко, то отраженный сигнал возвращается в измерительную головку настолько быстро, что она еще не перестроилась на работу приема, вследствие чего объект не обнаруживается.

Рис 2

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

На рисунке 2 изображена схема функционирования датчика непосредственного обнаружения. С помощью импульса запуска схема возбуждения излучателя становится активной. Она формирует некоторый набор импульсов. Тем же импульсом запуска производится блокировка входа усилителя приемника. При отключении излучателя происходит разблокировка приемника.

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

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

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

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

Ультразвуковые датчики с двумя головками

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

Отслеживание порога

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

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

Это заставляет найти компромисс между точностью измерения, ложной тревоги и чувствительностью обнаружения. На рисунке 3 показан способ отслеживания порога обнаружения.

Рис 3

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

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

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

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

Интервал зондирования – это интервал расстояния обнаружения, который определяется только возможностями датчика в виде направленности и мощности луча, а также свойствами объекта.

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

Является ультразвуковым датчиком расстояния - дальномером. Принцип работы датчика очень похож на работу сенсоров летучих мышей или дельфинов. Датчик излучает пакет звуковых импульсов на ультразвуковой частоте. Отраженные от препятствий звуковые волны возвращаются обратно к датчику. Микрофон датчика улавливает первый пришедший импульс. По времени прохождения импульса можно вычислить расстояние до препятствия. Ультразвук не слышен человеческим ухом, по этому датчик не производит никаких слышимых шумов. Исходя из принципа работы можно определить основные особенности измерения расстояния таким датчиком. Во первых, датчик измеряет расстояние в определенном секторе пространства перед собой, равный 15 градусам, и любой предмет, помещенный в этот сектор, способен отразить звуковую волну. Если предмет достаточно маленький, то мощности отраженной волны может не хватить для определения расстояния до такого предмета, и он становится «не видим» для датчика. Некоторые поверхности, если они расположены под углом к датчику, отражают звуковые волны в сторону, как зеркало. В этом случае датчик так же может давать ложные данные.

Датчик HC-SR04 имеет два контакта для подключения к микроконтроллеру: TRIG и ECHO. Для начала процесса измерения необходимо на вход TRIG подать сигнал высокого уровня длительностью 10 мкс. Датчик излучит в пространство серию ультразвуковых импульсов. После приема отраженного сигнала, датчик формирует на выводе ECHO импульс высокого уровня, длительность которого пропорционально расстоянию до преграды (150мкс-25мс). После одного цикла работы датчика, волны продолжают распространяться по помещению и отражаться. Если в этот момент снова активизировать измерение, вполне вероятно, что сенсор датчика зафиксирует отраженные волны от предыдущей серии импульсов и результат измерения будет не верным.


Для пересчета в длины импульса в расстояние используется формула:
S=F/58,
где:
S - дистанция в сантиметрах,
F - длительность импульса ECHO в микросекундах.

На рисунке приведен один из возможных вариантов подключения дальномера HC-SR04 к Ардуино. Контакт TRIG дальномера подключен к Pin 9, контакт ECHO к Pin 8. Дальномер запитан от напряжения питания 5 вольт, взятое с платы Arduino.

Для работы с дальномером HC-SR04 c Arduino удобно использовать функцию pulseIn. При помощи этой функции меряется длительность импульса на контакте ECHO. Ниже приведен пример программы для Arduino, которая опрашивает дальномер HC-SR04 и передает измеренное значение в сантиметрах в последовательный порт. Данные из последовательного порта считываем монитором, входящим в комплект программы IDE Arduino.

#define Trig 9
#define Echo 8

Void setup()
{
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
Serial.begin(9600);
}

Void loop()
{
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
unsigned int impulse=pulseIn(Echo, HIGH);
unsigned int distance=impulse/58;
Serial.println(distance);
delay(1000);

Статья посвящена ультразвуковому датчику расстояния HC–SR04.

Объясняется принцип его действия, технические характеристики, приведен пример его подключения к Arduino и программы для прошивки микроконтроллера.

Описание HC-SR04

Ультразвуковой датчик расстояния - модуль HC-SR04 использует акустическое излучение для определения расстояния до объекта. Этот бесконтактный датчик обеспечивает высокую точность и стабильность измерений. Диапазон измерений составляет: от 2 см до 400 см. На показания датчика практически не влияют солнечное излучение и электромагнитные шумы. Модуль продается в комплекте с трансмиттером и ресивером.

Технические характеристики HC-SR04

  • Напряжение питания: +5В – постоянный ток;
  • Сила тока покоя: < 2 мА;
  • Рабочая сила тока: 15 мА;
  • Эффективный рабочий угол: < 15°;
  • Расстояние измерений: от 2 см до 400 см (1 – 13 дюймов);
  • Разрешающая способность: 0.3 см;
  • Угол измерений: 30 градусов;
  • Ширина импульса триггера: 10 микросекунд;
  • Размеры: 45 мм x 20 мм x 15 мм.

Общий вид датчика HC-SR04

  • VCC: +5 вольт (постоянный ток)
  • Trig: Триггер (INPUT)
  • Echo: Эхо (OUTPUT)
  • GND: Земля

Подключение датчика HC–SR04 к Arduino

В данном примере ультразвуковой датчик HC–SR04 определяет расстояние и выводит полученные значения в окно серийного монитора в среде Arduino IDE. Проект несложный.

Основная цель данного примера – помочь вам понять принцип действия датчика для дальнейшего использования в более комплексных проектах.

Небольшое примечание: в свободном доступе существует отличная библиотека NewPing , которая еще больше облегчает использование HC–SR04, пример ее использование тоже приведен ниже.

Схема подключения HC–SR04 к Arduino

Программа для Arduino

/*Ультразвуковой датчик расстояния и Arduino – полный гайд

Распиновка ультразвукового датчика расстояния:

Trig: Триггер (INPUT) – 11 пин

Echo: Эхо (OUTPUT) – 12 пин

int trigPin = 11; //Триггер – зеленый проводник

int echoPin = 12; //Эхо – желтый проводник

long duration, cm, inches;

//Serial Port begin

Serial.begin (9600);

//Инициализирум входы и выходы

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

// Датчик срабатывает и генерирует импульсы шириной 10 мкс или больше

// Генерируем короткий LOW импульс, чтобы обеспечить «чистый» импульс HIGH:

digitalWrite(trigPin, LOW);

delayMicroseconds(5);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

// Считываем данные с ультразвукового датчика: значение HIGH, которое

// зависит от длительности (в микросекундах) между отправкой

// акустической волны и ее обратном приеме на эхолокаторе.

pinMode(echoPin, INPUT);

duration = pulseIn(echoPin, HIGH);

// преобразование времени в расстояние

cm = (duration/2) / 29.1;

inches = (duration/2) / 74;

Serial.print(inches);

Serial.print("in, ");

Serial.print(cm);

Serial.print("cm");

Serial.println();

#include

#define TRIGGER_PIN 12

#define ECHO_PIN 11

#define MAX_DISTANCE 200

Serial.begin(9600);

Serial.print(uS);

Serial.println(“cm”);

Использование библиотеки NewPing

Ниже приведен пример программы с использованием библиотеки NewPing.

#include

#define TRIGGER_PIN 12

#define ECHO_PIN 11

#define MAX_DISTANCE 200

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Настройка пинов и максимального расстояния.

Serial.begin(9600);

unsigned int uS = sonar.ping_cm();

Serial.print(uS);

Serial.println(“cm”);

Необходимые уточнения

Если HC-SR04 не считывает сигнал эхо, выходной сигнал никогда не преобразуется в LOW. Датчики Devantec и Parallax обеспечивают время задержки 36 миллисекунд 28 миллисекунд соответственно. Если вы используете скетч, приведенный выше, программа «зависнет» на 1 секунду. Поэтому желательно указывать параметр задержки.

Датчик HC-SR04 плохо работает при измерении расстояний более 10 футов. Время возврата импульса составляет около 20 миллисекунд, так что рекомендуется в таких случаях выставлять время задержки более 20, напрмер, 25 или 30 миллисекунд.

Можно подключить ультразвуковой датчик расстояния HC-SR04 лишь к одному пину Arduino. Для этого необходимо между пинами Триггера и Эхо установить резистор на 2.2 кОм и подключить к Arduino только пин Триггера.

Подключение ультразвукового датчика расстояния к Arduino с использованием 1 пина!

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

// Скетч с библиотекой NewPing, которая может использоваться и для датчика HC-SR04 и для

//приведенного здесь SRF06 и позволяет подключать ульразвуковые датчики

// с помощью одного пина на Arduino. Можно дополнительно подключить конденсатор на 0.1 мкФ к пинам Эхо и Триггер на датчике.

// К Arduino подключается пин Триггер

#include

#define PING_PIN 12 // Пин с Arduino подключен к пинам trigger и echo на ультразвуковом датчике расстояния

#define MAX_DISTANCE 200 // Максимальное расстояние, которое мы контролируем (в сантиметрах). Максимальное расстояние подобных датчиков находится в диапазоне 400-500см.

NewPing sonar(PING_PIN, PING_PIN, MAX_DISTANCE); // Настройка пинов и максимального расстояния

Serial.begin(115200); // Открытие серийного протокола с частотой передачи данных 115200 бит/сек.

delay(50); // Задержка в 50 миллисекунд между генерацией волн. 29 миллисекунд – минимально допустимая задержка.

unsigned int uS = sonar.ping(); // Генерация сигнала, получение времени в микросекундах (uS).

Serial.print("Ping: ");

Serial.print(uS / US_ROUNDTRIP_CM); // Преобразование времени в расстояние и отображение результата (0 соответствует выходу за допустимый диапазон)

В данное статье рассмотрим принцип работы ультразвукового дальномера HC-SR04.

Принцип работы ультразвукового дальномера основан на испускании ультразвука и его отражения от впереди находящихся предметов. Исходя из времени возвращения звука, по простой формуле, можно рассчитать расстояние до объекта. Дальномер HC-SR04 является самым дешевым дальномером для хоббийного использования. При малой цене обладает хорошими характеристиками, способен измерять расстояние в диапазоне от 2 до 450см.

Используемые компоненты (купить в Китае):

Принцип работы датчика можно условно разделить на 4 этапа:

1. Подаем импульс продолжительностью 10 мкс, на вывод Trig.

2. Внутри дальномера входной импульс преобразуется в 8 импульсов частотой 40 КГц и посылается вперед через "T глазик"

3. Дойдя до препятствия, посланные импульсы отражаются и принимаются "R глазиком". Получаем выходной сигнал на выводе Echo.

4. Непосредственно на стороне контроллера переводим полученный сигнал в расстояние по формуле:

ширина импульса (мкс) / 58= дистанция (см)

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

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

Модуль оборудован четырех-пиновым разъемом стандарта 2.54мм

VCC : "+" питания

TRIG (T) : вывод входного сигнала

ECHO (R) : вывод выходного сигнала (Длина сигнала зависит от расстояния объекта до датчика)

GND : "-" питания

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

пример программного кода:

#define Trig 9 #define Echo 8 #define ledPin 13 void setup //инициируем как выход pinMode (Echo, INPUT ); //инициируем как вход pinMode (ledPin, OUTPUT ); Serial .begin (9600); /* задаем скорость общения. В нашем случае с компьютером */ } unsigned int impulseTime=0; unsigned int distance_sm=0; void loop () { digitalWrite (Trig, HIGH ); /* Подаем импульс на вход trig дальномера */ delayMicroseconds (10); // равный 10 микросекундам digitalWrite (Trig, LOW ); // Отключаем impulseTime=pulseIn (Echo, HIGH ); // Замеряем длину импульса distance_sm=impulseTime/58; Serial .println (distance_sm); // Выводим на порт if (distance_sm<30) // Если расстояние менее 30 сантиметром { digitalWrite (ledPin, HIGH ); // Светодиод горит } else { digitalWrite (ledPin, LOW ); // иначе не горит } delay (100); /* ждем 0.1 секунды, Следующий импульс может быть излучён, только после исчезновения эха от предыдущего. Это время называется периодом цикла (cycle period). Рекомендованный период между импульсами должен быть не менее 50 мс. */ }

Дополнительный пример работы:

Взаимодействие дальномера и сервопривода. Дистанция, измеряемая дальномером преобразуется в угол поворота сервопривода

Пример программного кода

//Тестировалось на Arduino IDE 1.0.1 #include #define coef 10 //(коэффициент соответствия 10 градусов на 1см) #define dead_zone 4 #define max_value 22 #define Trig 9 #define Echo 8 #define ledPin 13 #define servoPin 11 Servo myservo; void setup () { pinMode (Trig, OUTPUT ); //инициируем как выход pinMode (Echo, INPUT ); //инициируем как вход pinMode (ledPin, OUTPUT ); myservo.attach (servoPin); myservo.write (0); } unsigned int impulseTime=0; unsigned int distance_sm=0; void loop () { digitalWrite (Trig, HIGH ); /* Подаем импульс на вход trig дальномера */ delayMicroseconds (10); // равный 10 микросекундам digitalWrite (Trig, LOW ); // Отключаем impulseTime = pulseIn (Echo, HIGH ); // Замеряем длину импульса distance_sm = impulseTime/58; // Пересчитываем в сантиметры if (distance_sm >= dead_zone && distance_sm <= max_value) { myservo.write (coef * (distance_sm - dead_zone)); } else if (distance_sm < dead_zone)// если дистанция менее 4 см, серва в положении ноль градусов { myservo.write (0); } else { myservo.write (180); } delay (100); /* ждем 0.1 секунды, Следующий импульс может быть излучён, только после исчезновения эха от предыдущего. Это время называется периодом цикла (cycle period). Рекомендованный период между импульсами должен быть не менее 50 мс. */ }

Входное напряжение 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

  • T – абсолютная температура воздуха (° К) = t°C + 273,15

Осталось объединить формулы вычисления 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("=================="); }

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


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

Просмотров