Упрощаем замеры расстояния: ультразвуковой дальномер на ардуино

Шаг 3: Советы и рекомендации

Вот мой совет. Я знаю, что код работает, но перед тем, как прикреплять файлы к инструкции, я перепроверил всё и серийный монитор стабильно показывал «0 cm». Проблема оказалась в сгоревшем модуле, а его замена исправила ситуацию.

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

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

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

Автоматический (программный) сброс

Для того, чтобы не приходилось каждый раз перед загрузкой программы нажимать кнопку сброс, на плате UNO реализована аппаратная функция сброса, инициируемая с подключенного компьютера. Один из сигналов управления потоком данных (DTR) микросхемы ATmega16U2 подключен к выводу сброса микроконтроллера ATmega328 через конденсатор емкостью 0,1 мкФ.  Когда сигнал DTR переходит в низкое состояние, формируется импульс сброса микроконтроллера. Это решение позволяет загружать программу одним нажатием кнопки из интегрированной среды программирования Arduino (IDE).

Вопрос эксперту

Есть ли недостатки у функции автоматического сброса?

При подключении платы UNO к компьютеру с операционной системой Mac Os X или Linux, микроконтроллер будет сбрасываться при каждом соединении программы с платой. В течение половины секунды на плате UNO будет запущен загрузчик. Несмотря на то, что программа загрузчика игнорирует посторонние данные, она может принять несколько байтов из пакета сразу после установки соединения.

Если в программе на плате Ардуино предусмотрено получение каких-либо данных при первом запуске, необходимо отпралять данные с задержкой примерно на 1 секунду после соединения. На модуле UNO существует дорожка, которую можно перерезать для отключения функции автоматического сброса. Дорожка маркирована надписью ”RESET-EN”. Автоматический сброс также можно запретить, подключив резистор сопротивлением 110 Ом между линией питания 5 В и выводом RESET.

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

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

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

s = v*t

где v — скорость звука в м/с, а t — время в секундах.  Скорость звука в воздухе, кстати, равна 340.29 м/с.

Чтобы справиться со своей задачей, дальномер имеет две важные конструктивные особенности. Во-первых, чтобы звук хорошо отражался от препятствий, датчик испускает ультразвук с частотой 40 кГц. Для этого в датчике имеется пьезокерамический излучатель, который способен генерировать звук такой высокой частоты. Во-вторых, излучатель устроен таким образом, что звук распространяется не во все стороны (как это бывает у обычных динамиков), а в узком направлении. На рисунке представлена диаграмма направленности типичного УЗ дальномера.

Как видно на диаграмме, угол обзора самого простого УЗ дальномера составляет примерно 50-60 градусов. Для типичного варианта использования, когда датчик детектирует препятствия перед собой, такой угол обзора вполне пригоден. Ультразвук сможет обнаружить даже ножку стула, тогда как лазерный дальномер, к примеру, может её не заметить.

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

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

Второй недостаток связан со скоростью звуковой волны. Эта скорость недостаточно высока, чтобы сделать процесс измерения более частым. Допустим, перед роботом есть препятствие на удалении 4 метра. Чтобы звук слетал туда и обратно, потребуется целых 24 мс. Следует 7 раз отмерить, прежде чем ставить УЗ дальномер на летающих роботов.

«Flex Sensor» или по-русски «Датчик Изгиба».

В этом опыте, мы будем использовать Flex Sensor (Датчик изгиба)! В его конструкции используется уголь нанесенный на пластиковую полоску, также как у переменного резистора у него изменяется сопротивление, но вместо поворота ручки, вам достаточно его немного изогнуть, тем самым изменяя сопротивление. Для обнаружения изменения сопротивления, на входе ардуино мы снова, как в предыдущих опытах, используем «делитель напряжения». Наклоняя Датчик в одном направлении он изгибается, и чем больше он изгибается, тем выше становится его сопротивление. Приблизительный интервал изменений сопротивлений от 10 кОм до 35 ком. В этой схеме мы будем использовать «Датчик Изгиба» для контроля положения сервопривода. Приступим:

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

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

Принципиальная схема к уроку №9. Arduino и Датчик Изгиба (Flex Sensor)

Для этого опыта вам понадобится:

1. Arduino UNO — 1 шт.

2. Сервопривод — 1 шт.

