Администрирование Железо Ультразвуковой датчик расстояния URM37 Tue, June 27 2017  

Поделиться

нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Ультразвуковой датчик расстояния URM37 Печать
Добавил(а) microsin   

URM37 V3.2 Ultrasonic Sensor (SKU:SEN0001) удобен для применения в качестве датчика расстояния для препятствий в радиолюбительских и робототехнических конструкциях. Датчик собран с применением микроконтроллера AVR, который выполняет управление датчиком и обрабатывает сигнал от него, вычисляя расстояние до объекта (по задержке между отправкой и приемом ультразвукового импульса). В программе датчика предусмотрена встроенная температурная коррекция измерения расстояния, что является уникальной особенностью для датчиков расстояния низкого ценового диапазона.

[Параметры URM37 V3.2 Ultrasonic Sensor]

- напряжение питания +5V, потребляемый ток < 20 мА.
- рабочий диапазон температур -10 .. +70 Co.
- диапазон измерения расстояния 4 .. 500 см, точность измерения 1 см.
- интерфейсы подключения RS232 (TTL и обычные уровни +-12V), PWM (ШИМ).
- режимы работы: пассивный режим последовательных измерений с ШИМ (Serial PWM passive control mode), автономный режим (Autonomous Mode), релейный режим (On/OFF Mode).
- сенсор температуры имеет разрядность 12 бит, данные с него могут быть прочитаны через последовательный порт RS232.
- размеры 22x51 мм, вес 30 грамм.
- к датчику может быть подключена сервомашинка, которая предназначена для поворота датчика на нужный угол.

URM-37-v3.2-SEN0001-01 URM-37-v3.2-SEN0001-02 URM-37-v3.2-SEN0001-03

Диаграмма направленности сенсора URM37:

URM-37-v3.2-SEN0001-diagram

[Нумерация и назначение внешних выводов URM37]

1. VCC питание +5V (Power)
2. GND земля (Ground)
3. RST сброс (Reset). Напрямую подключен в ножке сброса ATmega8L, поэтому для того, чтобы сенсор работал, необходимо на RST подать лог. 1, для сброса сенсора нужно подать на RST импульс лог. 0, и вернуть RST в состояние лог. 1.
4. PWM выход ШИМ (PWM Output) 0..25000 мкс, где каждые 50 мкс соответствуют 1 см
5. MOTO выход для управления сервомашинкой (Servo control signal output)
6. COMP/TRIG выход, который работает по-разному в зависимости от выбранного режима
COMP On/OFF mode, в этом режиме если измеренное расстояние меньше предустановленной величины, то выход COMP переводится в низкий логический уровень.
TRIG ножка PWM или триггера RS232.
7. PWR_ON вход, который разрешает работу датчика, если на этом входе высокий логический уровень (либо ножка 7 никуда не подключена, NC).
8. RXD интерфейса RS232, вход последовательного канала передачи данных. Подключается либо к выходу TXD внешнего управляющего микроконтроллера (уровни TTL, в зависимости от положения перемычек J1, J2, J3, см. далее), либо к выходу TXD порта RS232 компьютера (уровни +-12V, в зависимости от положения перемычек J1, J2, J3, см. далее).
9. TXD интерфейса RS232, выход последовательного канала передачи данных. Подключается либо к входу RXD внешнего управляющего микроконтроллера (уровни TTL, в зависимости от положения перемычек J1, J2, J3, см. далее), либо к входу RXD порта RS232 компьютера (уровни +-12V, в зависимости от положения перемычек J1, J2, J3, см. далее).

URM-37-v3.2-SEN0001-pinout

[Положение перемычек, которые управляют выходом последовательного порта (RS232, TTL)]

С помощью трех перемычек J1, J2, J3 можно установить выходное рабочее напряжение последовательного порта - стандартный RS232 (+-12V) или TTL уровни. Выбор режима работы выводов последовательного порта возможен только для второй ревизии датчика (Rev2, v3.2) или более поздней. Рисунки ниже показывают варианты установки перемычек.

URM-37-v3.2-SEN0001-jumpers-RS232-mode URM-37-v3.2-SEN0001-jumpers-TTL-mode
Режим стандартного RS232 для подключения к COM-порту компьютера (уровни +-12V). Перемычка J1 установлена, а перемычки J2, J3 в нижнем положении. Режим TTL RS232 для подключения к внешнему управляющему микроконтроллеру (уровни TTL 0..+5V). Перемычка J1 снята, а перемычки J2, J3 в верхнем положении.

Внимание: не подключайте выводы микроконтроллера с уровнями TTL к последовательному каналу URM37, когда перемычки J1, J2, J3 установлены в положение RS232 Mode, иначе Вы повредите микроконтроллер.

[Выбор режима работы URM37]

Рабочий режим может быть изменен записью 0x00, 0x01 или 0x02 в память EEPROM через последовательный порт (RS232 RXD, TXD).

Режим 1: последовательный, пассивный (Serial passive control mode)

В этом режиме сенсор всегда ждет команды, которая должна прийти через последовательный порт. Когда принята соответствующая команда, то датчик измерит расстояние и вернет его значение через последовательный порт, и затем вернется к ожиданию следующей команды. Значение угла поворота (degree) может быть использовано для управления сервомотором с целью поворота датчика на нужный угол. Имейте в виду, что этот режим всегда активен, и его нельзя включить или выключить.

Режим 2: автономный триггерный режим (Autonomous trigger mode)

