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