現代社會中機器人這個詞語已經不再新鮮,而且形形色色的機器人出現在我們的日常生活中。為了提高廣大單片機愛好者學習單片機的興趣,在凌陽科技教育推廣中心的興趣產品智能機器人的基礎上,配合超聲波傳感器的使用,使機器人具有障礙檢測功能。本文對這個避障機器人的軟硬件制作進行介紹。
1 引言
為了提高廣大單片機愛好者學習單片機的興趣,凌陽科技教育推廣中心推出了應用SPCE061A作為主控制器,外加電機驅動電路制作的智能機器人。該機器人采用特定人語音識別對機器人進行控制,可以完成向前走、倒退、左轉、右轉、跳兩首舞曲、向左瞄準、向右瞄準、發射、連續發射等功能。在此基礎上,配合凌陽科技教育推廣中心推出的超聲波測距模組,為機器人增加了活動過程中實時檢測前方障礙物、遇到障礙停止運動并向前方發射飛盤等功能,進一步豐富了機器人的功能,可以大大提高在校學生學習單片機的興趣。
2 模組特性簡介
2.1 SPCE061A特性簡介
SPCE061A是凌陽科技研發生產的性價比很高的一款十六位單片機,使用它可以非常方便靈活的實現語音的錄放系統,該芯片擁有8路10位精度的ADC,其中一路為音頻轉換通道,并且內置有自動增益電路。這為實現語音錄入提供了方便的硬件條件。兩路10位精度的DAC,只需要外接功放(SPY0030A)即可完成語音的播放。另外凌陽十六位單片機具有易學易用的效率較高的一套指令系統和集成開發環境。在此環境中,支持標準C語言,可以實現C語言與凌陽匯編語言的互相調用,并且,提供了語音錄放的庫函數,只要了解庫函數的使用,就會很容易完成語音錄放,這些都為軟件開發提供了方便的條件:
特性:
16位μ'nSP微處理器;
工作電壓:內核工作電壓VDD為3.0~3.6V(CPU),IO口工作電壓VDDH為VDD~5.5V(I/O);
CPU時鐘:0.32MHz~49.152MHz;
內置2K字SRAM;
內置32K閃存ROM;
可編程音頻處理;
晶體振蕩器;
系統處于備用狀態下(時鐘處于停止狀態),耗電小于2μA@3.6V;
2個16位可編程定時器/計數器(可自動預置初始計數值);
2個10位DAC(數-模轉換)輸出通道;
32位通用可編程輸入/輸出端口;
14個中斷源可來自定時器A / B,時基,2個外部時鐘源輸入,鍵喚醒;
具備觸鍵喚醒的功能;
使用凌陽音頻編碼SACM_S240方式(2.4K位/秒),能容納210秒的語音數據;
鎖相環PLL振蕩器提供系統時鐘信號;
32768Hz實時時鐘;
7通道10位電壓模-數轉換器(ADC)和單通道聲音模-數轉換器;
聲音模-數轉換器輸入通道內置麥克風放大器和自動增益控制(AGC)功能;
具備串行設備接口;
低電壓復位(LVR)功和低電壓監測(LVD)功能;
內置在線仿真板(ICE,In- Circuit Emulator)接口。
2.2 超聲波模組簡介
2.2.1 功能簡介
三種測距模式選擇跳線J1(短距、中距、可調距):
短距:20cm~100cm左右(根據被測物表面材料決定),精度1cm;
中距:70cm~400cm左右(根據被測物表面材料決定);
可調:范圍由可調節參數確定,當調節在合適的值時,最遠測距700cm左右;
2.2.2 電氣參數
超聲波傳感器諧振頻率:40KHz
模組傳感器工作電壓:4.5V~9V
模組接口電壓:4.5V~5.5V
2.2.3 超聲波發射電路原理圖
圖 2-1 超聲波諧振頻率調理電路原理圖
由單片機產生40KHz的方波,并通過模組接口(J4)送到模組的CD4049,而后面的CD4049則對40KHz頻率信號進行調理,以使超聲波傳感器產生諧振。
2.2.4 超聲波回波接收處理電路
圖 2-2 超聲波回波接收處理電路
超聲波接收處理部分電路前級采用NE5532構成10000倍放大器,對接收信號進行放大;后級采用LM311比較器對接收信號進行調整,比較電壓為LM311的3管腳的輸入,可由J1跳線選擇不同的比較電壓以選擇不同的測距模式。
2.2.5 電源接口
圖 2-3 超聲波模組的電源接口電路
為外部電源接口,最高電壓不要超過12V,J2為電源選擇跳線,VCC_5即為由61板通過10PIN排線引入模組的電源;VCC即為模組的放大器、調理電路的供電電源。當用戶使用61板為其供電時,要把VCC與VCC_5V短接;而使用外部電源時,要把VCC與VCC_IN短接。
2.2.6 測距模式選擇跳線
圖2-4 超聲波測距模式選擇跳線電路
模組提供了測距模式選擇跳線J1,可以選擇短距測量模式、中距測量模式,或距離可調模式。跳線選擇LOW時為近距測量模式,選擇HIG時為中距測量模式;選擇SET時為距離可調模式。凌陽科技大學計劃提供了短距測量模式和中距測量模式的完整程序(其中ultrasonic_Low為短距測量模式程序;ultrasonic_long為中距測量模式程序)。
2.2.7 模組接口
圖 2-5 超聲波模組接口電路
用戶只需要把前面的電源輸入跳線J2、測量模式選擇跳線J1設置好后,用排線把J5與SPCE061A的IOB口低八位相接,J4與IOB口高八位相接,即可使用了。
2.2.8 注意事項
◆提供給模組的電源必須在4.5V以上,而且盡量保持電源電壓的穩定。
◆模組外接電源接口J3接入的電源不要超過12V。
◆模組工作的性能與被測物表面材料有很大關系,如毛料、布料對超聲波的反射率很小,會嚴重影響測量結果。
◆模組的中距測距模式的精度與程序設計有關,提供的范例程序中沒有對測距結果進行標定,所以有3~5cm的距離誤差時是正常的。
2.3 機器人簡介
2.3.1 機器人驅動電路圖
機器人驅動電路圖如圖2-6所示:
圖 2-6 機器人驅動電路圖
機器人驅動電路采用功率較大的三極管搭成H橋來驅動電機,可以實現電機的正向旋轉與電機的反向旋轉。這些電機包括2個用于走路的電機與一個頭部轉向的電機。另外用了一個三極管驅動單向旋轉的電機,包括加速電機與發射電機,驅動電路比較簡單。
2.3.2 主要功能
◆通過語音命令對其進行控制;
◆可以跳兩首舞曲;
◆走步功能、轉向功能、轉頭功能;
◆發射飛盤功能;
2.3.3 機器人實物圖
圖 2-7 機器人實物圖
2.3.4 注意事項
◆機器人在發射飛盤時不要面向人,避免受傷
◆機器人要輕拿輕放應該避免摔打
◆在安裝電池時注意正負極,否則容易燒壞機器人電機或主控制板
3 系統總體方案介紹
用61板來控制機器人,使用了IOA7-IOA15以及IOB2和IOB9資源,另外使用了揚聲器。如圖3-1所示:
圖 3-1 系統的結構框圖
系統主要由61板、超聲波測距模組和機器人驅動電路構成。61板作為整個系統的主控板,超聲波測距模組在機器人運動期間定期檢測前方是否存在障礙物,驅動電路驅動電機,在主控板61板的控制下完成各個動作。另外增加了特定人語音識別的功能,通過命令來控制機器人,使機器人智能化。
4 系統軟件設計
在主函數中調用相關函數完成特定人語音的訓練,然后在訓練成功后進行語音識別,根據識別的命令執行相關的操作。程序流程如圖4-1所示:
圖 4-1 主程序流程圖
根據FLASH中的標志位來進行判斷是否為第一次下載。使用庫函數BSR_ExportSDWord(uiCommandID)將訓練好的語音模型導出存儲到FLASH中進行操作,然后再調用讀寫FLASH函數。在進行語音識別時,首先讀取FLASH將語音模型取得,然后調用BSR_ImportSDWord(uiCommandID)函數將語音資源載入內存。在識別出命令后,執行相關動作,相關動作操作就是操作電機的正向或反向旋轉同時配合延時與播放聲音組合起來形成不同的動作。
避障的實現是在機器人活動期間完成的。
在機器人活動期間會播放背景聲音或音樂。播放采用后臺方式,使用4096Hz時基中斷處理語音解碼。這樣可以釋放大量CPU資源在前臺處理其他事務。
語音播放函數流程圖如圖4-2所示。
圖 4-2 語音播放程序流程圖
在4096Hz時基中斷中進行的處理流程如圖4-3所示。
圖 4-3 語音播放中斷服務程序流程圖
在播放背景音樂的同時,程序將調用超聲波測距函數進行機器人前方障礙物檢測。測距函數利用TimerB產生40KHz的PWM方波驅動超聲波發射傳感器。當接收傳感器接收到回波后經過處理電路處理將引起SPCE061A的外部中斷,計算從發射超聲波到產生中斷的時間,即可計算出目標物體的距離。測距函數流程如圖4-4所示。
圖 4-3 語音播放中斷服務程序流程圖
在播放背景音樂的同時,程序將調用超聲波測距函數進行機器人前方障礙物檢測。測距函數利用TimerB產生40KHz的PWM方波驅動超聲波發射傳感器。當接收傳感器接收到回波后經過處理電路處理將引起SPCE061A的外部中斷,計算從發射超聲波到產生中斷的時間,即可計算出目標物體的距離。測距函數流程如圖4-4所示。
圖4-5 編譯、鏈接圖
步驟二:下載程序代碼到機器人的61板上。
步驟三:打開機器人的電源,進行語音訓練,訓練過程按照下面進行:
按順序訓練以下15條指令:"名稱","開始","準備","跳舞","再來一曲","開始","向前走","倒退","右轉","左轉","準備","向左瞄準","向右瞄準","發射","連續發射"。每條指令要訓練兩遍。當一條指令被正確識別時會提示進入下一條;如沒有被識別會要求重復該指令,直到正確識別為止。
步驟三:如果訓練成功則進入語音識別狀態,如果訓練沒有成功則重復訓練。由于SPCE061A的FLASH存儲器只有32K,所以15條指令需要分組存放。在這里分成3組,每組5條指令。在不同組指令中交換需要根據觸發名稱,所以在識別狀態,要執行動作首先需要觸發名稱,就是訓練的第一條命令,然后可以識別第一組的其余四條命令。在觸發第一條指令,然后再觸發第二條指令,就可以識別第三條指令,參考下圖:
圖 4-6 機器人操作示意圖
步驟四:在機器人前進、倒退、跳舞時,用手或其他物體靠近機器人前方,機器人會發出"HoHooHoHoo"的聲音,并停止動作,接著,向前方發射飛盤。
應用SPCE061A外加電機驅動控制電路可以實現多個電機的控制,完成機器人的許多動作。配合超聲波傳感器等感測裝置,可以為機器人增加更多的功能。單片機愛好者可以自己制作電機驅動電路,選擇多式多樣的傳感器,發揮想象力制作出自己的機器人。