В этом режиме сенсор будет измерять расстояние каждые 25 мс и сравнивать измеренное расстояние с пороговым (это порог установлен заранее и может быть изменен пользователем путем записи данных в EEPROM). Если измеренное значение равно или меньше порогового, то выход COMP/TRIG переводится в низкий логический уровень. В то же самое время ножка PWM выведет измеренное расстояние, где каждые 50 мкс низкого уровня соответствуют расстоянию 1 см, так что если измерить длительность импульса нуля, то можно вычислить расстояние до объекта. Этот режим можно просто использовать как релейный выключатель (ON/OFF switch).

Режим 3: пассивный ШИМ (PWM passive control mode)

В этом режиме переход в лог. 0 вывода COMP/TRIG соответствует началу измерения расстояния сенсора. Длительность импульса лог. 0 пропорциональна углу поворота сервомашинки. После успешного чтения сенсора ножка PWM выведет импульс, где каждые 50 мкс соответствуют 1 см. Если измерение расстояния не удалось, то будет сформирован импульс длительностью 50000 мкс.

[Протокол управления последовательного канала URM37 (Serial control protocol)]

В протоколе используются следующие физические настройки порта: 9600 бод, без четности, 1 стоп-бит (9600; Parity: none; Stop bit: 1). Применяется стандартный асинхронный последовательный протокол обмена. Каждая команда состоит из 4 байт: command+data0+data1+sum, где:

command байт команды
data0 байт 0 данных команды
data1 байт 1 данных команды
sum байт контрольной суммы

Контрольная сумма вычисляется по простому алгоритму. Она равна младшим 8 битам от суммы command+data0+data1. В таблице показаны команды протокола и их описание.

Формат команды Назначение Описание
0x11+NC+NC+Sum
(пример: 0x11 0x00 0x00 0x11)
Чтение 16 бит данных температуры. Чтение температуры, возвращаемые данные будут следующие:
0x11+High(temperature)+Low(temperature)+SUM
Если температура выше 0, то все первые 4 бита старшего байта High будут равны 0. Если температура ниже 0, то все первые 4 бита старшего байта High будут равны 1.
Последние 4 бита байта High вместе с битами байта Low представляют 12-битное значение температуры. Точность измерения температуры составляет 0.1 градуса. Если чтение температуры завершилось с ошибкой, то сенсор вернет 0x11+0xFF+0xFF+SUM
0x22+Degree+NC+SUM (пример: 0x22 0x00 0x00 0x22) Чтение 16 бит измеренного расстояния. В команде байт Degree (угол поворота) используется для управления стандартной авиамодельной сервомашинкой, чтобы иметь возможность повернуть датчик на соответствующий угол. Значения Degree 0..46 соответствуют углу повтора 0..270 градусов, см. таблицу ниже. Например, Degree=3 соответствует углу поворота 18 градусов. Возвращаемые данные имеют формат 0x22+High(расстояние)+Low(расстояние)+SUM. Если измерение расстояния было неудачным, то сенсор вернет 0x22+0xFF+0xFF+SUM.
0x33+address+NC+SUM Чтение байта из EEPROM. Возвращенные данные будут:
0x33+address+Data+SUM 
0x44+address+Data+SUM (пример включения режима 3, PWM mode: 0x44 0x02 0xbb 0x01) Запись байта в EEPROM.

Записываемый байт данных (Data) может быть только в диапазоне 0..255 (0x00..0xFF). Адреса (address) 0x00..0x02 используются для конфигурирования режима работы датчика (режим 0, режим 1 или режим 2). Байт с адресом 0x00 - младший (Low) байт порогового расстояния (threshold distance), байт с адресом 0x01 - старший (High) байт порогового расстояния (threshold distance), байт с адресом 0x02 - режим работы датчика (0xAA для автономного режима 2, 0xBB для пассивного PWM режима 3).
Возвращенные данные будут следующие:
0x44+address+Data+SUM

Примечание к таблице команд: NC означает любые данные (этот байт не имеет значения), address означает адрес байта в EEPROM. Если плата сенсора имеет сигнал управления PWR_ON (ножка 7, иногда она не задействована), то для разрешения работы датчика на входе PWR_ON должен быть уровень лог. 1.

Пример функции вычисления температуры: 

if (HightByte>=0xF0)
{
  Temperature= ((HightByte-0xF0)*256-LowByte)/10;
}
else
{
  Temperature= ((HightByte)*256-LowByte)/10;
}

Таблица управления сервомашинкой (угол поворота Degree):

DEC 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
HEX 0 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
Degree 0 6 12 18 24 29 35 41 47 53 59 65 70 76 82 88
DEC 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
HEX 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
Degree 94 100 106 112 117 123 129 135 141 147 153 159 164 170 176 182
DEC 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
HEX 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E
Degree 188 194 200 206 211 217 223 229 235 241 247 252 258 264 270

Принципиальная схема сенсора (несколько отличается от реальной - в схеме стоит ATmega8 в корпусе DIP28, а в сенсоре строит ATmega8 в корпусе TQFP32, но другой схемы к сожалению нет):

URM-37-v3.2-SEN0001-schematic

Пример применения сенсора в радиолюбительской конструкции:

URM-37-v3.2-SEN0001-using-example

[Ссылки]

1. Документация на сенсор, драйвера для CP210x, программа для чтения датчика URM37V3.2helpmate.

 

Комментарии  

 
0 #1 Владимир 05.08.2015 15:10
:lol: :lol: :lol:
Спасибо большое! Очень сильно понадобилось для курсовой работы!
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Top of Page