這個(gè)模塊是為了做ROBOT而開(kāi)發(fā)的東東。當(dāng)然,如果你有更好的想法,比如用于汽車(chē)倒車(chē)報(bào)警器、門(mén)鈴、警戒報(bào)警器、地鐵安全線提示、銀行及取款機(jī)的一米線提示等。 我們做ROBOT的想法是:把大部分功能集成化,從而解放主CPU。 自從我們的URM37 V1.0超聲波測(cè)距模塊推出后,網(wǎng)友們反饋回很多信息,他們希望模塊上安裝超聲波傳感器以方便使用。我們也發(fā)現(xiàn)不同傳感器在使用時(shí)差異很大,所以現(xiàn)在URM37 V3.1集成了一對(duì)經(jīng)過(guò)我們挑選好的傳感器可以減少不少的麻煩;也有不少的網(wǎng)友希望對(duì)模塊的編程控制能夠盡量的簡(jiǎn)單,比如可以輸出一個(gè)開(kāi)關(guān)量,在測(cè)量距離大于設(shè)定的值時(shí)輸出一個(gè)電平就可以了;比如直接和電腦串口相連接,用串口調(diào)試程序進(jìn)行操作;模塊可以控制一個(gè)舵機(jī)0~270度的旋轉(zhuǎn),可以組成一個(gè)空間掃描儀。還有的網(wǎng)友說(shuō)他想在一個(gè)機(jī)器人系統(tǒng)中使用多個(gè)URM37模塊,但是這樣通訊的控制線就將增加不少因?yàn)閁RM37 V1.0不是標(biāo)準(zhǔn)的IIC總線。還有很多網(wǎng)友提出了很多寶貴的意見(jiàn),這里一并向他們表示感謝,當(dāng)然如果要滿(mǎn)足所有給我們提出改進(jìn)意見(jiàn)的網(wǎng)友的需求是不可能的。在現(xiàn)在的URM37 V3.1上已經(jīng)很好的實(shí)現(xiàn)了上面提到的功能。在此基礎(chǔ)上升級(jí)為URM37 V3.2,機(jī)械尺寸與引腳接口以及通信命令兼容V3.1,在V3.1基礎(chǔ)上做了如下更改: 1.串口電平由跳線選擇,用戶(hù)可以輕松的選擇TTL電平輸出或是RS232電平輸出。 2.修改了測(cè)距算法,使測(cè)距耗時(shí)更少。 3.當(dāng)檢測(cè)不到障礙物測(cè)距失敗的時(shí)候?qū)⒘⒓捶祷?XFFFF,方便進(jìn)行判斷。 4.測(cè)量溫度分辨率改為0.1攝氏度,測(cè)量溫度范圍:-10度~+70度,輸出格式也做了變化。 5.模塊串口波特率9600,無(wú)奇偶效驗(yàn),一位停止位。 性能描述1.工作電源:+5V 2.工作電流:<20mA 3.工作溫度范圍 :-10℃~+70℃ 4.超聲波距離測(cè)量: 最大測(cè)量距離―500cm 最小測(cè)量距離―4cm 分辨率-1cm 誤差-1% 5.由于使用了更好的超聲波處理方法,使測(cè)量距離更遠(yuǎn)更穩(wěn)定。 6.模塊使用RS232串口通訊可靠性更高,同時(shí)可以通過(guò)電腦串口采集數(shù)據(jù),編寫(xiě)通訊程序非常的便捷。 7.模塊可以通過(guò)脈寬輸出的方式將測(cè)量數(shù)據(jù)輸出,這樣使模塊使用更簡(jiǎn)單。 8.模塊可以預(yù)先設(shè)定一個(gè)比較值,在測(cè)量距離小于這個(gè)值后管腳輸出一個(gè)低電平,這樣模塊能夠方便的作為一個(gè)超聲波接近開(kāi)關(guān)使用。 9.模塊提供一個(gè)舵機(jī)控制功能,可以和一個(gè)舵機(jī)組組成一個(gè)270度測(cè)量組件用于機(jī)器人掃描0~270度范圍障礙物。 10.模塊內(nèi)帶溫度補(bǔ)償電路提高測(cè)量的精度。 11.模塊內(nèi)帶253字節(jié)內(nèi)部EEPROM,可以用于系統(tǒng)記錄一些調(diào)電不丟失的系統(tǒng)參數(shù)。 12.模塊內(nèi)帶一個(gè)溫度測(cè)量部件,可以通過(guò)通訊口讀出分辨率0.1攝氏度的環(huán)境溫度數(shù)據(jù)。 13.模塊尺寸22mm × 51 mm 14.模塊重量:約30g 模塊測(cè)量角度 [size=14.1376px]
引腳定義 [size=14.1376px] 
URM37 V3.2模塊正面管腳
1: +VCC 電源+5V輸入 2: GND 電源地 3: nRST 模塊復(fù)位,低電平復(fù)位 4: PWM 測(cè)量到的距離數(shù)據(jù)以PWM脈寬方式輸出0-25000US,每50US代表1厘米 5: MOTO 舵機(jī)控制信號(hào)輸出 6: COMP/TRIG COMP: 比較模式開(kāi)關(guān)量輸出,測(cè)量距離小于設(shè)置比較距離時(shí)輸出低電平 TRIG: PWM模式觸發(fā)脈沖輸入 7: NC 空腳 8: RXD 異步通訊模塊接收數(shù)據(jù)管腳,RS232電平或者TTL電平 9: TXD 異步通訊模塊發(fā)送數(shù)據(jù)管腳,RS232電平或者TTL電平
功能描述模塊最基本的一個(gè)接口是RXD腳和TXD腳組成的RS232電平或者TTL電平串口,通過(guò)串口可以對(duì)模塊進(jìn)行全面的控制。RS232電平可以直接和電腦的串口進(jìn)行連接,這樣可以方便的通過(guò)串口調(diào)試軟件輕易的對(duì)模塊進(jìn)行操作。如果需要用單片機(jī)TTL電平的異步口控制模塊,只需要設(shè)置一下串口選擇跳線,模塊就可以在RS232輸出與TTL輸出之間切換了(如下圖跳線短路帽設(shè)置位置)。  [size=14.1376px] 
RS232模式
 [size=14.1376px] 
