Ултразвуков сензор за разстояние URM37, хардуер, админ
Ултразвуковият сензор URM37 V3.2 (SKU:SEN0001) е подходящ за използване като сензор за разстояние до препятствия в радиолюбители и роботизирани конструкции. Сензорът се сглобява с помощта на микроконтролера AVR, който управлява сензора и обработва сигнала от него, като изчислява разстоянието до обекта (чрез закъснението между изпращането и получаването на ултразвуков импулс). Сензорната програма има вградена температурна корекция за измерване на разстояние, което е уникално за сензорите за разстояние от ниския ценови диапазон.
[Параметри URM37 V3.2 ултразвуков сензор ]
Насочен модел на сензора URM37:
[Номериране и присвояване на външни щифтове URM37 ]
1.VCC захранване +5V (захранване)2.GND земя (земя)3.RST Нулиране. Директно свързан към щифта за нулиране на ATmega8L, така че за да работи сензорът, е необходимо да изпратите лог към RST. 1, за да нулирате сензора, трябва да приложите лог импулс към RST. 0 и връща RST в състояние на журнал. 1.4.PWM PWM изход 0..25000 µs, където всеки 50 µs съответства на 1 cm5.MOTO Изходен сигнал за серво управление6.COMP/TRIG изход, който работи по различен начин в зависимост от избрания режим COMP On/OFF режим, в този режим, ако измереното разстояние е по-малко от предварително зададената стойност, тогава 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 са в горна позиция. |
Внимание: Не свързвайте MCU пинове с TTL нива към URM37 серийна връзка, когато джъмпери J1, J2, J3 са настроени на RS232 режим, в противен случай ще повредите MCU.
[Избор на режим на работа URM37 ]
Режимът на работа може да се промени чрез запис на0x00,0x01 или0x02 вEEPROM през серийния порт(RS232 RXD, TXD).
Режим 1: Сериен пасивен контролен режим
В този режим сензорът винаги чака команда да дойде през серийния порт. Когато се получи подходяща команда, сензорът ще измери разстоянието и ще върне стойността си през серийния порт, след което ще се върне към изчакване на следващата команда. Стойността на градуса може да се използва за управление на серво мотора, за да завърти сензора до желания ъгъл. Имайте предвид, че този режим е винаги активен и не може да се включва или изключва.
Режим 2: Автономен режим на задействане
В този режим сензорът ще измерва разстоянието на всеки 25 ms и ще сравнява измереното разстояние с прага (този праг е предварително зададен и може да бъде променен от потребителя чрез записване на данни в EEPROM). Ако измерената стойност е равна или по-малка от прага, тогава изходът COMP/TRIG се задвижва до логическо ниско ниво. В същото време щифтът на PWM ще изведе измереното разстояние, където всеки 50 µs ниско ниво съответства на разстояние от 1 cm, така че ако измерите ширината на нулевия импулс, можете да изчислите разстоянието до обекта. Този режим може просто да се използва като релеен превключвател (ключ ON/OFF).
Режим 3: ШИМ режим на пасивен контрол
В този режим преходът към дневника. 0 на изхода COMP/TRIG съответства на началото на измерването на разстоянието на сензора. Дневник на продължителността на импулса. 0 е пропорционален на ъгъла на въртене на сервото. След успешно отчитане на сензора, кракът на ШИМ ще изведе импулс, където всеки 50 µs съответства на 1 см. Ако измерването на разстоянието е неуспешно, ще се генерира импулс от 50 000 µs.
[URM37 (сериен контролен протокол) ]
Протоколът използва следните физически настройки на порта: 9600 бода, без паритет, 1 стоп бит (9600; Паритет: няма; Стоп бит: 1 ). Използва се стандартен асинхронен сериен комуникационен протокол. Всяка команда се състои от 4 байта: команда+данни0+данни1+сума, където:
команда байт данни на командаданни0 байт данни на команда 0данни1 байт данни на команда 1сума байт контролна сума
Контролната сума се изчислява с помощта на прост алгоритъм. Тя е равна на долните 8 бита от сбора на команда+данни0+данни1. Таблицата показва командите на протокола и техните описания.
Формат на командата | Дестинация | Описание |
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 by te, представлява 12-битовата стойност на температурата. Точността на измерване на температурата е 0,1 градуса. Ако отчитането на температурата завърши с грешка, сензорът ще върне 0x11+0xFF+0xFF+SUM |
0x22+градус+NC+SUM (пример: 0x22 0x00 0x00 0x22) | Прочетете 16 бита от измереното разстояние. | В командата байтът Degree се използва за управление на стандартен модел серво на самолет, за да може да завърти сензора до подходящия ъгъл. Стойностите на градуса 0..46 съответстват на ъгъла на повторение 0..270 градуса, вижте таблицата по-долу. Например, Degree=3 съответства на ъгъл на завъртане от 18 градуса. Върнатите данни имат формат0x22+Високо(разстояние)+Ниско(разстояние)+СУМ. Ако измерването на разстоянието е неуспешно, сензорът ще върне 0x22+0xFF+0xFF+SUM. |
0x33+адрес+NC+SUM | Четене на байт от EEPROM. | Върнатите данни ще бъдат: 0x33+адрес+Данни+SUM |
0x44+адрес+данни+SUM (пример за режим на активиране 3, режим PWM: 0x44 0x02 0xbb 0x01) | Запишете байт в EEPROM. |
Пример за функция за изчисляване на температурата:
if (HightByte>=0xF0) < Температура= ((HightByte-0xF0)*256-LowByte)/10; > друго < Температура= ((HightByte)*256-LowByte)/10; >
Серво контролна маса (степен на въртене):
ДЕК | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | единадесет | 12 | 13 | 14 | 15 |
HEX | 0 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0А | 0Б | 0C | 0D | 0E | 0F |
степен | 0 | 6 | 12 | 18 | 24 | 29 | 35 | 41 | 47 | 53 | 59 | 65 | 70 | 76 | 82 | 88 |
ДЕК | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | тридесет | 31 |
HEX | 10 | единадесет | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 1А | 1Б | 1C | 1D | 1E | 1F |
степен | 94 | 100 | 106 | 112 | 117 | 123 | 129 | 135 | 141 | 147 | 153 | 159 | 164 | 170 | 176 | 182 |
ДЕК | 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 | 2А | 2B | 2C | 2D | 2E | |
степен | 188 | 194 | 200 | 206 | 211 | 217 | 223 | 229 | 235 | 241 | 247 | 252 | 258 | 264 | 270 |
Принципна схема на сензора (донякъде по-различна от реалната - във веригата има ATmega8 в корпус DIP28, а в сензора вгражда ATmega8 в корпус TQFP32, но за съжаление няма друга схема):
Пример за използване на сензор в аматьорски радио дизайн: