Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Промышленные технологии

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

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

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

Таким образом, имея в виду эти приложения, ультразвуковой датчик является отличным инструментом для измерения расстояний без физического контакта на небольших расстояниях. Они используют концепцию ECHO для измерения расстояния. В этом проекте мы научимся измерять расстояние, соединив модуль датчика HC-SR04 с Arduino и отобразив расстояние на ЖК-дисплее 16×2.

Схема проекта измерения расстояний

Интерфейс очень прост. Вам просто нужно следовать схеме. Итак, во-первых, контакты 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 для управления контрастностью ЖК-дисплея, как показано на принципиальной схеме.

Необходимые компоненты

Модуль ультразвукового датчика

Здесь используется сенсорный модуль HC-SR04. , который представляет собой бесконтактный ультразвуковой измерительный прибор. Этот небольшой модуль способен измерять расстояние в диапазоне от 2 см до 400 см. Это действительно точный датчик, он может измерять до 3 мм.

Датчик состоит из ультразвукового передатчика и ультразвукового приемника. Принцип работы действительно прост. Во-первых, триггер ввода-вывода отправляет сигнал высокого уровня в течение 10 мкс. Затем сенсорный модуль отправляет восемь циклов ультразвукового звука частотой 40 кГц и определяет, получен ли импульсный сигнал обратно или нет. И если сигнал получен через высокий уровень, продолжительность времени, в течение которого триггер ввода-вывода остается высоким, — это время от отправки до получения сигнала.

Расстояние =(время высокого уровня x скорость звука в воздухе (340 м/с))/2

Временная диаграмма

Как обсуждалось выше, модуль работает с ЭХО звука. Для срабатывания модуля подается импульс длительностью около 10 мкс. После этого модуль посылает восемь циклов ультразвука частотой 40 кГц и проверяет его отражение. Таким образом, если есть какое-либо препятствие, то сигнал сталкивается с ним и возвращается обратно к приемнику. А теперь расстояние рассчитывается по простой формуле, рассмотренной выше. Мы разделили его на 2, потому что это время — это общее время, необходимое для достижения препятствия и возврата к приемнику, поэтому время, необходимое для достижения препятствия, составляет половину общего времени. Временная диаграмма этого датчика приведена ниже:

Технические характеристики
Выводы ультразвукового датчика HC-SR04

Как было сказано выше, модуль работает по принципу ЭХО звука. Итак, когда мы подключаем модуль к любому микроконтроллеру, то сначала модуль срабатывает через вывод Trig и отправляется импульс высокого уровня в течение 10 мкс. Затем ждем получения ECHO. Микроконтроллер может вычислять время. А затем расстояние рассчитывается по приведенной выше формуле.

Arduino UNO

Arduino — это микроконтроллер с открытым исходным кодом, который широко используется во многих небольших и крупных встраиваемых проектах. Arduino, который используется в этом проекте, называется Arduino-UNO. Причина использования этого Arduino в том, что он дешевле и прост в интерфейсе. На плате имеется 14 цифровых контактов ввода-вывода и 6 аналоговых контактов. Микроконтроллер имеет открытый исходный код, поэтому все зависит от пользователя, как он хочет его использовать. Вы можете изменить плату и программное обеспечение в соответствии с потребностями.

ЖК-модуль 16 × 2

Эти модули обычно используются во многих местах во встраиваемых проектах, потому что они дешевле и их легко взаимодействовать с микроконтроллерами. Вы могли видеть этот тип дисплея в калькуляторах, мустиметрах и т. д. Используемый здесь ЖК-модуль может отображать 16 символов в строке, и он имеет две строки. Итак, в основном он имеет 16 столбцов и 2 строки. Каждый отображаемый символ состоит из пикселей 5×8 (пиксельная матрица).

Если подсчитать общее количество пикселей на всем ЖК-дисплее, получится 5x8x16x2=1280 пикселей. Что является большим числом. Теперь, чтобы отобразить что-то на ЖК-дисплее, нам также нужно указать положение символов. Таким образом, это действительно трудно сделать. Таким образом, для правильной работы используется микросхема с именем HD44780. Эта ИС получает данные и команды от микроконтроллера, а затем выполняет некоторую обработку, чтобы желаемый вывод можно было распечатать на ЖК-дисплее. Эта микросхема делает взаимодействие с ЖК-дисплеем очень простым. Мы можем использовать ЖК-дисплей во многих наших проектах для отображения выходных данных с датчиков или любых других модулей. Давайте взглянем на некоторые технические характеристики ЖК-модуля.

Посмотрим конфигурацию выводов ЖК-дисплея.

Распиновка ЖК-дисплея 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, как показано на принципиальной схеме, чтобы контролировать контрастность ЖК-дисплея.

Теперь перейдем к кодированию. Во-первых, нам нужно подключить библиотеку 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, и вы увидите сообщение, напечатанное на дисплее. Вы можете изменить контраст, вращая ручку подключенного потенциометра.

Программирование 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 кГц, и если эти циклы отражаются каким-либо препятствием, они отражаются обратно в получатель. Теперь датчик показывает время прохождения ультразвукового сигнала от передатчика до препятствия и от препятствия до приемника. Итак, мы используем это время для расчета расстояния между датчиком и препятствием.


Промышленные технологии

  1. Как работает датчик расстояния и его применение
  2. Датчик Arduino - типы и приложения
  3. Работа схемы и модуля ИК-датчика
  4. Датчик температуры Python и Raspberry Pi
  5. Ультразвуковой левитационный аппарат с использованием ARDUINO
  6. Вольтметр своими руками с использованием Arduino и смартфона
  7. IOT - Smart Jar с использованием ESP8266, Arduino и ультразвукового датчика
  8. Измерение частоты и рабочего цикла с использованием Arduino
  9. FM-радио с использованием Arduino и RDA8057M
  10. Мини-радар с Arduino