3. Датчик Изгиба — 1 шт.

4. Резистор 10 кОм — 1 шт..

5. Соединительные провода.

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

7. При отсутствии Флекс Сенсора — Фоторезистор

Далее идет схема электрических соединений для этого опыта.

Вид схемы электрических соединений к уроку 9. Гибкий Датчик и Arduino

Скачать код к опыту 9. Скетч и подробное описание (Обязательно прочтите весь скетч! Он подробно описан в «Код программы к уроку 9»)

Набор для экспериментов MaxKit 01.
Код программы, на русском языке для опыта №9 можно скачать здесь: lesson_09

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

Arduino и Датчик Изгиба. Урок №9. Проект собранный на макетной плате.

Тоже самое, но уже вместо Датчика Изгиба установлен фоторезистор:

Arduino и Датчик Изгиба. Урок №9. Проект. Замена Датчика Изгиба фоторезистором.

А если не работает?

Такое может случиться с каждым: программа написана, успешно скомпилирована, загружена, но не понятно почему , работает не так как задумано.

У компьютера есть монитор, клавиатура, мышь, с их помощью легко и удобно отлаживать код, но у Arduino подобных аксессуаров нет. Как же быть? Выход — найти особый «ключ», для того чтобы обеспечить видимость состояния выходов микроконтроллера. Этим ключиком может стать практически что угодно — светодиод, зуммер, и пр., но один из самых полезных инструментов Serial Monitor . Используя Serial.print() и println(), вы можете с легкостью вывести, в понятном для человека виде, текст и данные от Arduino, на экран компьютера. Это отличная возможность для проверки и окончательной отладки Вашей программы.

Всем удачи! Ждём от вас комментарии и фотоотчеты о ваших опытах. ARDUINO УРОК 9. ДАТЧИК ИЗГИБА.

2018-09-19T16:59:31+03:00Arduino, Arduino уроки|

Задания

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

  1. Строительный дальномер. Программа каждые 100мс измеряет расстояние с помощью дальномера и выводит результат на символьный ЖК дисплей. Для удобства полученное устройство можно поместить в небольшой корпус и запитать от батареек.
  2. Ультразвуковая трость. Напишем программу, которая будет «пищать» зуммером с различной частотой, в зависимости от измеренного расстояния. Например, если расстояние до препятствия более трех метров — зуммер издает звук раз в пол секунды. При расстоянии 1 метр — раз в 100мс. Менее 10см — пищит постоянно.

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

#define

Trig 8 /* Обозначаем пин подачи импульса*/

#define

Echo 9 /* Обозначаем пин приема импульса*/

void

setup() {

pinMode

(Trig, OUTPUT); /*инициируем как выход */

pinMode

(Echo, INPUT); /*инициируем как вход */

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); /* Выводим значение на порт программы */

delay

(200);

}

После того как вы вставили этот код, загрузите его в программу и включите “монитор порта”.
Там вы увидите расстояние от датчика до препятствия, поэкспериментируйте с изменением расстояния объекта.

Вот что должно у вас получиться!

Надеюсь у вас все получилось! Если у вас остались вопросы,
можете написать нам в

На фотографии не видно, но выходы Trig
и Echo
подключены ко 2 и 3 выходу Arduino соответственно. Ну а VCC
и GND
– 5v и земля.

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

// задаем пины
int echoPin = 2;
int trigPin = 3;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// отключаем подачу импульса
digitalWrite(trigPin, LOW);
}
void loop() {
int duration, cm;
// подаем импульс
digitalWrite(trigPin, HIGH);
// ждем 10 микросекунд
delayMicroseconds(10);
// отключаем подачу импульса
digitalWrite(trigPin, LOW);
// считываем длину сигнала
duration = pulseIn(echoPin, HIGH);
// пересчитываем в сантиметры
Serial.print(duration / 58);
Serial.println(” cm”);
// ждем пол секунды до следующего измерения
delay(500);
}

Подключается по данной схеме

Если запустить его и периодически подносить к нему руку, то в консоли можно увидеть следующие измерения:

Если вам вдруг понадобятся миллиметры или дюймы, то это можно легко исправить, переписав в коде пару строк примерно на следующие:

Но у нас получается слишком много кода, а если нам потребуется подключить 2 таких дальномера? А если 10? В таком случае разработка превратится в рутину, а в случае какой-то ошибки придется менять все сразу.

