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 грамм. - к датчику может быть подключена сервомашинка, которая предназначена для поворота датчика на нужный угол.
Диаграмма направленности сенсора URM37:
[Нумерация и назначение внешних выводов 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, см. далее).
[Положение перемычек, которые управляют выходом последовательного порта (RS232, TTL)]
С помощью трех перемычек J1, J2, J3 можно установить выходное рабочее напряжение последовательного порта - стандартный RS232 (+-12V) или TTL уровни. Выбор режима работы выводов последовательного порта возможен только для второй ревизии датчика (Rev2, v3.2) или более поздней. Рисунки ниже показывают варианты установки перемычек.
|
|
Режим стандартного 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, но другой схемы к сожалению нет):
Пример применения сенсора в радиолюбительской конструкции:
[Ссылки]
1. 120122URM37-docs.zip - документация на сенсор, драйвера для CP210x, программа для чтения датчика URM37V3.2helpmate. |