TTL模式
通過(guò)串口可以讀寫(xiě)模塊內(nèi)部EEPROM的0x00、0x01、0x02單元來(lái)設(shè)置模塊的工作模式。 第一模式:PWM被動(dòng)控制模式和串口被動(dòng)模式(該模式一直存在)。 在串口被動(dòng)模式下,模塊處于等待狀態(tài),通過(guò)串口發(fā)出的距離測(cè)量命令啟動(dòng)一次距離測(cè)量,串口將測(cè)量到的距離數(shù)據(jù)返回,命令中帶的舵機(jī)旋轉(zhuǎn)度參數(shù)改變模塊MOTO腳產(chǎn)生的舵機(jī)控制脈沖從而改變測(cè)量舵機(jī)的旋轉(zhuǎn)度數(shù)。EEPROM的0x03到0xff是EEPROM的用戶(hù)區(qū)也可以通過(guò)串口進(jìn)行讀寫(xiě),還可以通過(guò)串口讀取一個(gè)高精度的溫度。 在PWM被動(dòng)控制模式下,外部控制COMP/TRIG端上產(chǎn)生一個(gè)低電平的觸發(fā)脈沖信號(hào)啟動(dòng)一次距離測(cè)量操作,這個(gè)低電平脈沖寬度同時(shí)代表控制舵機(jī)轉(zhuǎn)動(dòng)的角度控制參數(shù),將270度旋轉(zhuǎn)角度分為46個(gè)角度控制參數(shù),每個(gè)控制參數(shù)代表5.87度,數(shù)字范圍是范圍是0到46,脈沖每50US代表一個(gè)控制角度。當(dāng)發(fā)出觸發(fā)脈沖后,模塊的MOTO腳產(chǎn)生舵機(jī)控制脈沖從而改變測(cè)量舵機(jī)的旋轉(zhuǎn)度數(shù),接下來(lái)PWM端將測(cè)量到的距離數(shù)據(jù)以脈寬方式輸出一個(gè)低電平脈沖,每50US代表1厘米,可以通過(guò)對(duì)這個(gè)低電平脈沖寬度的測(cè)量讀取距離數(shù)據(jù)。當(dāng)測(cè)量無(wú)效時(shí)將返回一個(gè)50000US的脈沖表示這次的測(cè)量是無(wú)效的。 第二模式:自動(dòng)測(cè)量模式。模塊每隔25MS自動(dòng)測(cè)量,將測(cè)量到的數(shù)據(jù)和比較值做比較,如果測(cè)量距離等于或者小于比較值COMP/TRIG腳輸出低電平。另外每啟動(dòng)一次測(cè)量模塊的PWM端將測(cè)量到的距離數(shù)據(jù)以脈寬方式輸出一個(gè)低電平脈沖,每50US代表1厘米,可以通過(guò)對(duì)這個(gè)低電平脈沖寬度的測(cè)量讀取距離數(shù)據(jù)。設(shè)置好比較距離值后可以簡(jiǎn)單的把模塊當(dāng)一個(gè)超聲波開(kāi)關(guān)使用。 通訊協(xié)議模塊串口波特率9600,無(wú)奇偶效驗(yàn),一位停止位。控制命令通過(guò)一致的幀結(jié)構(gòu)通訊,幀長(zhǎng)度4字節(jié):命令+數(shù)據(jù)0+數(shù)據(jù)1+校驗(yàn)和。效驗(yàn)和=命令+數(shù)據(jù)0+數(shù)據(jù)1的相加和的低8位。模塊可以直接通過(guò)PC串口或單片機(jī)串口進(jìn)行操作。 命令格式 | 功 能 | 說(shuō)明 | 0x11+NC+NC+校 | 啟動(dòng)16位溫度的讀取命令 | 命令啟動(dòng)一次讀取命令,測(cè)量溫度完畢后模塊發(fā)出帶相同命令頭的數(shù)據(jù)加兩字節(jié)的溫 度數(shù)據(jù):0x11+溫度高+溫度低+SUM(SUM代表效驗(yàn)和,NC代表任意數(shù)據(jù))。溫度高字節(jié)的高4位代表溫度正負(fù),當(dāng)高4位都是1時(shí)說(shuō)明是負(fù)溫度,當(dāng)高4位都是0時(shí)是正溫度,除去溫度高字節(jié)的高4位后是12位的溫度。分辨率0.1度,每個(gè)數(shù)字代表0.1攝氏度。當(dāng)測(cè)量無(wú)效時(shí)返回的溫度高位和低位數(shù)據(jù)都是0xff。 | 0x22+度數(shù)+NC+SUM | 啟動(dòng)16位距離的讀取命令 | 度數(shù)是控制舵機(jī)先旋轉(zhuǎn)到一個(gè)度數(shù)后再進(jìn)行測(cè)距。270度分為46個(gè)角度,每角度5.87度,數(shù)字范圍是十進(jìn)制0到46,如果數(shù)字超過(guò)46電機(jī)將不動(dòng)作。上電初始,舵機(jī)將旋轉(zhuǎn)到當(dāng)中即135度的位置。當(dāng)指令是0時(shí),舵機(jī)逆時(shí)針旋轉(zhuǎn)到0度,當(dāng)指令是46時(shí),舵機(jī)順時(shí)針旋轉(zhuǎn)到270度。當(dāng)測(cè)量完畢這時(shí)返回的數(shù)據(jù)是0x22+距離高+距離低+SUM。當(dāng)測(cè)量無(wú)效時(shí)返回的距離高位和低位數(shù)據(jù)都是0xff。 | 0x33+地址+NC+SUM | 啟動(dòng)內(nèi)部EEPROM的讀 | 寫(xiě)入命令后,讀取數(shù)據(jù)返回0x33+地址+數(shù)據(jù)+SUM。 | 0x44+地址+寫(xiě)數(shù)據(jù)+SUM | 啟動(dòng)內(nèi)部EEPROM的寫(xiě) | 寫(xiě)數(shù)據(jù)范圍包括0-255單元,其中地址0x00-0x02的據(jù)是模塊使用的配置字,操作時(shí)需謹(jǐn)慎!可以通過(guò)讀指令來(lái)效驗(yàn)數(shù)據(jù)是否被寫(xiě)入。寫(xiě)入成功返回0x44+地址+寫(xiě)數(shù)據(jù)+SUM。模塊內(nèi)部的EEPROM地址0x00到0x02用于配置模塊參數(shù),分別是:比較距離低(0x00)、比較距離高(0x01)、模式(0x02)。對(duì)模式寄存器寫(xiě)入0xaa自動(dòng)測(cè)量模式開(kāi)啟。 |
注:NC代表任意數(shù)據(jù),SUM代表效驗(yàn)和。
1.PWM被動(dòng)控制模式可以將多個(gè)模塊數(shù)據(jù)線并聯(lián)使用。 2.為了方便客戶(hù)使用模塊在出廠時(shí)可以根據(jù)客戶(hù)需要配置其相應(yīng)的參數(shù)。URM37 V3.2超聲波測(cè)距模塊硬件也可以根據(jù)特殊的客戶(hù)定制改變軟件使他成為一個(gè)專(zhuān)用的模塊。 3.舵機(jī)旋轉(zhuǎn)角度參考表: 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 | 度數(shù) | 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 | 度數(shù) | 94 | 100 | 106 | 112 | 117 | 123 | 129 | 135 | 141 | 147 | 153 | 159 | 164 | 170 | 176 | 172 | 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 |
| 度數(shù) | 188 | 194 | 200 | 206 | 211 | 217 | 223 | 229 | 235 | 241 | 247 | 252 | 258 | 264 | 270 |
|
注:藍(lán)色數(shù)據(jù)為舵機(jī)轉(zhuǎn)軸指向正前方的度數(shù)。 模塊的連接與測(cè)試電腦9針串口(公頭)功能定義:  [size=14.1376px]
URM37V3.2超聲波測(cè)距模塊與電腦串口的連接(請(qǐng)將模塊串口設(shè)置為RS232模式):  [size=14.1376px]
URM37V3.2超聲波測(cè)距模塊與單片機(jī)串口的連接(請(qǐng)將模塊串口設(shè)置為T(mén)TL模式):  [size=14.1376px]
伴侶的使用當(dāng)您按照上圖連接好模塊后,就可以使用我們的“URM37 V3.2伴侶”對(duì)模塊進(jìn)行在線測(cè)試了。  [size=14.1376px]
軟件的使用極其簡(jiǎn)單:先保證電腦上沒(méi)有其他軟件占用串口,然后運(yùn)行伴侶,先選擇COM口,再點(diǎn)擊“打開(kāi)串口”,右邊窗口選擇探測(cè)功能,選擇“16位溫度讀取”可以進(jìn)行溫度測(cè)量,選擇“16位距離讀取”可以進(jìn)行距離測(cè)量,“控制指令”窗口同時(shí)顯示將要發(fā)送的指令,點(diǎn)擊“啟動(dòng)功能”便完成操作。此時(shí),“返回?cái)?shù)據(jù)”窗口中間兩位顯示的是16進(jìn)制數(shù)據(jù),軟件下方狀態(tài)欄內(nèi)也會(huì)顯示出溫度及距離的10進(jìn)制數(shù)據(jù)。該軟件使用方便、數(shù)據(jù)直觀。 如果您還購(gòu)買(mǎi)了我們的專(zhuān)用舵機(jī),便可以使用舵機(jī)控制部分。如圖所示,在“舵機(jī)角度”窗口內(nèi)選擇要執(zhí)行的角度,同時(shí)在選擇“16位距離讀取”,然后點(diǎn)擊“啟動(dòng)功能”,舵機(jī)便旋轉(zhuǎn)到相應(yīng)的角度上,同時(shí)超聲波測(cè)量該方向上障礙物的距離。由此URM37V3.2配合舵機(jī)就可以完成空間障礙物掃描功能。
樣例// # Editor :Jiang from DFRobot// # Data :18.09.2012//#PWM output mode Arduino sample code// # Product name:ultrasonic scanner // # Product SKU:SEN0001// # Version : 0.2 // # Description:// # The Sketch for scanning 180 degree area 4-500cm detecting range // # Connection:// # Pin 1 VCC (URM V3.2) -> VCC (Arduino)// # Pin 2 GND (URM V3.2) -> GND (Arduino)// # Pin 4 PWM (URM V3.2) -> Pin 3 (Arduino)// # Pin 6 COMP/TRIG (URM V3.2) -> Pin 5 (Arduino)// #// # Description:// # The Sketch for scanning 180 degree area 4-500cm detecting range // # Connection:// # Pin 1 VCC (URM V3.2) -> VCC (Arduino)// # Pin 2 GND (URM V3.2) -> GND (Arduino)// # Pin 4 PWM (URM V3.2) -> Pin 3 (Arduino)// # Pin 6 COMP/TRIG (URM V3.2) -> Pin 5 (Arduino)// #int URPWM = 3; // PWM Output 0-25000US,Every 50US represent 1cmint URTRIG=5; // PWM trigger pin unsigned int Distance=0;uint8_t EnPwmCmd[4]={0x44,0x02,0xbb,0x01}; // distance measure command void setup(){ // Serial initialization Serial.begin(9600); // Sets the baud rate to 9600 PWM_Mode_Setup();} void loop(){ PWM_Mode(); delay(20);} //PWM mode setup function void PWM_Mode_Setup(){ pinMode(URTRIG,OUTPUT); // A low pull on pin COMP/TRIG digitalWrite(URTRIG,HIGH); // Set to HIGH pinMode(URPWM, INPUT); // Sending Enable PWM mode command for(int i=0;i<4;i++) { Serial.write(EnPwmCmd); } } void PWM_Mode(){ // a low pull on pin COMP/TRIG triggering a sensor reading digitalWrite(URTRIG, LOW); digitalWrite(URTRIG, HIGH); // reading Pin PWM will output pulses unsigned long DistanceMeasured=pulseIn(URPWM,LOW); if(DistanceMeasured>=10200) { // the reading is invalid. Serial.println("Invalid"); } else { Distance=DistanceMeasured/50; // every 50us low level stands for 1cm Serial.print("Distance="); Serial.print(Distance); Serial.println("cm"); }}模塊的應(yīng)用 [size=14.1376px] 
URM37 V3.2模塊的AVR評(píng)估板電路圖
 [size=14.1376px] 
