Измерение расстояния с помощью Arduino и ультразвукового датчика
Проект ультразвукового измерения расстояния с использованием Arduino
Ультразвуковое измерение расстояния в последнее время стало полезным инструментом в различных приложениях. Его можно использовать в различных приложениях, таких как позиционирование, определение местоположения, определение размеров, выбор, измерение уровня, управление и профилирование. Выполнив некоторые математические вычисления с выходными значениями, мы также можем измерить скорость и различные другие физические параметры. Устройство также имеет приложения в области робототехники.
Таким образом, имея в виду эти приложения, ультразвуковой датчик является отличным инструментом для измерения расстояний без физического контакта на небольших расстояниях. Они используют концепцию ECHO для измерения расстояния. В этом проекте мы научимся измерять расстояние, соединив модуль датчика HC-SR04 с Arduino и отобразив расстояние на ЖК-дисплее 16×2.
- Публикация по теме: Регулируемый источник питания с использованием Arduino UNO — схема и код
Схема проекта измерения расстояний
Интерфейс очень прост. Вам просто нужно следовать схеме. Итак, во-первых, контакты Trig и Echo ультразвукового датчика подключены к A4 и A5 Arduino UNO, а VCC и GND подключены к 5V и GND Arduino.
Теперь мы собираемся отобразить расстояние на ЖК-дисплее 16×2, который подключен к Arduino. Подключите контакты RS и EN к цифровым контактам 12 и 11 платы Arduino соответственно. Теперь подключите D4-D7 ЖК-дисплея к цифровому контакту 5-2 Arduino. Мы также подключили потенциометр 10K для управления контрастностью ЖК-дисплея, как показано на принципиальной схеме.
- Публикация по теме: Автоматический дверной звонок с обнаружением объектов с помощью Arduino
Необходимые компоненты
- Модуль ультразвукового датчика HC-SR04
- Ардуино УНО
- ЖК-экран 16 × 2
- Потенциометр
- Перемычки и соединительные провода
Модуль ультразвукового датчика
Здесь используется сенсорный модуль HC-SR04. , который представляет собой бесконтактный ультразвуковой измерительный прибор. Этот небольшой модуль способен измерять расстояние в диапазоне от 2 см до 400 см. Это действительно точный датчик, он может измерять до 3 мм.
Датчик состоит из ультразвукового передатчика и ультразвукового приемника. Принцип работы действительно прост. Во-первых, триггер ввода-вывода отправляет сигнал высокого уровня в течение 10 мкс. Затем сенсорный модуль отправляет восемь циклов ультразвукового звука частотой 40 кГц и определяет, получен ли импульсный сигнал обратно или нет. И если сигнал получен через высокий уровень, продолжительность времени, в течение которого триггер ввода-вывода остается высоким, — это время от отправки до получения сигнала.
Расстояние =(время высокого уровня x скорость звука в воздухе (340 м/с))/2
- Публикация по теме: Автоматическая ночная лампа с использованием Arduino
Временная диаграмма
Как обсуждалось выше, модуль работает с ЭХО звука. Для срабатывания модуля подается импульс длительностью около 10 мкс. После этого модуль посылает восемь циклов ультразвука частотой 40 кГц и проверяет его отражение. Таким образом, если есть какое-либо препятствие, то сигнал сталкивается с ним и возвращается обратно к приемнику. А теперь расстояние рассчитывается по простой формуле, рассмотренной выше. Мы разделили его на 2, потому что это время — это общее время, необходимое для достижения препятствия и возврата к приемнику, поэтому время, необходимое для достижения препятствия, составляет половину общего времени. Временная диаграмма этого датчика приведена ниже:
Технические характеристики
- Рабочее напряжение:5 В.
- Рабочий ток:15 мА
- Рабочая частота:40 Гц.
- Угол измерения:15°
- Диапазон:от 2 см до 400 см.
Выводы ультразвукового датчика HC-SR04
- VCC:источник питания модуля (обычно +5 В).
- Триггер:используется для запуска модуля.
- Эхо:Это контакт o/p. Он остается высоким, пока сигнал идет от передатчика к препятствию, а затем возвращается обратно к приемнику.
- GND:подключен к земле главной цепи.
Как было сказано выше, модуль работает по принципу ЭХО звука. Итак, когда мы подключаем модуль к любому микроконтроллеру, то сначала модуль срабатывает через вывод Trig и отправляется импульс высокого уровня в течение 10 мкс. Затем ждем получения ECHO. Микроконтроллер может вычислять время. А затем расстояние рассчитывается по приведенной выше формуле.
- Публикация по теме: Что такое Crowbar Circuit? Дизайн и работа
Arduino UNO
Arduino — это микроконтроллер с открытым исходным кодом, который широко используется во многих небольших и крупных встраиваемых проектах. Arduino, который используется в этом проекте, называется Arduino-UNO. Причина использования этого Arduino в том, что он дешевле и прост в интерфейсе. На плате имеется 14 цифровых контактов ввода-вывода и 6 аналоговых контактов. Микроконтроллер имеет открытый исходный код, поэтому все зависит от пользователя, как он хочет его использовать. Вы можете изменить плату и программное обеспечение в соответствии с потребностями.
- Публикация по теме: Простая схема защиты от перенапряжения с использованием стабилитрона
ЖК-модуль 16 × 2
Эти модули обычно используются во многих местах во встраиваемых проектах, потому что они дешевле и их легко взаимодействовать с микроконтроллерами. Вы могли видеть этот тип дисплея в калькуляторах, мустиметрах и т. д. Используемый здесь ЖК-модуль может отображать 16 символов в строке, и он имеет две строки. Итак, в основном он имеет 16 столбцов и 2 строки. Каждый отображаемый символ состоит из пикселей 5×8 (пиксельная матрица).
Если подсчитать общее количество пикселей на всем ЖК-дисплее, получится 5x8x16x2=1280 пикселей. Что является большим числом. Теперь, чтобы отобразить что-то на ЖК-дисплее, нам также нужно указать положение символов. Таким образом, это действительно трудно сделать. Таким образом, для правильной работы используется микросхема с именем HD44780. Эта ИС получает данные и команды от микроконтроллера, а затем выполняет некоторую обработку, чтобы желаемый вывод можно было распечатать на ЖК-дисплее. Эта микросхема делает взаимодействие с ЖК-дисплеем очень простым. Мы можем использовать ЖК-дисплей во многих наших проектах для отображения выходных данных с датчиков или любых других модулей. Давайте взглянем на некоторые технические характеристики ЖК-модуля.
- Публикация по теме: Схема преобразователя с 12 В на 5 В
- Рабочее напряжение:от 4,7 В до 5,3 В.
- Потребляемый ток:1 мА без подсветки.
- 2 строки по 16 символов в каждой.
- Каждый символ состоит из матрицы 5 x 8 пикселей.
- Дисплей является буквенно-цифровым, поэтому он может отображать числа, а также буквы алфавита и специальные символы.
- Есть варианты с зелено-синей подсветкой.
Посмотрим конфигурацию выводов ЖК-дисплея.
Распиновка ЖК-дисплея 16×2 и описание
Пин-код | Имя | Описание |
1 | ВСС | Это земля, соединенная с землей цепи. |
2 | ВДД | Блок питания ЖК-дисплея (от 4,7 В до 5,3 В), обычно 5 В |
3 | VE | Этот контакт используется для управления контрастностью ЖК-дисплея. Для этого нам нужно подключить потенциометр к этому контакту. Таким образом, регулируя ручку потенциометра, мы можем получить различные уровни контрастности на дисплее. |
4 | RS | Регистрация выбора. Этот вывод используется для переключения между регистром команды и регистром данных. Этот вывод подключен к микроконтроллеру |
5 | RW | Чтение/запись. Этот контакт используется для чтения или записи на ЖК-дисплей. Как правило, это обосновано для записи данных. |
6 | EN | Включить PIN-код. Этот контакт связан с микроконтроллером и получает 1 или 0 для подтверждения данных. |
7 | Выводы данных (0-7) | Эти контакты используются для отправки 8-битных данных на ЖК-дисплей от микроконтроллера. Этот ЖК-дисплей также можно использовать в 4-битном режиме. Для этого вам нужно всего лишь подключить 4 контакта данных. |
8 | А | Анод. Этот вывод является положительным выводом для подсветки ЖК-дисплея. Использовать этот вывод совершенно необязательно. Используйте его, если вам нужна подсветка. Потребляемый ток становится намного меньше, если не использовать подсветку, как указано в технических характеристиках. |
9 | К | Катод. Этот вывод является отрицательным выводом для подсветки ЖК-дисплея. |
Давайте рассмотрим базовое взаимодействие ЖК-дисплея с Arduino. Мы напечатаем текст на ЖК-дисплее, написав простой код. Сначала подключите контакты RS и EN к цифровым контактам 12 и 11 Arduino. Теперь подключите контакты D4-D7 ЖК-дисплея к цифровым контактам 5-2 Arduino. Теперь подключите RW, VSS и K к земле, а VDD и A к 5V Arduino. Подключите потенциометр к VE, как показано на принципиальной схеме, чтобы контролировать контрастность ЖК-дисплея.
- Публикация по теме: Электронный проект управления светофором с использованием таймера IC 4017 и 555
Теперь перейдем к кодированию. Во-первых, нам нужно подключить библиотеку LiquidCrystal.h для LCD.
#include
Теперь в следующих двух строках мы определили переменные для выводов данных ЖК-дисплея, подключенного к Arduino, а затем передали их в качестве аргумента в функцию lcd, чтобы мы могли отправлять данные из Arduino к ЖК-дисплею.
const int rs =12, en =11, d4 =5, d5 =4, d6 =3, d7 =2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
В функции Setup мы инициализировали ЖК-дисплей с помощью функции lcd.begin(). Мы прошли 16 и 2, потому что ЖК-дисплей, который мы используем, имеет 16 столбцов и 2 строки, а также мы используем весь ЖК-дисплей. Если вам нужна только часть ЖК-дисплея, вы можете передать соответствующие аргументы.
Далее мы печатаем «Hello, World!» в следующей строке. Вы можете распечатать любое настроенное сообщение, но имейте в виду, что сообщение, превышающее размер дисплея, будет напечатано в следующей строке. Таким образом, обработайте свое сообщение соответствующим образом.
lcd.begin(16, 2);
lcd.print("Привет, мир!");
В функции цикла мы установили курсор в положение (0,1) с помощью функции lcd.setCursor(). После этого мы печатаем время, за которое печатается сообщение.
lcd.setCursor(0, 1);
lcd.print(millis() / 1000);
После написания кода загрузите его на плату Arduino, и вы увидите сообщение, напечатанное на дисплее. Вы можете изменить контраст, вращая ручку подключенного потенциометра.
- Публикация по теме: Схема переключателя хлопков с таймером IC 555 и без таймера
Программирование Arduino для измерения расстояния ультразвуковым датчиком
Написание кода для этого проекта действительно очень простое. Начните с включения файла заголовка для LCD.
#include <LiquidCrystal.h>
В следующих двух строках мы определили макросы для контактов A4 (контакт 18) и A5 (контакт 19) Arduino, чтобы мы могли использовать эти имена вместо использования контакта числа.
#define trig 18
#define echo 19
Теперь в следующих строках мы определили переменные для разных выводов ЖК-дисплея, подключенного к Arduino, а затем передали их функции lcd, чтобы мы могли инициализировать ЖК-дисплей.Р>
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
Теперь мы определили переменную расстояния "d" и переменную времени "t" и инициализировали их значением 0.
float t=0,d=0;
Теперь перейдем к функции настройки. В первой строке мы инициализировали ЖК-дисплей с помощью lcd.begin(), а затем в следующих двух строках мы определили режимы выводов для выводов триггера и эха как вывода и ввода соответственно.
void setup()
{
lcd.begin(16,2);
pinMode(trig,OUTPUT);
pinMode(echo,INPUT);
}
Перейдем к функции цикла. Во-первых, мы очистили ЖК-дисплей с помощью функции lcd.clear(), чтобы после каждой итерации цикла предыдущий вывод не влиял на текущий вывод. Теперь в следующих шести строках мы инициализируем наш ультразвуковой датчик, отправляя импульс высокого уровня в течение 10 мкс. А как мы знаем, после этого датчик автоматически посылает восемь циклов ультразвука частотой 40 кГц и проверяет его отражение. Итак, в следующей строке мы получили время от датчика. Затем вычисляем расстояние. Мы разделили его на 10 000, потому что скорость измеряется в метрах в секунду, поэтому нам нужно преобразовать ее в сантиметры.
void loop()
{
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
t = pulseIn(echo, HIGH);
d = t * 0.0340 / 2;
d = t * 0.01330 / 2;
lcd.setCursor(0, 0);
lcd.print("Distance: ");
lcd.print(d);
lcd.print(" cm");
delay(1000);
}
- Публикация по теме: Схема автоматического выключателя света в ванной и принцип работы
Работа схемы измерения расстояния
После написания кода загрузите его в Arduino, и все готово. Теперь поднесите любой предмет или руку к датчику. Проверьте расстояние на ЖК-дисплее. Продолжайте изменять расстояние объекта от датчика, и вы получите точное расстояние.
Когда мы инициализируем датчик, отправляя импульс высокого уровня в течение 10 мкс, датчик отправляет восемь ультразвуковых циклов 40 кГц, и если эти циклы отражаются каким-либо препятствием, они отражаются обратно в получатель. Теперь датчик показывает время прохождения ультразвукового сигнала от передатчика до препятствия и от препятствия до приемника. Итак, мы используем это время для расчета расстояния между датчиком и препятствием.
Промышленные технологии
- Как работает датчик расстояния и его применение
- Датчик Arduino - типы и приложения
- Работа схемы и модуля ИК-датчика
- Датчик температуры Python и Raspberry Pi
- Ультразвуковой левитационный аппарат с использованием ARDUINO
- Вольтметр своими руками с использованием Arduino и смартфона
- IOT - Smart Jar с использованием ESP8266, Arduino и ультразвукового датчика
- Измерение частоты и рабочего цикла с использованием Arduino
- FM-радио с использованием Arduino и RDA8057M
- Мини-радар с Arduino