АНАЛИЗ КОДА УЛЬТРАЗВУКОВОГО ДАТЧИКА HC-SR04 - Студенческий научный форум

XIII Международная студенческая научная конференция Студенческий научный форум - 2021

АНАЛИЗ КОДА УЛЬТРАЗВУКОВОГО ДАТЧИКА HC-SR04

Гуркина А.О. 1
1ФГБОУ ВО "Брянский государственный университет имени академика И.Г. Петровского"
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Аннотация: В данной статье рассмотрена библиотека «NewPing», её преимущества перед библиотекой «Ultrasonic» и основные методы. Так же рассмотрен используемый библиотекой конструктор. Приведён пример кода для ультразвукового датчика с использованием этой библиотеки. При первой проверке было невозможно точно сказать о его оптимизации, поэтому для повторного тестирования был использован не стандартный отладчик. В конце статьи представлено формальное описание алгоритма работы программы в виде блок-схемы.

Ключевые слова: библиотека, ультразвуковой датчик, интерфейс, методы, код, алгоритм.

Abstract: This article discusses the NewPing library, its advantages over the Ultrasonic library, and the main methods. The constructor used by the library is also considered. An example of code for an ultrasonic sensor using this library is given. At the first check, it was impossible to say exactly about its optimization, so a non-standard debugger was used for repeated testing. At the end of the article, a formal description of the program's algorithm is presented in the form of a flowchart.

Keywords: library, ultrasonic sensor, interface, methods, code, algorithm.

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

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

«Отказ от ответственности

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

Невозможно гарантировать полную работоспособность чего-либо, а иногда даже и на 50%. Это абсолютно естественно и нормально. Огромным минусом является полное отсутствие технической поддержки, потому что, если возникают какие- либо ошибки, остаётся только искать всевозможную информацию, которая поможет в решении проблемы. К сожалению большая часть статей и форумов не русскоязычные и имеют свою специфическую лексику.

Библиотека «NewPing» имеет свои положительные стороны, которых не так мало, как могло показаться:

Биоэтика поддерживает работу с большинством ультразвуковых датчиков: SR04, SRF05, SRF06, DYPME007, URM37 и Parallax PING.

Она совместима со всей линейкой (, поддерживает даже клоны) Arduino, и микроконтроллерами семейства Teensy и не – AVR.

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

Если даже не был получен эхо-ответ, не отстает ни на секунду.

Библиотека легко обеспечивает стабильную и надежную работу до 30 раз в секунду.

В неё включён метод прерывания по таймеру для упрощения работы с событиями.

Встроенный цифровой метод фильтрации ping_median () для легкой коррекции ошибок.

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

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

Точный расчет расстояния имеет меньшую погрешность.

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

Активно развивается с добавлениями новых функций и устранением ошибок/проблем.

В библиотеке «NewPing» используется 1 конструктор и 11 методов:

КОНСТРУКТОРимеетвид:

NewPing sonar (trigger_pin, echo_pin [, max_cm_distance])

Trigger_pin & echo_pin - контакты Arduino, подключенныектриггерудатчикаиэхо.

ПРИМЕЧАНИЕ.

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

Max_cm_distance - [Дополнительно] Максимальное расстояние, которое нужно задать. По умолчанию = 500cm.

МЕТОДЫ:

ping ([max_cm_distance]) - отправить пинг и получить эхо-ответ в микросекундах, а

[Max_cm_distance] позволяет установить новое максимальное расстояние.

ping_in ([max_cm_distance]) - отправить пинг и получить расстояние в дюймах.

[Max_cm_distance] позволяет установить новое максимальное расстояние.

ping_cm ([max_cm_distance]) - Отправьте пинг и получите расстояние в сантиметрах.

[Max_cm_distance] позволяет установить новое максимальное расстояние.

ping_median (iterations [, max_cm_distance]) - делает несколько пингов (по умолчанию

= 5), так же позволяет отбрасывать пинг из диапазона и возвращать медиану в микросекундах.

NewPing :: convert_in (echoTime) - конвертировать echoTime из микросекунд в дюймы (округление до ближайшего дюйма).

NewPing :: convert_cm (echoTime) - преобразование echoTime из микросекунд в сантиметры (округление до ближайшего cm).

ping_timer (function [, max_cm_distance]) - отправляет функцию ping и call, чтобы проверить, завершена ли команда ping.

check_timer () - проверить, вернулся ли ping в пределах установленного расстояния.

NewPing :: timer_us (частота, функция) - вызов функции c определенной частой микросекунд.

NewPing :: timer_ms (частота, функция) - вызов функции с определенной частатой миллисекунды.

NewPing :: timer_stop () - остановка таймера

Пример кода, используемый в библиотеке «NewPing»

#include <NewPing.h>

#define TRIGGER_PIN 12

#define ECHO_PIN 4

#define MAX_DISTANCE 500

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {

Serial.begin(9600);

}

void loop(){

delay(200);

unsigned int uS = sonar.ping();

Serial.print(“Ping: “);

Serial.print(sonar.convert_cm(uS));

Serial.println(“cm”);

}

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

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

Формальное описание алгоритма:

Рисунок 2. Алгоритм кода, представленный в виде блок-схемы

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

Список литературы

1. ИК-датчик препятствий для роботов-машин YL-63 (FC-51) [сайт].

URL: http://zi-zi.ru/docs/modules/info_FC-51.pdf (16.12.2020)

2. Ультразвуковой датчик HC-SR04 [сайт].

URL: http://arduino-kit.ru/userfiles/image/HC-SR04 _.pdf(17.12.2020)

3. Ультразвуковой датчик расстояния и Arduino [сайт].

URL: http://arduino-diy.com/arduino-ultrazvukovoy-datchik-..(16.12.2020)

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

URL: http://www.jurnal.nips.ru/ (17.12.2020)

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

URL: http://robocraft.ru/blog/electronics/772.html (16.12.2020)

Просмотров работы: 36