Ультразвуковой дальномер на базе микроконтроллера (с использованием модуля HC-SR04)
Ультразвуковой дальномер на базе микроконтроллера (с использованием модуля HC-SR04)

1. Предисловие

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

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

В этом проекте в качестве основного управляющего чипа выбран STC89C52. Это распространенный и мощный микроконтроллер серии 8051 с мощными вычислительными и управляющими возможностями, который подходит для различных конструкций встроенных систем.

В то же время в качестве модуля измерения дальности используется модуль ультразвуковой дальнометрии HC-SR04. Модуль HC-SR04 может передавать ультразвуковые сигналы вперед и принимать эхо-сигналы, а также рассчитывать расстояние путем измерения разницы во времени между передачей и приемом.

Благодаря подключению и управлению микроконтроллером STC89C52 и модулем ультразвуковой дальнометрии HC-SR04 измеренное расстояние может быть получено в режиме реального времени и отображено на жидкокристаллическом дисплее LCD1602. Жидкокристаллический дисплей LCD1602 прост, интуитивно понятен и удобен для чтения, а также может удобно отображать информацию об измеренном расстоянии.

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

2. Идеи оформления проекта

2.1 Аппаратное обеспечение

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

(1) Выбор основного чипа управления: в этом проекте микроконтроллер STC89C52 выбран в качестве основного чипа управления. STC89C52 — это микроконтроллер на основе архитектуры 8051. Он обладает богатыми периферийными ресурсами и мощными вычислительными возможностями и подходит для проектирования встраиваемых систем.

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

(3) Конструкция источника питания и способ подключения. Чтобы обеспечить стабильную рабочую мощность микроконтроллера и модуля ультразвуковой дальности, вы можете использовать адаптер питания постоянного тока или аккумулятор. Обычно подключайте положительный полюс источника питания к контакту VCC микроконтроллера и модуля ультразвуковой дальности, а отрицательный полюс источника питания подключайте к контакту GND.

2.2 Разработка программного обеспечения

(1) Настройки инициализации: в начале программы необходимо инициализировать микроконтроллер, включая настройки режима вывода, настройки таймера и т. д.

(2) Отправка ультразвуковых сигналов: Управляйте передающим контактом модуля ультразвуковой дальности через микроконтроллер для передачи ультразвуковых сигналов определенной частоты и длительности.

(3) Прием эхо-сигнала: микроконтроллер управляет приемным контактом модуля ультразвуковой дальности, контролирует эхо-сигнал, рассчитывает его время и записывает продолжительность эхо-сигнала.

(4) Расчет расстояния: на основе продолжительности эхо-сигнала можно рассчитать расстояние между объектом и дальномером. Выполните соответствующие расчеты в программном обеспечении и сохраните результаты расчетов в переменных.

(5) Отображение данных: отображение информации об измеренном расстоянии на жидкокристаллическом дисплее LCD1602. Выводами ЖК-дисплея можно управлять через микроконтроллер и отправлять на него соответствующие данные и команды.

2.3 Способ подключения аппаратного модуля и микроконтроллера

Подключите модуль ультразвуковой дальности HC-SR04 и жидкокристаллический дисплей LCD1602 к порту ввода-вывода микроконтроллера STC89C52:

Подключение контактов модуля HC-SR04:

(1) Вывод Trig подключен к порту P1.0 микроконтроллера.

(2) Вывод Echo подключен к порту P1.1 микроконтроллера.

(3) Вывод VCC подключен к выводу VCC микроконтроллера.

(4) Контакт GND подключен к контакту GND микроконтроллера.

Соединение контактов ЖК-экрана LCD1602:

(1) Вывод RS подключен к порту P2.0 микроконтроллера.

(2) Вывод RW подключен к порту P2.1 микроконтроллера.

(3) Контакт E подключен к порту P2.2 микроконтроллера.

(4) Вывод D4 подключен к порту P2.4 микроконтроллера.

(5) Вывод D5 подключен к порту P2.5 микроконтроллера.

(6) Вывод D6 подключен к порту P2.6 микроконтроллера.

(7) Вывод D7 подключен к порту P2.7 микроконтроллера.

(8) Вывод VCC подключен к выводу VCC микроконтроллера.

(9) Контакт GND подключен к контакту GND микроконтроллера.

3. Знакомство с модулем HC-SR04.

HC-SR04 — это широко используемый модуль ультразвуковой дальнометрии, который может измерять расстояние между объектом и модулем путем излучения ультразвуковых импульсов и приема их эхо-сигналов. Ниже приводится подробное описание модуля ультразвуковой дальнометрии HC-SR04:

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

(2) Принцип измерения: Ультразвуковые волны, используемые модулем HC-SR04, представляют собой неслышимые высокочастотные звуковые волны, а обычная рабочая частота составляет 40 к Гц. Модуль запускает передачу ультразвуковых волн, отправляя импульс длительностью 10 микросекунд, а затем ожидает получения эха. При получении эха модуль останавливает отсчет времени и преобразует измеренное время в расстояние.

(3) Диапазон измерения: Диапазон измерения модуля HC-SR04 обычно составляет от 2 см до 400 см, в зависимости от условий окружающей среды и качества модуля. Измерения на больших расстояниях могут иметь определенные погрешности.

(4) Рабочее напряжение: Рабочее напряжение модуля HC-SR04 обычно составляет 5 В и может питаться при подключении к микроконтроллеру или другому адаптеру.

