高振斌,吳金蘭,陳衛(wèi)科,劉權(quán)震
(1. 河北工業(yè)大學 信息工程學院,天津 300401;2. 華南理工大學 電子與信息學院,廣東 廣州 510641)
運動定位裝置遠程控制器的 FPGA 實現(xiàn)
高振斌1,吳金蘭1,陳衛(wèi)科1,劉權(quán)震2
(1. 河北工業(yè)大學 信息工程學院,天津 300401;2. 華南理工大學 電子與信息學院,廣東 廣州 510641)
設(shè)計并 實現(xiàn)了一種 基于 FPGA 和 SIM 908 模塊的遠程 定位運動系 統(tǒng).在 SOPC Builder 中構(gòu)建以 CPU、存儲器、定時器、Avalon 總線、UART 為核心的 NIOS 處理器,編程實現(xiàn)對 SIM 908 模塊 GPS 數(shù)據(jù)的接收以及控制指令的解析與處理,并根據(jù)指令計算電機驅(qū)動模塊控制參數(shù),驅(qū)動電機使該裝置按照給定路徑行駛.系統(tǒng)使用軟硬件協(xié)同設(shè)計技術(shù)實現(xiàn),控制命令解析由軟件編程實現(xiàn),而電機驅(qū)動與調(diào)整由 FPGA 上邏輯電路實現(xiàn),詳細闡述了軟硬件的設(shè)計過程.實驗結(jié)果表明該控制器能通過解析控制命令完成給定路徑行駛、實現(xiàn)定位.
GPS 定位;GPRS;控制指令;NIOS 處理器;中斷函數(shù)
智能小車是一種智能機器人,具有體積小、功耗低、可靠性好、操作簡單等特點,它集中運用了通信、人工智能和導航等技術(shù),可以通過對其進行特殊的設(shè)計實現(xiàn)特定功能.目前智能小車可實現(xiàn)自動壁障、紅外線循跡、尋找光源進入車庫、檢測貼片、躲避懸崖等諸多功能,但在實現(xiàn)車身定位和借助網(wǎng)絡(luò)驅(qū)動小車動作的領(lǐng)域研究較少.
為了研究特殊環(huán)境下智能車的行走及定位能力,本設(shè)計搭建了三輪小車作為實驗平臺,前兩輪平行排列為主動輪,最后一個輪為從動輪.實驗平臺配有供電系統(tǒng)、電機驅(qū)動系統(tǒng)、GPS/GPRS 定位裝置[1],光電檢測傳感器等模塊.在主控 FPGA 中構(gòu)建一個 NIOS 軟核[2-3]作為整個系統(tǒng)的核心,通過 NIOS 外接電路實現(xiàn)對實驗平臺的運動控制.借助GPRS網(wǎng)絡(luò)發(fā)送控制指令使該實驗平臺完成給定路徑行駛,實現(xiàn)自身定位.該平臺可作為野外作業(yè)的基礎(chǔ)平臺,在后期實驗過程中加上圖像采集裝置,可以更精準的控制平臺動作.
該系統(tǒng)由FPGA開發(fā)板、SIM 908 模塊、電機驅(qū)動模塊和光電檢測模塊組成,如圖1 所示.
SIM 908 模塊包含GPS和GSM兩部分,分別完成系統(tǒng)定位與通信功能.NIOS 軟核是整個系統(tǒng)的核心,它解析GPS模塊接收到的定位數(shù)據(jù)和GSM模塊接收到的控制指令,經(jīng)過處理后控制裝置運動.電機驅(qū)動模塊支持PWM調(diào)速.光電檢測設(shè)備負責檢測裝置轉(zhuǎn)速,反饋給驅(qū)動電路以實現(xiàn)電機的閉環(huán)控制.
圖1 整體設(shè)計框架圖Fig.1 The structureof overalldesign
對實驗平臺的控制分為2種情況:通過指令獲取裝置當前位置信息;通過指令控制裝置按指定路徑行駛,其中行駛方式分為直行、左轉(zhuǎn)和右轉(zhuǎn).電機驅(qū)動模塊接收PWM脈沖,從而決定平臺轉(zhuǎn)速,計算PWM脈沖所需參數(shù)從指令中獲取.運動類命令包括2種:直行和轉(zhuǎn)彎.
直行時通過指令設(shè)定行駛狀態(tài)、行駛路程和速度,以“SLxxxVxxx”格式發(fā)送指令.其中字母代表“直行”狀態(tài);Lxxx代表行駛路程值,用三位整數(shù)表示;Vxxxx代表車輪速度,用四位數(shù)表示(包括小數(shù)點).直行時設(shè)兩輪行駛路程為 L、速度為 V、轉(zhuǎn)速為 Q、行駛時間為 t、車輪半徑分別為 R .
直行時路程與車輪半徑、速度和轉(zhuǎn)速間的關(guān)系為
車輪轉(zhuǎn)彎示意圖如圖2所示.轉(zhuǎn)彎時由指令設(shè)定車輪轉(zhuǎn)彎方向、轉(zhuǎn)角、內(nèi)側(cè)車輪轉(zhuǎn)彎半徑和轉(zhuǎn)速,以 “Z YxxrxxVxxxx” 格式發(fā)送指令.其中 Z 代表“左轉(zhuǎn)”,Y 代表“右轉(zhuǎn)”;xx代表車輪轉(zhuǎn)彎角度,用兩位整數(shù)表示;rxx代表轉(zhuǎn)彎半徑值,用兩位整數(shù)表示;Vxxxx代表前內(nèi)側(cè)車輪速度,用四位數(shù)表示(包括小數(shù)點).
裝置轉(zhuǎn)彎時設(shè)車輪半徑為 R,內(nèi)輪轉(zhuǎn)彎半徑為 r,前兩輪之間的距離為 d,外輪轉(zhuǎn)彎半徑為 r+d ,內(nèi)外輪轉(zhuǎn)彎角度均為,內(nèi)外輪轉(zhuǎn)過的弧長分別為 L1、L2,內(nèi)外輪轉(zhuǎn)速分別為 Q1、Q2.其中車輪半徑 R和前兩輪間的距離d可以通過實際測量獲得,下面以車輪左轉(zhuǎn)為例推導各個量之間的關(guān)系
圖2 車輪轉(zhuǎn)彎示意圖Fig.2 The schematic diagram ofwheel turn
其中 L1=Vt=2RQ1t .
推出
同理可知右轉(zhuǎn)時各個量之間的關(guān)系為
計算出的時間用于定時器計時,定時時間到表明動作已完成,則運動停止.轉(zhuǎn)速 Q(Q1、Q2)經(jīng)編程轉(zhuǎn)化為PWM控制字 C(C1、C2),傳遞給驅(qū)動電路用于產(chǎn)生PWM控制字.
硬件設(shè)計主要包括 3 部分:構(gòu)建NIOS軟核,設(shè)計PWM脈沖產(chǎn)生模塊和光電檢測模塊.
3.1 整體運動控制電路
圖3 所示為NIOS軟核對裝置的運動控制過程.實驗平臺的運動方式包括直行 S、左轉(zhuǎn) Z 和右轉(zhuǎn) Y ,編程解析出指令中的運動方式控制量并傳遞給比較模塊.光電檢測傳感器用于檢測車輪實際轉(zhuǎn)速,將檢測到的脈沖個數(shù)in1、in2 經(jīng)定時計數(shù)后參與比較.當運動方式為直行時,比較模塊輸出脈沖個數(shù)的比較差值;運動方式為左轉(zhuǎn)和右轉(zhuǎn)時,比較模塊輸出的差值為 0.NIOS軟核將指令中的轉(zhuǎn)速值轉(zhuǎn)化為相應(yīng)的PWM控制字并通過I/O口輸出給調(diào)整模塊.調(diào)整模塊根據(jù)比較器輸出的差值對PWM控制字進行調(diào)整再輸出,同時調(diào)整模塊輸出車輪的使能控制信號.
圖3 整體電路控制電路圖Fig.3 The circuitdiagram of overallmotion control
3.2 構(gòu)建 NIOS 軟核
在 QuartusⅡ中新建一個圖形文件作為頂層文件,利用SOPCBuilder軟件構(gòu)建NIOS II軟核[4-5]并添加到頂層文件中.構(gòu)建的處理器結(jié)構(gòu)主要包括 NIOS IICPU、定時器、Flash 存儲器、SDRAM 控制器、IO 口、串口等.NIOS II處理器各部分之間的連接關(guān)系如圖4 所示,其中比較模塊根據(jù)I/O口輸出的運動方式控制量決定比較輸出,調(diào)整模塊根據(jù) I/O 口和比較模塊的輸出值調(diào)整PWM控制字.
3.3 PWM 脈沖產(chǎn)生模塊
裝置的運轉(zhuǎn)由 PWM[6]脈沖驅(qū)動.圖5為產(chǎn)生PWM脈沖的電路,圖6為該電路仿真波形圖.
仿真過程中時鐘周期設(shè)置為 10 ns,計數(shù)器 cntA 對時鐘上升沿個數(shù)進行計數(shù),PWM控制字 C 每隔 10.24s變化 1次,每次增幅為 30.計數(shù)器的輸出值A(chǔ)和PWM控制字C進行比較,當A小于C時,PWM輸出為 1,否則輸出為 0.從仿真圖可知,該模塊能根據(jù)控制字C產(chǎn)生PWM脈沖,C越大,PWM脈沖的占空比越大,車輪轉(zhuǎn)速越大;反之越小.
圖4 NIOSⅡ處理器結(jié)構(gòu)Fig.4 The structureof NIOS Ⅱ processor
圖5 PWM脈沖產(chǎn)生電路圖Fig.5 The diagram of PWM pulsegenerating circuit
圖6 PWM脈沖仿真圖Fig.6 The simulation diagram of PWM pulse
3.4 光電檢測電路
光電檢測電路用于檢測前兩輪的實際轉(zhuǎn)速,并對其進行比較.en 為'1'時電路生效,in1、in2 為光電檢測傳感器的輸出端脈沖,脈沖周期的大小用于指示前兩個車輪的實際轉(zhuǎn)速大小,先對in1、in2 去抖動操作并在時鐘上升沿對其進行計數(shù),同一個計時間隔內(nèi)的計數(shù)結(jié)果分別為 a、b.信號cnt為對時鐘上升沿個數(shù)進行計數(shù),當cnt計數(shù)溢出時電路對 a、b 進行比較.當時 a > b,out3=01,比較差值 diff1=a b;當時 a=b,out3 =00,比較差值 diff1=diff2=0;當時 a < b,out3=10,比較差值 diff2=b a.仿真如圖7 所示,由仿真圖知該電路能檢測車輪實際轉(zhuǎn)速并輸出比較差值.
圖7 光電檢測模塊波形仿真圖Fig.7 Thewaveform simulation diagram of photoelectric detectionmodule
3.5 調(diào)整電路
led1、led2 為軟核I/O口的輸出,out3、diff1、diff2 為光電檢測電路的輸出,兩個電路的輸出作為調(diào)整電路的輸入.L1、L2、L3、Z_F為調(diào)整模塊輸出的車輪使能端和正反轉(zhuǎn)控制端,DB1、DB2、DB3 為調(diào)整模塊輸出的 PWM 控制字.調(diào)整模塊根據(jù) out3、diff1、diff2 對 led1、led2 進行調(diào)整,將實際計數(shù)值小的一路脈沖加上比較差值再輸出,使直行時車輪轉(zhuǎn)速盡量保持一致.調(diào)整模塊仿真如圖8所示,由仿真圖知調(diào)整模塊能根據(jù)比較結(jié)果對led1、led2 進行調(diào)整.
軟件設(shè)計主要指編程實現(xiàn)模塊的初始化功能,接收 SIM 908 模塊數(shù)據(jù)并解析 GPS 定位信息[7]、接收并解析指令、向控制臺發(fā)送定位數(shù)據(jù)等功能.
4.1 主程序流程圖
圖8 調(diào)整模塊波形仿真圖Fig.8 Thewaveform simulation diagram of adjustmentmodule
圖9 為主程序執(zhí)行過程.初始化過程包括GSM和GPS兩個中斷初始化和SIM 908 模塊初始化.然后判斷實驗平臺當前動作時間是否到達,若定時到則判斷命令隊列是否有新命令未執(zhí)行,若無未執(zhí)行命令或定時未到,轉(zhuǎn)去判斷是否收到控制命令.若未收到則返回判斷定時時間是否到達;若收到則判斷命令是否有效.若命令為 dw,則獲取GPS 數(shù)據(jù)并發(fā)送;若命令以、或開頭,則存儲命令到命令隊列,同時置標志位.如果命令隊列有新命令未執(zhí)行,則讀取新命令,編程計算出、和的值,將和的值輸出給外部調(diào)整電路,設(shè)定定時初值啟動定時器,最后刪除已執(zhí)行命令.
4.2 GPS 中斷服務(wù)函數(shù)
GPS中斷接收服務(wù)程序的執(zhí)行過程如圖10所示,設(shè)定$GPRMC格式的定位數(shù)據(jù)以字符“$”開頭,以字符“*”結(jié)尾,接收到的頭和尾以及中間所有字符均存到一個數(shù)組里,便于解析函數(shù)使用.
4.3 GSM 中斷服務(wù)函數(shù)介紹
一般AT指令的返回值以回車符開頭和結(jié)尾,接收寄存器接收到字頭和自尾回車符后分別置標志位,特殊情況下單獨判斷.獲取控制指令內(nèi)容的返回值中包含3個回車符,當接收到字符串“+ CMGR”之后清除接收數(shù)組中的內(nèi)容,只存儲包含控制命令內(nèi)容的兩個回車符之間的數(shù)據(jù).GSM中斷服務(wù)程序流程圖如圖11所示.
圖9 主函數(shù)流程圖Fig.9 The flow chartof themain function
圖10 GPS中斷接收服務(wù)函數(shù)流程圖Fig.10 The flow chartof GPS interrupt receiving service function
圖11 GSM中斷服務(wù)函數(shù)流程圖Fig.11 The flow chartof GSM interruptservice function
5.1 定位數(shù)據(jù)的接收
裝置在行駛過程中,當接收到 “dw”指令就會返回給目標控制端處理后的定位數(shù)據(jù),數(shù)據(jù)包括當前日期、時間、經(jīng)緯度、對地速度等.
5.2 裝置速度的標定
實驗中令裝置在平坦路面上直線行駛,分別給定前兩輪相同的 PWM 控制字,依次為 78、85、92、99、106、113、120、127,記錄下裝置行駛 2m的時間,分別計算出裝置運行速度為 0.14m/s、0.15m/s、0.16m/s、0.17m/s、0.18m/s、0.19m/s、020m/s、0.21m/s.速度 v 和PWM 控制字 C 的大致關(guān)系如圖12 所示.
整理得到直行速度 v和PWM控制字C 之間的經(jīng)驗公式為
5.3 裝置運動結(jié)果及誤差分析
直線運動中,由控制指令給定速度值計算出PWM控制字 C,給定速度與實際速度對照如表1所示.觀察表可知,實際速度值與給定速度值接近.
表1 給定速度與實際速度對照表Tab.1 The comparison between the known speed and actualspeed
圖12 V_C對應(yīng)關(guān)系圖Fig.12 The diagram of V_C corresponding
轉(zhuǎn)彎運動中,由控制指令給定的轉(zhuǎn)彎角度與實際運動角度對照如表2所示.觀察表可知,給定角度與實際運轉(zhuǎn)角度值接近.
表2 給定轉(zhuǎn)角與實際轉(zhuǎn)角度對照表Tab.2 The comparison between the known angle and actualangle
通過測試不同路面的行駛情況發(fā)現(xiàn),裝置運行的實際速度與理論速度之間存在差值,實際測得的轉(zhuǎn)彎角度和給定轉(zhuǎn)彎角度之間略有偏差,這與車輪行駛的路面情況不完全一致有關(guān).
本文針對遠程定位運動控制技術(shù)的實際應(yīng)用需求,研究了一種基于FPGA的遠程定位運動控制實驗平臺,并對最終的設(shè)計成果進行了不同路況下的測試.測試結(jié)果表明該裝置具有較強的道路適應(yīng)性和可靠性,裝置能通過解析控制命令實現(xiàn)自身定位,并完成按給定路徑行駛.后續(xù)的工作將在現(xiàn)有基礎(chǔ)上進一步改進調(diào)整算法,使得裝置運行速度和拐彎角度更準確.
[1] 王濤,董海瑞.車載衛(wèi)星通信站天線自動控制系統(tǒng)設(shè)計 [J].電視技術(shù),2001(11):34-35.
[2] 王永州,范多旺,金靜,等.基于NIOS Ⅱ處理器GPS/GSM車輛監(jiān)控系統(tǒng)終端設(shè)計 [J].鐵路計算機應(yīng)用,2007,16(2):26-29.
[3] 黃海波,蔣偉榮,劉勇,等.基于SOPC的智能車輛道路識別與跟蹤 [J].儀器儀表學報,2012, 33(2):321-325.
[4] 李振峰,肖建.基于NIOSⅡ的SOPC實驗系統(tǒng)設(shè)計與開發(fā) [M].成都:西南交通大學,2012:23-42.
[5] 劉小雍.基于SOPC的GPS無線定位終端設(shè)計與實現(xiàn) [M].成都:西南交通大學,2011:12-28.
[6] 王玉花,郭書軍.NIOSⅡ系統(tǒng)Avalon 總線PWM設(shè)計 [J].現(xiàn)代電子技術(shù),2010(1):183-185.
[7] 劉斌,梁美美,李欣.基于NIOSⅡ的GPS信息接收系統(tǒng)設(shè)計與實現(xiàn) [J].現(xiàn)代電子技術(shù),2013,36(6):105-108.
[責任編輯 代俊秋]
The implementation of a remote controller for motion positioning device based on FPGA
GAO Zhen-bin1,WU Jin-lan1,CHEN Wei-ke1,LIU Quan-zhen2
( 1. School of Information Engineering, Hebei University of Technology, Tianjin 300401, China; 2. School of Electronic Information Engineering, South China University of Technology, Guangdong Guangzhou 510641, China )
The paper designs and implements a remote controller formotion positioning device based on FPGA and SIM 908module.Thedesign buildsaNIOSprocessorconsistofNIOSⅡ CPU,memory,the timer,Avalon bus,UARTs. The processor receivesGPSdata of SIM 908module,analysesand processesdata of control instructions,calculates the control parameters for themotor drivemodule and drives the device along a given path.The system uses hardware and software codesign technology.Control instructions are parsed by software,but the driver and adjustmentofmotor are implemented by the logic circuit.The paper introduces the design and implementation processof thehardware and software in detail.Experimental results show that the controller can complete a given path under the controlof control instructions,and realize positioningw ithin theacceptable error.
GPSpositioning;GPRS;control instruction;NIOSprocessor;the interrupt function
1007-2373(2014)05-0027-06
TP273.5
A
10.14081/j.cnki.hgdxb.2014.05.005
2014-06-25
河北省科技支撐計劃(13210305D)
高振斌(1973-),男(漢族),副教授,博士.