Именно здесь нам на помощь приходит библиотека Ultrasonic .

Используя ее, весь прошлый код можно написать следующим образом:

Программа

Итак, попробуем приказать датчику отправить зондирующий ультразвуковой импульс, а затем зафиксируем его возвращение. Посмотрим как выглядит временная диаграмма работы HC-SR04.

На диаграмме видно, что для начала измерения нам необходимо сгенерировать на выводе Trig положительный импульс длиной 10 мкс. Вслед за этим, датчик выпустит серию из 8 импульсов и поднимет уровень на выводе Echo, перейдя при этом в режим ожидания отраженного сигнала. Как только дальномер почувствует, что звук вернулся, он завершит положительный импульс на Echo.

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

Функция pulseIn замеряет длину положительного импульса на ноге echoPin в микросекундах. В программе мы записываем время полета звука в переменную duration. Как мы уже выяснили ранее, нам потребуется умножить время на скорость звука:

s = duration * v = duration * 340 м/с

Переводим скорость звука из м/с в см/мкс:

s = duration * 0.034 cм/мкс

Для удобства преобразуем десятичную дробь в обыкновенную:

s = duration * 1/29 = duration / 29

А теперь вспомним, что звук прошел два искомых расстояния: до цели и обратно. Поделим всё на 2:

s = duration / 58

Теперь мы знаем откуда взялось число 58 в программе!

Загружаем программу на Ардуино Уно и открываем монитор  последовательного порта. Попробуем теперь наводить датчик на разные  предметы и смотреть в мониторе рассчитанное расстояние.

Как подключить ультразвуковой датчик к Ардуино

Для этого занятия нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • УЗ дальномер HC-SR04;
  • 1 светодиод и резистор 220 Ом;
  • провода «папа-папа» и «папа-мама».

Схема подключения ультразвукового датчика к Arduino Uno

Схема подключения указана на рисунке выше. Отметим, что ультразвуковой дальномер HC-SR04 имеет диапазон измерения от 2 см до 400 см, работает при температурах от 0° до 60° С. Точность измерения составляет ± 1 см, рабочее напряжение датчика до 5,5 В. Для начала мы используем простой скетч, без использования библиотеки Ultrasonic. После подключения к Arduino дальномера HC-SR04 загрузите следующий скетч:

Скетч для подключения датчика hc-sr04 к Arduino

int trigPin = 8; // назначаем имя для Pin8
int echoPin = 9; // назначаем имя для Pin9
 
void setup() { 
  Serial.begin (9600); // подключаем монитор порта
  pinMode(trigPin, OUTPUT); // назначаем trigPin (Pin8), как выход
  pinMode(echoPin, INPUT); // назначаем echoPin (Pin9), как вход
} 
 
void loop() { 
  int duration, cm; // назначаем переменную "cm" и "duration" для показаний датчика
  digitalWrite(trigPin, LOW); // изначально датчик не посылает сигнал
  delayMicroseconds(2); // ставим задержку в 2 ммикросекунд

  digitalWrite(trigPin, HIGH); // посылаем сигнал
  delayMicroseconds(10); // ставим задержку в 10 микросекунд
  digitalWrite(trigPin, LOW); // выключаем сигнал

  duration = pulseIn(echoPin, HIGH); // включаем прием сигнала

  cm = duration / 58; // вычисляем расстояние в сантиметрах

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

  delay(1000); // ставим паузу в 1 секунду
}

Пояснения к коду:

  1. для подключения выходов Trig и Echo на датчике сонара Ардуино можно использовать любые цифровые входы на микроконтроллере;
  2. чтобы получить значение датчика в миллиметрах следует использовать следующую формулу для расчета: .

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

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

  • Рабочее напряжение 4,8 В до 5,5 В (± 0.2В макс).
  • Диапазон измерения: от 2 см до 400 см.
  • Диапазон рабочих температур: 0 ° С до 60 ° С (± 10%).
  • Ток потребления в режимах ожидания до 2 мА.
  • Ток потребления в режимах работы 15 мА.
  • Ультразвуковой диапазон работы на частоте 40 кГц.
  • Угол обзора 15 градусов.
  • Измеряемое расстояние от 0,03 до 0,6 мс разрешающей способностью 3 мм.
  • От 0,6 до 5 погрешность увеличивается.