由舵機(jī)組成的270度距離測(cè)量組合
AVR評(píng)估板的操作:電路通過(guò)74HC125三態(tài)門(mén)使單片機(jī)的一個(gè)串口分時(shí)復(fù)用來(lái)接收電腦輸入的指令和控制讀寫(xiě)URM37 V3.2模塊。配置WINDOWS自帶的超級(jí)終端作為電腦端的控制平臺(tái)。 評(píng)估板除了可以通過(guò)串口控制還可以通過(guò)操作URM37 V3.2模塊PWM腳和COM\TRIG腳來(lái)進(jìn)行數(shù)據(jù)的讀取。當(dāng)設(shè)置為自動(dòng)測(cè)量模式時(shí)評(píng)估板上的一個(gè)LED可以指示比較結(jié)果,當(dāng)測(cè)量距離小于設(shè)置比較距離時(shí)LED亮 使用中常遇到的問(wèn)題: 1.由于超聲波在空氣中衰減很厲害(與距離d的平方成反比),同時(shí)聲音在障礙物表面反射時(shí)會(huì)受很多因素 (如障礙物形狀、方向、質(zhì)地)的影響,因此超聲波測(cè)量的距離是有限的。 2.本系統(tǒng)遠(yuǎn)距離測(cè)試被測(cè)物是一面墻,近距離測(cè)試被測(cè)物可以是一支筆。根據(jù)使用環(huán)境和被測(cè)物的質(zhì)地的不同,將可能造成測(cè)量結(jié)果與提供的數(shù)據(jù)不符。差距不大,屬于正常情況。 3.上述所提及的舵機(jī)是我們專(zhuān)用的舵機(jī),可以旋轉(zhuǎn)270度。如果使用者自備舵機(jī),可能控制時(shí)序就有所不同,請(qǐng)使用者注意(舵機(jī)旋轉(zhuǎn)角度參考表內(nèi)數(shù)據(jù)參考使用)。
|