СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

«Ультразвуковой датчик расстояния HC-SR04»

Категория: Прочее

Нажмите, чтобы узнать подробности

Данная методическая разработка предназначена для ознакомления учащихся с ультразвуковым дальномером HC-SR04. Содержание методической разработки содержит описание устройства и принципа работы дальномера.

Просмотр содержимого документа
««Ультразвуковой датчик расстояния HC-SR04»»

Муниципальное бюджетное учреждение

дополнительного образования «Станция юных техников»

города Каменск-Шахтинский



Принята на методическом совете

Протокол №______ от «___» _________ 20___г





Ультразвуковой датчик расстояния HC-SR04 Методическая разработка

(Для учащихся 1 года обучения робототехнических объединений учреждений дополнительного образования)

Автор: Барышев Е. В.

педагог дополнительного образования.




2026

Пояснительная записка.

Данная методическая разработка предназначена для ознакомления учащихся с ультразвуковым дальномером HC-SR04. Содержание методической разработки содержит описание устройства и принципа работы дальномера.

Методическая разработка является приложением к образовательной программе «Робототехника» и направлена на достижение следующих целей и задач:

Образовательные:

  • научить основным принципам работы датчика;

  • способствовать формированию знаний и умений в области автоматизации.

Развивающие:

  • способствовать развитию креативности, нестандартного мышления в применении ультразвуковых дальномеров HC-SR04;

  • способствовать развитию творческих способностей, фантазии и эстетического вкуса.

Воспитывающие:

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

  • воспитание чувства взаимоуважения между кружковцами.



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

Действие ультразвукового дальномера HC-SR04 (сонар) основано на принципе эхолокации. Он излучает звуковые импульсы в пространство и принимает отражённый от препятствия сигнал. По времени распространения звуковой волны к препятствию и обратно определяется расстояние до объекта.

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

Принцип действия ультразвукового дальномера HC-SR04

Диапазон измерения расстояния дальномера HC-SR04 – до 4 метров с разрешением 0,3см. Угол наблюдения – 300 -, эффективный угол – 150. Ток потребления в режиме ожидания 2мА, при работе – 15мА.

Подключение датчика расстояния

Питание ультразвукового дальномера напряжением +5В. Два других вывода подключаются к любым цифровым портам Arduino, мы подключим к 11 и 12.

Схема подключения датчика расстояния HC-SR04 к Arduino.

Определение дистанции до объекта с датчика HC-SR04.

Теперь напишем скетч, определяющий расстояние до препятствия и выводящий его в последовательный порт. Сначала задаём номера выводов TRIG и ECHO – это 12 и 11 пины (выводы). Затем объявляем триггер как выход, а эхо – как вход. Инициализируем последовательный порт на скорости 9600 бод. В каждом повторении цикла loop() считываем дистанцию и выводим в порт.

const int trigPin = 12;

const int echoPin = 11;

void setup()

{

pinMode(trigPin, OUTPUT); // триггер - выходной пин

pinMode(echoPin, INPUT); // эхо – входной пин

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

}

void loop()

{

long distance = getDistance(); // получаем дистанцию с датчика

Serial.println(distance); // выводим в последовательный порт

delay(100);

}

long getDistance() // Определение дистанции до объекта в см

{

long distacne_cm = getEchoTiming() * 1.7 * 0.01;

return distacne_cm;

}

long getEchoTiming() // Определение времени задержки

{

digitalWrite(trigPin, LOW);

delayMicroseconds(2);

digitalWrite(trigPin, HIGH); // генерируем импульс запуска

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

// определение на пине echoPin длительности уровня HIGH, мксек:

long duration = pulseIn(echoPin, HIGH);

return duration;

}

Функция getEchoTiming() генерирует импульс запуска. Она как раз создаёт тот 10-микросекундный импульс, который является триггером для начала излучения дальномером звукового пакета в пространство. Далее она запоминает время от начала передачи звуковой волны до прихода эха.

Функция getDistance() рассчитывает дистанцию до объекта. Из школьного курса физики мы помним, что расстояние равно скорость умножить на время: S = V×t Скорость звука в воздухе 340м/сек, время в микросекундах мы знаем (переменная duratuion). Чтобы получить время duratuion в секундах, нужно разделить его на 1000000. Так как звук проходит двойное расстояние – до объекта и обратно – нужно ещё разделить результат пополам. Вот и получается, что расстояние до объекта S = 34000см/сек × duration / 1000000сек / 2 = 1,7см/сек / 100, что мы и написали в скетче.

Операцию умножения микроконтроллер выполняет быстрее, чем операцию деления, поэтому: 100 нужно заменить на эквивалентное ×0,01.

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

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

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

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

Рассмотрим принцип работы с ультразвуковым дальномером на примере со светодиодом.

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

// Скетч для сонара и светодиода

const int Trig = 12; // вывод Trig

const int Echo = 11; // вывод Echo

