It is currently Wed Oct 17, 2018 3:29 am

НИЛ АСЭМ Научно - исследовательская лаборатория автоматизированных систем экологического мониторинга

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

by Admin » Tue May 01, 2018 12:27 am

Сонар HC-SR04
Image Image
Внешний вид и принцип работы ультразвукового датчика расстояния

Общие сведения:

Если подать положительный импульс на вход датчика TRIG длительностью 10 мкс, то датчик отправит звуковую волну (8 импульсов на частоте 40 кГц - ультразвук) и установит уровень логической «1» на выходе ECHO. Звуковая волна отразится от препятствия и вернётся на приёмник датчика, после чего он сбросит уровень на выходе ECHO в логический «0» (то же самое датчик сделает, если звуковая волна не вернётся в течении 38 мс.) В результате время наличия логической «1» на выходе ECHO равно времени прохождения ультразвуковой волны от датчика до препятствия и обратно. Зная скорость распространения звуковой волны в воздухе и время наличия логической «1» на выводе ECHO, можно рассчитать расстояние до препятствия.


Image
Диаграмма работы HC-SR04

Расстояние вычисляется умножением скорости на время (в данном случае скорости распространения звуковой волны V, на время ожидания эха Echo). Но так звуковая волна проходит расстояние от датчика до объекта и обратно, а нам нужно только до объекта, то результат делим на 2:
L = V * Echo / 2

• L – расстояние (м);
• V – скорость звука в воздухе (м/с);
• Echo – время ожидания эха (с).

Скорость звука в воздухе, в отличии от скорости света, величина не постоянная и сильно зависит от температуры:
V2 = γ R T / M

• V – скорость звука в воздухе (м/с)
• γ – показатель адиабаты воздуха (ед.) = 7/5
• R – универсальная газовая постоянная (Дж/моль*K) = 8,3144598(48)
• T – абсолютная температура воздуха (°К) = t°C + 273,15
• M – молекулярная масса воздуха (г/моль) = 28,98

Подставив в формулу известные значения γ, R, M, получим:

V ≈ 20,042 √T
• T – абсолютная температура воздуха (°К) = t°C + 273,15

Осталось объединить формулы вычисления V и L, и перевести L из м в см, Echo из с в мкс, T из °К в °C, получим:

L ≈ Echo √(t+273,15) / 1000

• L – расстояние (см)
• Echo – время ожидания эха (мкс)
• t – температура воздуха (°C)

Поскольку Удельная газовая постоянная (R/M) для сухого воздуха: R ≈ 286,9 Дж ⁄ (кг∙К), то при температуре 22°C будем иметь скорость звука: V = √(1,4*(22+273,16)*286,9) = 344,31 м/с.

Поэтому, окончательно:
L = (Echo * 344.31) / 2 (м)


Технические характеристики сенсора:

• Входное напряжение: 5 В
• Потребляемый ток в режиме ожидания: до 2 мА
• Потребляемый ток в режиме измерений: до 15 мА
• Частота ультразвука: 40 кГц
• Измеряемая дальность: 3 … 400 см
• Точность измерения: от 0,3 см
• Угол измерения: до 15°
• Рабочая температура: -30 … 80 °С
• Габариты: 45x20x15 мм

Схема включения HC-SR04:
Image

Управляющий код для микроконтроллера (на Proton BASIC Compiler):
Code: Select all
'****************************************************************
'*  Name    : HC-SR04.BAS                                       *
'*  Author  : [Порываев Алексей Александрович]                  *
'*          : All Rights Reserved                               *
'*  Date    : 03.08.2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Device = 16F877 'Выберем микроконтроллер

Xtal = 20        'Укажем тактовую частоту

Dim Timer As TMR1L.Word 'Для удобства зададим имя для TMR1

TRISD = 0       'Порты PORTA, PORTB, PORTC, PORTD, PORTE,  - на выход
TRISA = 0
TRISE = 0
TRISC = 0
TRISB = %00000001    'PORTB.0 НА ВХОД

' ИНИЦИАЛИЗАЦИЯ LCD 16*2
Declare  LCD_Type ALPHA   
Declare  LCD_DTPin  PORTD.4   
Declare  LCD_ENPin  PORTA.2   
Declare  LCD_RSPin  PORTE.1   
Declare  LCD_Interface  4   
Declare  LCD_CommandUs  200   
Declare  LCD_DataUs  50   
Declare  LCD_Lines   2

Symbol TRIG = PORTD.2 ' ВЫХОД НА ЗАПУСК ДАЛЬНОМЕРА
Symbol ECHO = PORTB.0 ' ВХОД ПРИЁМА ИМПУЛЬСА ВРЕМЕНИ С ДАЛЬНОМЕРА

Dim X As Float  ' ДРОБНАЯ ПЕРЕМЕННАЯ ДЛЯ РАСЧЁТА РЕЗУЛЬТАТА РАСТОЯНИЯ
Dim Y As Float  ' ДРОБНАЯ ПЕРЕМЕННАЯ ДЛЯ РАСЧЁТА РЕЗУЛЬТАТА ВРЕМЕНИ ИМПУЛЬСА

X = 0      'обнулить переменную x
Y = 0      'обнулить переменную y

Cls

Main: 
PulsOut PORTD.2 , 5, High ' Сгенерировать импульс положительной полярности длительностью 0,5 сек на выходе PORTD.2
Y = PulsIn PORTB.0, 1     ' Измерить длительность импульса на выводе PORTB.0
Y = (y*2)/10000           ' расчет времени импульса и конвертация из мкс в сек
X = (340*Y)/2             ' расчёт растояния
Print At 1, 1, Dec X, "     = sm      "   ' вывод на дисплей растояния в сантиметрах
X = X/2.54                                ' перевод из сантиметров в дюймы 
Print At 2, 1, Dec X, "     = duim      " ' вывод на дисплей растояния в дюймах
DelayMS 500           'Задержка для видимости человеком смены показаний
GoTo Main             'Отправляемся на начало

Литература:
1. HC-SR04 User Guide.
2. HCSR04 Ultrasonic Sensor / Elijah J. Morgan. Nov. 16. 2014.
3. Ориентация робота в пространстве с помощью эхолокации.

На главную
Admin
Site Admin
 
Posts: 203
Joined: Wed Sep 20, 2017 9:55 am

Return to Промежуточные исследования и разработки

cron

User Menu

Login