Датчик имеет 4 вывода:

  • VCC: “+” питание
  • TRIG (T): вывод входного сигнала
  • ECHO (R): вывод выходного сигнала
  • GND: “-” питание

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

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

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

Также можно использовать датчик US-016, который аналогичен HC-SR04, но имеет аналоговый выход. Если же необходим выход UART, то подойдет модель US-100. Ультразвуковой датчик HC-SR04 довольно дешевый. На AliExpress его можно приобрести за 0,65 €.

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

Номинальный диапазон измерений датчика HC-SR04 составляет от 2 до 400 см. Однако, на практике фактический диапазон измерений является более ограниченным: от 20 см до 2 метров. Характеристики датчика HC-SR04:

  • Рабочее расстояние: 2 см — 400 см;
  • Частота звука: 40 кГц;
  • Эффективный угол: 15º;
  • Напряжение питания: 5 В;
  • Потребляемый ток: 15 мА.

Датчик HC-SR04 имеет два преобразователя: пьезоэлектрический передатчик и приемник. Принцип работы заключается в следующем: передатчик испускает 8 ультразвуковых импульсов на частоте 40 кГц. Звуковые волны распространяются в воздухе и при обнаружении объекта отражаются от него и улавливаются приемником.

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

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

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

Датчик имеет следующие разъемы:

  • Vcc — для подключения цепи +5В.
  • Trig — цифровой вход. На него подается сигнал для начала измерительного цикла. Обычно сигнал логической единицы устанавливают на 10 мкс.
  • Echo — цифровой выход. Когда измерение закончится, на данном выходе появится сигнал логической единицы на время, соответствующее измеренному расстоянию.
  • GND — для подключения цепи -5В.

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

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

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

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


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

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

Сборка в общих чертах

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

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

Какой из предложенных вариантов выбрать, зависит исключительно от вас. Далее делается основная конструкция. Для комфорта работы необходимо два «сустава». Прикреплённый к платформе должен уметь наклоняться в разные стороны, что решается с помощью двигателей, размещённых в его основании. Ещё один или пару следует разместить в месте локтевого изгиба, чтобы часть захвата можно было перемещать по горизонтальной и вертикальной линии системы координат. Далее, при желании получить максимальные возможности, можно установить ещё двигатель в месте запястья. Далее наиболее необходимое, без чего не представляется рука-манипулятор. Своими руками предстоит сделать само устройство захвата. Тут существует множество вариантов реализации. Можно дать наводку по двум самым популярным:

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

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

Что потребуется приобрести для сборки ультразвукового дальномера

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

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

ФОТО: YouTube.comЖидкокристаллический дисплей, на котором будет отображаться информация о расстоянии до объекта

Вторым элементом, который напрямую будет контактировать с дисплеем, отметим I2C модуль (1602) для arduino. По сути, это ЖК-адаптер. Он может продаваться отдельно, хотя намного удобнее приобрести жидкокристаллический дисплей уже в сборе с модулем.

ФОТО: YouTube.comI2C модуль для arduino – здесь он уже впаян на место и готов к работе

Следующий элемент – «глаза» будущего дальномера. В их роли выступает плата ультразвукового дальномера. Она довольно компактна, а потому проблем с размещением её в небольшой коробочке не будет.

ФОТО: YouTube.comУльтразвуковой дальномер – именно он будет собирать и передавать данные о расстоянии к «мозгу» собранного прибора

И наконец, «сердце и мозг» изготавливаемого устройства – сама плата ардуино. В продаже она ещё девственно чиста, поэтому понадобится залить на неё скетч. Ссылка на него обязательно будет в сегодняшней статье.

ФОТО: YouTube.com«Сердце и мозг» собираемого прибора – готовая печатная плата ардуино

Ну, и напоследок ‒ оставшиеся мелочи, необходимые для работы ультразвукового дальномера, среди которых:

  • батарея 9 В, типа «Крона» с коннектором;
  • выключатель;
  • любая пластиковая коробка, в которой поместятся все детали, несколько отрезков проводов.

ФОТО: YouTube.comОстальные мелкие детали, которые понадобятся для работы

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

Ультразвуковой датчик расстояния работает по принципу эхолокации — посылает пучок ультразвука и получает его отражение с некоторой задержкой, с помощью которой и можно высчитать расстояние до объекта. Работает датчик от напряжения в 5V на расстоянии от 2 до 400 сантиметров.

Для получения данных с датчика необходимо:

  • Подать на выход Trig импульс длительностью 10 микросекунд;

  • Трансмиттер отправит 8 импульсов с частотой 40 кГц;

  • Когда импульсы отразятся от препятствия и будут приняты ресивером, то на выходе Echo образуется входной сигнал;

  • С помощью формулы данные преобразуются в расстояние. Чтоб получить расстояние в сантиметрах, нам необходимо разделить ширину импульса на 58, для получения расстояния в дюймах — на 148.

Подключить датчик к плате можно следующим образом:

Схема подключения

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

Для этого проекта нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • самодельный датчик воды;
  • 1 светодиод и резистор на 220 Ом;
  • провода «папа-папа» и «папа-мама».

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

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

Первый код

Для начала установим Arduino IDE с сайта arduino.cc (статья об установке IDE)— это кросс-платформенная бесплатная среда разработки. Теперь, если мы подключим наш Arduino, то сможем попробовать написать первый код на самом простом примере: программе мигания светодиодом. На большинстве Arduino-контроллеров он есть и подключен к пину 13. Кстати, в мире Arduino программы принято называть скетчами. Вот текст скетча с комментариями:

Arduino

// Дадим этому пину имя LED:
const int LED = 13;
void setup() {
// Инициализация цифрового пина
// для вывода:
pinMode(LED, OUTPUT);
}
void loop() {
// Подать уровень логической единицы
// на пин 13 (зажечь светодиод):
digitalWrite(LED, HIGH);
// Приостановить выполнение скетча
// на секунду:
delay(1000);
// Подать уровень логического нуля
// на пин 13 (потушить светодиод):
digitalWrite(LED, LOW);
// Снова приостановить выполнение
// скетча на секунду:
delay(1000);
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

// Дадим этому пину имя LED:

constintLED=13;

voidsetup(){

// Инициализация цифрового пина

// для вывода:

pinMode(LED,OUTPUT);

}

voidloop(){

// Подать уровень логической единицы

// на пин 13 (зажечь светодиод):

digitalWrite(LED,HIGH);

// Приостановить выполнение скетча

// на секунду:

delay(1000);

// Подать уровень логического нуля

// на пин 13 (потушить светодиод):

digitalWrite(LED,LOW);

// Снова приостановить выполнение

// скетча на секунду:

delay(1000);

}

Обрати внимание на функции setup и loop. Они должны присутствовать в любом Arduino-скетче. Setup вызывается единожды при включении или после перезапуска контроллера

Если хочешь, чтобы код выполнялся только один раз, его следует размещать именно здесь. Чаще всего это всевозможные процедуры инициализации чего-либо. Наш скетч не исключение: цифровые пины Arduino могут работать и как входы, и как выходы. В функции setup мы говорим, что пин 13 будет работать как цифровой выход контроллера

Setup вызывается единожды при включении или после перезапуска контроллера. Если хочешь, чтобы код выполнялся только один раз, его следует размещать именно здесь. Чаще всего это всевозможные процедуры инициализации чего-либо. Наш скетч не исключение: цифровые пины Arduino могут работать и как входы, и как выходы. В функции setup мы говорим, что пин 13 будет работать как цифровой выход контроллера.

После того как функция setup завершит свою работу, автоматически запускается замкнутый цикл, внутри которого будет вызываться функция loop. От нас требуется написать, что мы хотим там выполнять. А мы хотим подать на пин 13 уровень логической единицы (5 В), то есть зажечь светодиод, затем подождать одну секунду (1000 в миллисекундах), потом подать уровень логического нуля (0 В) и опять подождать одну секунду. Следующий вызов loop все повторит.

Теперь «заливаем» наш скетч в контроллер. Нет, нам не понадобится программатор. Контроллеры Arduino, кроме наших скетчей, содержат специальную программу — bootloader, которая, в частности, управляет загрузкой кода из компьютера. Так что для заливки скетча нам понадобится только USB-кабель и пункт меню File → Upload (Ctrl + U) в Arduino IDE.

Код нашего Helloworld.

Сфера применения

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

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

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

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

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

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

Поделитесь в социальных сетях:FacebookX
Напишите комментарий