const int ledPin = 13; // вывод для светодиода на плате Arduino

void setup()

{

pinMode(Trig, OUTPUT);

pinMode(Echo, INPUT);

pinMode(ledPin, OUTPUT);

Serial.begin(9600);

}

unsigned int time_us=0;

unsigned int distance_sm=0;

void loop()

{

digitalWrite(Trig, HIGH); // Подаем сигнал на выход микроконтроллера

delayMicroseconds(10); // Удерживаем 10 микросекунд

digitalWrite(Trig, LOW); // Затем убираем

time_us=pulseIn(Echo, HIGH); // Замеряем длину импульса

distance_sm=time_us/58; // Пересчитываем в сантиметры

Serial.println(distance_sm); // Выводим в порт


if (distance_sm

{

digitalWrite(ledPin, 1); // Зажигаем светодиод

}

else // если нет то:

{

digitalWrite(ledPin, 0); // гасим светодиод

}

delay(100);

}



Еще один пример применения ультразвукового дальномера HC-SR04 в качестве «парктроника»

  • Arduino

  • Ультразвуковой дальномер HC-SR04

  • Светодиоды — 6шт.

  • Резисторы 390Ом — 6шт.

  • Провода папа-папа

  • Пьезодинамик — 1шт.

  • Макетная плата.

На макетной плате размещаем 6 светодиодов. У светодиодов минус будет общим. Катод (короткая ножка) подсоединяем к минусовой шине на макетной плате.

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

По центру устанавливаем ультразвуковой датчик.

Дальномер HC-SR04 имеет 4 вывода:

  • Vcc — питание 5В

  • Echo — выход

  • Trig — вход

  • GND — земля 0В

К ножкам датчика парктроника подключаем провода. Echo будет соединен с 13-м контактом, а Trig с 12-м. GND к земле на плате микроконтроллера, а Vcc соответственно к выводу 5В на Arduino.

Также подключаем провода к ножкам резисторов. И последовательно к пинам Arduino от 2 до 7.

Пьезопищалка имеет два контакта плюс и минус. Отрицательный контакт можно объединить с минусом от ультразвукового дальномера. А положительный, соединить с 11 пином на плате Arduino UNO.

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

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

// скетч для парктроника

#define trigPin 12 // объявление

#define echoPin 13 // переменных

#define led 2 // пины для подключения светодиодов

#define led2 3

#define led3 4

#define led4 5

#define led5 6

#define led6 7

#define buzzer 11 // к 11 пину подключен пьезодинамик

int sound = 250;

void setup()

{

Serial.begin (9600);

pinMode(trigPin, OUTPUT); // настройка портов

pinMode(echoPin, INPUT);

pinMode(led, OUTPUT);

pinMode(led2, OUTPUT);

pinMode(led3, OUTPUT);

pinMode(led4, OUTPUT);

pinMode(led5, OUTPUT);

pinMode(led6, OUTPUT);

pinMode(buzzer, OUTPUT);

}

void loop()

{

long duration, distance;

digitalWrite(trigPin, LOW);

delayMicroseconds(2);

digitalWrite(trigPin, HIGH); // чтобы начать измерения,

delayMicroseconds(10); // на вход trigPin подать высокий сигнал 5В на 10мкс

digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH); // с echo считывается, как долго был открыт порт

distance = (duration/2) / 29.1; // преобразование полученного параметра в дистанцию

if (distance // первое условие, если расстояние меньше либо равно 30,

digitalWrite(led, HIGH); // тогда включить первый светодиод

sound = 250;

}

else

{

digitalWrite(led,LOW); // если условие не выполняется, выключить светодиод

}

if (distance

{

digitalWrite(led2, HIGH);

sound = 260;

}

else

{

digitalWrite(led2, LOW);

}

if (distance

{

digitalWrite(led3, HIGH);

sound = 270;

}

else

{

digitalWrite(led3, LOW);

}

if (distance

{

digitalWrite(led4, HIGH);

sound = 280;

}

else

{

digitalWrite(led4,LOW);

}

if (distance

{

digitalWrite(led5, HIGH);

sound = 290;

}

else

{

digitalWrite(led5,LOW);

}

if (distance

{

digitalWrite(led6, HIGH);

sound = 300;

}

else

{

digitalWrite(led6,LOW);

}

if (distance 30 || distance

{

Serial.println("***");

noTone(buzzer);

}

else

{

Serial.print(distance); // выводит расстояние в сантиметрах

Serial.println(" cm"); // в мониторе последовательного порта

tone(buzzer, sound); // задает соответствующий тон пьезодинамика

}

delay(500); // задержка пол секунды

}





Заключение

На основе ультразвуковых датчиков можно сделать много полезных Arduino проектов. Вместо светодиодной индикации есть возможность использовать LCD, OLED дисплеи или семисегментный индикатор. Если подключить драйвер двигателей, модель робота сможет определять расстояние до препятствия и объезжать его.







13