(5) Интерфейс: модуль HC-SR04 обычно использует четыре контакта для подключения. Среди них два контакта используются для питания (VCC и GND), один контакт используется для запуска ультразвукового излучения (Trig), а другой контакт используется для получения ультразвукового эхо-сигнала и результатов измерения выходного сигнала (Echo).

(6) Использование: Использование модуля HC-SR04 для определения дальности обычно требует следующих шагов:

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

(7) Области применения: Модуль HC-SR04 широко используется для измерения расстояний, предотвращения препятствий, контроля высоты дрона, интеллектуальной навигации транспортных средств, автоматического управления дверями и других областей. Он прост в использовании, имеет низкую стоимость и хорошую точность измерения дальности, что делает его пригодным для многих проектов в области электроники и робототехники.

Модуль ультразвуковой дальнометрии HC-SR04 использует передачу и прием ультразвуковых волн для измерения расстояния между объектом и модулем. Это широко используемый модуль измерения дальности, отличающийся простотой, удобством использования, низкой стоимостью и хорошей точностью измерения. Он подходит для различных задач измерения расстояний и обхода препятствий.

4. Полный код проекта.

Язык кода:javascript
копировать
#include <reg52.h>
#include <intrins.h>

#define LCD_RS P2_0  // Разъем RS ЖК-экрана для подключения к порту P2.0
#define LCD_RW P2_1  // Контакт LCD RW для подключения к порту P2.1
#define LCD_E  P2_2  // Контакт E ЖК-экрана подключается к порту P2.2.
#define LCD_D4 P2_4  // Вывод D4 ЖК-экрана подключается к порту P2.4.
#define LCD_D5 P2_5  // Вывод D5 ЖК-экрана подключается к порту P2.5.
#define LCD_D6 P2_6  // Вывод D6 ЖК-экрана подключается к порту P2.6.
#define LCD_D7 P2_7  // Вывод D7 ЖК-экрана подключается к порту P2.7.

#define TRIG P1_0    // Вывод Trig модуля ультразвуковой дальности подключается к порту P1.0.
#define ECHO P1_1    // Контакт Echo для подключения модуля ультразвуковой дальности к порту P1.1.

sbit RS = LCD_RS;
sbit RW = LCD_RW;
sbit E = LCD_E;
sbit D4 = LCD_D4;
sbit D5 = LCD_D5;
sbit D6 = LCD_D6;
sbit D7 = LCD_D7;

void delay(unsigned int time) {
    while (time--) {
        for (int i = 0; i < 120; i++);
    }
}

void lcd_enable() {
    E = 1;
    _nop_();
    E = 0;
}

void lcd_write_cmd(unsigned char cmd) {
    RS = 0;
    RW = 0;
    P0 = cmd;
    lcd_enable();
}

void lcd_write_data(unsigned char dat) {
    RS = 1;
    RW = 0;
    P0 = dat;
    lcd_enable();
}

void lcd_init() {
    lcd_write_cmd(0x38);    // Инициализируйте 8-битный интерфейс данных, 2 строки дисплея, матричные символы 5x7.
    lcd_write_cmd(0x0c);    // Включить дисплей, не отображать курсор
    lcd_write_cmd(0x06);    // Курсор перемещается вправо, а дисплей не перемещается.
    lcd_write_cmd(0x01);    // очистить экран
}

void lcd_clear() {
    lcd_write_cmd(0x01);
}

void lcd_print(const unsigned char *str) {
    while (*str) {
        lcd_write_data(*str++);
    }
}

unsigned int measure_distance() {
    unsigned int distance;
    TRIG = 0;   // Отправить триггерный сигнал
    delay(10);
    TRIG = 1;
    delay(12);
    TRIG = 0;
    while (!ECHO);  // Ожидание эхо-сигнала
    TH0 = 0;    // Инициализировать начальное значение таймера
    TL0 = 0;
    TR0 = 1;    // 启动таймер    while (ECHO);  // Ожидание эхо-сигнала结束
    TR0 = 0;    // 停止таймер    distance = TH0 * 256 + TL0; // Рассчитать расстояние
    distance = distance / 58;   // Преобразовать время в расстояние в сантиметрах
    return distance;
}

void main() {
    unsigned int distance;
    lcd_init();
    lcd_clear();
    while (1) {
        distance = measure_distance();  // Измерить расстояние
        lcd_clear();
        lcd_print("Distance: ");
        if (distance >= 100) {
            lcd_write_data(distance / 100 % 10 + '0');
            lcd_write_data(distance / 10 % 10 + '0');
            lcd_write_data('.');
            lcd_write_data(distance % 10 + '0');
            lcd_print(" m");
        } else {
            lcd_write_data(distance / 10 % 10 + '0');
            lcd_write_data('.');
            lcd_write_data(distance % 10 + '0');
            lcd_print(" cm");
        }
        delay(200);
    }
}

5. Резюме

В рамках данного проекта успешно разработан и реализован ультразвуковой дальномер на базе микроконтроллера STC89C52 и модуля ультразвукового дальномера HC-SR04. Реализует функции измерения расстояния и ЖК-дисплея. Это простое и практичное устройство может широко использоваться в областях измерения расстояний и автоматического управления, обеспечивая удобство в жизни. Благодаря реализации проектов можно получить богатый опыт и знания. Узнайте, как правильно подключать аппаратные устройства, понимать и использовать порт ввода-вывода микроконтроллера, а также использовать модуль ультразвуковой дальнометрии для измерения расстояния. В то же время вы можете улучшить свои навыки программирования на языке C и освоить метод управления жидкокристаллическим дисплеем LCD1602.

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода