曾妍
(四川信息職業(yè)技術學院,四川廣元628040)
?
微型機器人無線群組化控制器設計與實現*
曾妍*
(四川信息職業(yè)技術學院,四川廣元628040)
摘要:針對微型機器人群組控制對無線傳輸及多路舵機控制的需求,提出了一種基于STC12C5A60S2及CC2530實現對16路舵機無線群組控制的控制器設計方案,利用輪詢機制和脈寬遞增方法對多路舵機轉角和轉速獨立控制,并基于Z-STACK協議棧實現自組網、無線傳輸和遠程ISP下載。經實驗測試,實現了對含多路舵機的多個微型機器人的無線群組控制。
關鍵詞:機器人控制器;輪詢算法;群組控制;遠程升級
在足球運動機器人、舞蹈表演機器人,以及以機器人為載體的多點傳感參數動態(tài)采集應用領域,常需用到具備無線數據傳輸、動態(tài)組網、多路舵機控制、傳感器參數采集功能的控制器。文獻[1]提出了一種時分復用8路舵機控制器,根據舵機PWM信號特點,利用單片機定時器功能實現對多路舵機的間歇控制;文獻[2]提出了一種基于DSP的12路舵機控制器,利用DSP的事件處理能力和定時器功能實現舵機控制中的事件處理和分時控制;文獻[3]也提出了一種基于時分復用并具有轉速調節(jié)功能的32路舵機控制器。這些控制器重在分析實現對舵機的高速和精確控制的方法,所設計的電路缺乏必要的功率保護功能,很容易因掛載舵機過多而燒壞控制器,并且不具備動態(tài)組網及無線控制等功能,無法實現對多個機器人的遠程控制。為此,提出了一種無線群組化控制的多路舵機控制器的設計方案及實現方法。
1.1舵機PWM控制要求及實現方法
舵機是一種位置伺服驅動器,通常采用周期為20 ms的PWM信號控制,脈寬從0.5 ms~2.5 ms對應舵機位置-90°~+90°的線性變化范圍[1]。多路舵機控制器的PWM信號產生方法主要有兩種:一是運行CPLD、FPGA、DSP等的高速運算能力提供基于硬件的PWM支持;二是利用微處理器的定時器功能,提供基于軟件的PWM支持[2]。由于CPLD等不具備事件處理能力,因此本設計采用了基于STC12C5A60S2單片機的軟件PWM方案。STC12C5A60S2是運行速度比普通51系列單片機快8倍~12倍的增強型51系列單片機,擁有2路PWM、1280 byte RAM、60 kbyte Flash、4個16 bit定時器、獨立串行通訊波特率發(fā)生器,以及單個驅動能力可達20 mA的32個I/O口,因此非常適合用作多路舵機控制器[4]。
1.2無線群組控制方式選擇
多機器人無線群組控制方式需滿足3個要求:能對網絡中的各通信節(jié)點進行管理,包括網絡建立、入網發(fā)現、路由管理及動態(tài)組網;數據傳輸有效性高,無線數據的傳輸速率應滿足舵機控制實時性要求;傳輸應與控制分離,即定制的傳輸協議應做到透明傳輸。為此,本設計選用ZigBee傳輸方式,通過在CC2530上移植Z-STACK協議棧及應用開發(fā),實現對多個控制器的自組網管理及指令、數據的無線傳輸。
1.3控制器的硬件組成
據上述分析而制定的硬件設計方案如圖1所示,主要由直流電源電路、CC2530無線傳輸模塊(終端節(jié)點)、STC12C5A60S2單片機最小系統(tǒng)、光耦隔離電路、USB轉串口電路組成。
圖1 控制器的硬件組成
電源電路用于為整個系統(tǒng)提供6 V和3.3 V直流電,供舵機及控制器工作使用。光耦隔離電路的作用主要有兩點:一是隔離單片機I/O口和舵機控制端。雖然STC12C5A60S2單片機每個I/O口驅動能力高達20 mA,但STC公司建議整個芯片I/O的工作電流不超過120 mA[4],所以直接用I/O口控制16路舵機時很容易因芯片驅動電流過大燒壞芯片,加入光耦隔離電路可有效解決該類問題。二是隔離舵機供電和控制器供電,避免舵機對控制器的干擾。在單電源供電系統(tǒng)中,舵機工作會對單片機產生干擾,因此舵機與舵機控制器應采用相互隔離不共地的雙電源供電[5],光耦隔離電路可實現雙電源的隔離。
控制器運行中,PC控制端既可以通過USB轉串口電路直接向單片機下發(fā)控制指令控制舵機運行,也可以通過CC2530協調器以無線方式向CC2530終端節(jié)點下發(fā)指令,并經終端節(jié)點以串口通訊方式將指令下發(fā)單片機控制舵機運行。同時,系統(tǒng)還可利用STC12C5A60S2的ISP(In System Programable)技術,實現STC12C5A60S2的在線編程,便于對舵機控制程序的遠程更新。
2.1電源電路選型與設計
多路舵機控制系統(tǒng)中,舵機的工作總電流是影響電源電路選型與設計的關鍵因素。以16路輝盛996R舵機為例,同時運轉的總電流可達20 A,因此最好采用大電流開關電源或直接用電池供電。為便于機器人的移動和滿足隔離需要,本系統(tǒng)采用圖2所示雙7.4 V鋰電池供電方案,鋰電池1經D25SB60降壓后輸出約6 V電壓供給舵機,鋰電池2經三端穩(wěn)壓器后,輸出3.3 V電壓供給控制器。由于多路舵機工作電流大,無法通過線性穩(wěn)壓器降壓,因此大電流整流橋堆D25SB60作降壓芯片,利用橋堆中的二極管將7.4 V電壓降為6 V。鋰電池1和鋰電池2采用不共地連接,其隔離方法在圖3中展示。
圖2 電源電路
2.2STC12C5A60S2對舵機的控制電路設計
STC12C5A60S2的I/O口需經光耦隔離后方控制舵機。由于舵機控制采用周期僅為20 ms的PWM信號,因此需選用具有較短tPHL和tPLH的高速光耦,否則易因PWM波形畸變影響舵機工作穩(wěn)定性,本系統(tǒng)選用高達10 Mbit/s的高速光耦6N137實現隔離[6]。以P1.2口控制舵機為例,其應用電路如圖3所示,單片機輸出的PWM信號從6N137的3號引腳輸入,經光耦隔離后從6號引腳輸出控制舵機。多路舵機控制系統(tǒng)中,需為每個控制I/O口各設計一路光耦隔離電路。圖3中,加入光耦電路后還實現了控制器供電Vcc1和舵機供電Vcc2的不共地隔離。
圖3 單片機控制舵機電路
2.3CC2530與STC12C5A60S2的串口通訊電路設計
CC2530與STC12C5A60S2的串口通訊需滿足數據傳送和對STC12C5A60S2的ISP編程兩個需求,其電路如圖4所示。由于STC12C5A60S2的串口通訊和ISP編程均由6號、7號引腳(RXD和TXD)完成,而且所選用CC2530與STC12C5A60S2均工作在3.3 V電平,所以可將二者串口的RXD和TXD交叉連接實現串口通訊。加入K1、K2可用于選擇與STC12C5A60S2通訊的對象(CC2530或PC)。由于STC12C5A60S2 ISP編程需冷啟動[4],因此設計了Q1、C6、C7、R4等構成的開關電路,在ISP下載時由CC2530的P1.5控制晶體管Q1先截止后導通,從而冷啟動STC12C5A60S2。
圖4 CC2530與STC12C5A60S2的串口通訊電路
3.1傳輸控制協議設計
從圖1可知,上位機(PC)可以通過無線及USB兩種方式控制舵機運行。以無線控制方式為例,指令傳輸需經過PC-CC2530協調器間的串口、CC2530協調器-CC2530終端的空中接口、CC2530終端-STC12C5A60S2間的串口等3個接口,為了確??煽總鬏敿皾M足控制、遠程ISP下載需要,需約定3個接口間的通訊協議,才能確保正確收發(fā)數據。
PC-CC2530協調器間的串口需傳輸無線網絡管理、傳感參數、舵機控制、ISP下載4類數據流,幀結構如表1所示。其中,目標地址表示協調器下發(fā)數據的目標對象,可以告知CC2530協調器是以廣播、組播,還是點對點等方式與下級節(jié)點通信。消息簇用于區(qū)分不同的數據流,其值將直接封裝進ZSTACK協議棧的無線發(fā)射函數中。幀類型用于區(qū)分相同消息簇下不同功能的數據幀??値瑪?、本幀序號、本幀長度等字段來滿足不同數據量的傳輸需求。ZigBee無線網絡管理主要用于路由發(fā)現、拓撲管理、功率控制,它與傳感參數、舵機控制等所需傳輸的數據量均比較小(一般為幾十byte),用單幀結構即可完成傳輸,而ISP下載數據流可達數十kbyte,必須采用多幀結構傳輸。
表1 PC-CC2530協調器串口通訊幀結構 單位:byte
表2所示為CC2530協調器-CC2530終端的空中接口傳輸控制幀結構。對于舵機控制及ISP下載數據流,該接口基于透明原則進行傳輸。無線網絡管理及傳感參數采集數據流將由CC2530處理并返回響應數據,不再轉發(fā)。
表2 CC2530協調器-CC2530終端的空中接口通訊幀結構單位:byte
CC2530終端-STC12C5A60S2串口主要用于透明原則傳輸舵機控制指令、ISP下載數據,以及STC12C5A60S2的有關響應數據,傳輸幀結構如表3所示。其中,數據字段需經特殊設計,在此用“#舵機號P脈沖寬度T移動時間 ”數據實現對單只舵機的控制[3],將多個該類控制數據依次組合即可控制多個舵機,這樣可滿足對不同數量舵機的控制,其靈活性較之于采用固定幀長結構的設計更為優(yōu)化。
表3 CC2530終端-STC12C5A60S2串口通訊幀結構
3.2主要軟件實現方法
3.2.1數據傳輸可靠性控制方法
各接口均需按協議約定的幀結構對所接收數據進行解析,才能確保數據的可靠傳輸,因此接收數據時的狀態(tài)控制就是影響傳輸可靠性的關鍵。執(zhí)行狀態(tài)控制的基本思路是設置狀態(tài)機,根據當前狀態(tài)決定是否接收數據及下一步應轉移到的狀態(tài)。以表2所示幀結構為例,利用狀態(tài)機解析各字段數據的過程如圖5所示,首先將狀態(tài)機置于接收幀頭狀態(tài),然后將接收的數據與所定義的幀頭對比,若是幀頭則將接收狀態(tài)轉移到接收幀類型狀態(tài),若不是幀頭或超時,則繼續(xù)接收幀頭。后續(xù)狀態(tài)的轉移及數據接收過程依次類推,待接收完一幀數據后,將接收狀態(tài)轉移到開始,等待接收新的數據幀。
圖5 接收狀態(tài)機轉換示意圖
3.2.2多路舵機轉角與轉速控制方法
多路舵機角度控制常用方法是分時控制[1],即根據舵機轉角范圍將20 ms PWM脈沖周期劃分為N個時隙,每個時隙控制1路舵機,這樣在20 ms內就可控制20/N(僅取整數部分)路舵機。
分時控制實現簡單,但無法真正做到同時控制多路舵機,為此提出一種基于輪詢機制的實現方法,其執(zhí)行流程如圖6所示。上位機程序首先將每個舵機運轉的角度αi(i = 0~16,αi=-90°~+90°,)按照公式(αi/180×250)轉化為脈沖寬度計數值βi;在STC12C5A60S2中,定時器按照可變周期T1進行計數,并將計數值逐一與βi進行比較,根據比較結果控制I/O口輸出不同電平,從而輸出PWM信號調節(jié)轉角?;谳喸兯惴ǖ膬?yōu)勢在于既可以通過分時控制方式靈活設置各路舵機的啟動時間,又能充分發(fā)揮同時隙對多個舵機的控制能力,實現真正意義上的多路舵機轉角控制。
舵機的轉速受當前位置與目標位置的角度差影響,角度差越大舵機轉速越快,反之轉速越慢。因此,若將舵機所需轉動角度劃分為多個小角度遞進控制,即將控制舵機所需PWM信號每個周期的脈沖寬度(或占空比)以不同的微量ΔP遞增或遞減,就可調節(jié)舵機的轉速[7]。ΔP的取值會影響舵機的工作穩(wěn)定性和輸出力矩,ΔP小時舵機工作穩(wěn)定但輸出力矩趨小,反之輸出力矩大但穩(wěn)定性弱。ΔP的具體取值受表3所示協議的移動時間T、STC12C5A60S2內定時器的定時周期T1、PWM信號周期T2、轉角總變化范圍Δα影響,建議的計算方法為ΔP =[(2.5-0.5)/180]× [Δα×(T/T2)](其中,ΔP的單位是ms)。編程時可分別為每個舵機綁定當前位置脈寬計數值(φi)、目標位置脈寬計數值(即βi)、脈寬微增量ΔP對應計數值(Δi)等3個變量,并在定時器中斷服務程序中按圖7所示流程執(zhí)行。
圖6 基于輪詢機制的多路PWM信號產生示意圖
圖7 基于微增量的單路PWM信號產生示意圖
3.2.3STC12C5A60S2單片機遠程ISP下載實現方法
STC12C5A60S2單片機的Flash中內置有ISP引導程序,CC2530終端節(jié)點按照指定的ISP協議啟動引導程序并將STC12C5A60S2目標代碼下發(fā),即可實現對STC12C5A60S2的下載。但由于通過keil等編譯器生成器的目標代碼一般為hex文件,CC2530無法像PC一樣通過專用工具軟件直接下載hex文件到STC12C5A60S2,因此需先將hex文件轉換為bin文件,再執(zhí)行下載操作。為降低CC2530處理的復雜度,轉換的工作應交由PC端完成。
由于ISP下載速率快,要通過CC2530無線傳輸方式將目標代碼實時下發(fā)并寫入STC12C5A60S2很難實現,因此需先由CC2530接收并存儲,待收到完整的目標代碼后,再執(zhí)行ISP下載操作。CC2530的片內SRAM僅有8 kbyte,無法滿足大于8 kbyte的目標代碼下載,因此需用Flash來存儲目標代碼[8]。受CC2530的Flash分頁存儲機制、Flash在存儲自身系統(tǒng)程序后空間有限、寫入到STC12C5A60S2的目標代碼地址范圍不一定連續(xù)等因素影響,必須采用高效的存儲算法,才能充分利用CC2530的Flash空間[9]。本系統(tǒng)采用圖8所示的存儲結構,首先將目標代碼分段,然后將每段的長度及入口地址建立索引表,在ISP下載時根據索引表提取目標代碼并寫入STC12C5A60S2中。在Z-STACK協議棧中,對Flash的讀寫是通過uint8 osal_nv_read(uint16 id,uint16 offset,uint16 len,void * buf)和uint8 osal_nv_write (uint16 id,uint16 offset,uint16 len,void * buf)兩個函數實現,其中的id表示應用程序操作Flash的ID號,其值在0x0201~0x0FFF間[10]。圖8中,目標代碼起始地址被用作id,目標代碼長度被用作len。
圖8 目標代碼存儲結構示意圖
CC2530對STC12C5A60S2的ISP下載屬于脫機編程,因此需在CC2530上模擬PC對STC12C5A60S2下載的協議流程。本系統(tǒng)采用圖9所示方案執(zhí)行下載操作,CC2530首先以指定波特率連續(xù)發(fā)送字節(jié)流0x7F到STC12C5A60S2,同時利用圖4所示電路中的P1.5口冷啟動STC12C5A60S2,STC12C5A60S2冷啟動后會返回響應并與CC2530同步波特率,然后CC2530以128 byte為單位,將目標代碼下載到STC12C5A60S2[9]。
圖9 STC12C5A60S2 ISP下載流程
3.2.4CC2530無線群組化控制方法
本系統(tǒng)采用Z-STACK協議棧實現無線群組化控制。Z-STACK協議棧采用了輪詢機制實現對多任務的調度,靈活的消息簇處理機制可滿足舵機控制中多功能需求。對于控制器上的CC2530終端節(jié)點而言,主要需提供舵機控制、ISP下載、節(jié)點在線檢測、傳感參數采集等服務,其運行流程如圖10所示。
圖10 CC2530終端節(jié)點事件處理流程
為了驗證方法的可行性,分別從無線傳輸、舵機轉角及轉速控制、ISP遠程下載3個方面進行了實驗驗證。
4.1無線傳輸性能測試
實驗中以1個CC2530協調器和3個CC2530終端節(jié)點(舵機控制器)構建最長傳輸距離不超過20 m的星型網絡,并利用串口調試助手展示協調器和終端節(jié)點的串口數據,從自組網及數據傳輸兩個方面對無線傳輸性能進行了測試。
實驗中分20次先啟動協調器、再啟動終端節(jié)點和50次先啟動3個終端節(jié)點、再啟動協調器兩種情況對自組網性能進行實驗,并在每次終端節(jié)點入網后各進行了50次廣播方式(終端節(jié)點處于靜態(tài)條件下,指令下發(fā)周期>3 s)獲取終端節(jié)點網絡參數指令測試實驗,測試結果如表1所示。由表1可知,在先啟動協調器再啟動終端情況下節(jié)點全部入網,而先啟動終端再啟動協調器情況下則無法確保入網,但兩個測試實驗中無線傳輸的正確率均達到100%。
表1 自組網與無線傳輸性能測試結果
4.2舵機轉角及轉速控制性能測試
實驗中通過PC直接驅動舵機控制器對舵機的轉角和轉速控制性能進行測試,在空載情況下,從示波器輸出波形如圖11所示(僅測試1路),由圖可見I/O口PWM信號波形準確、肉眼觀察無毛刺。
圖11 PWM測試波形
在負載舵機數量從1~16逐個增加的情況下,舵機轉速獨立可調、轉角在-90°~+90°可調但有一定誤差,經分析主要原因有兩點:一是受舵機間結構差異影響,二是受STC12C5A60S2定時中斷耗時及轉速調節(jié)脈寬微量ΔP精度影響。
在前兩個實驗基礎上,進一步組建了包含1個協調器和3個控制器,每個控制器帶16路負載舵機的機器人無線群組化控制測試系統(tǒng)。經測試,協調器能對3個機器人進行獨立或群組控制。
4.3ISP遠程下載功能測試
為了測試ISP遠程下載的可行性,首先基于STC12C5A60S2編寫了一個Code大小為69B的最簡程序,實現每隔0.5 s翻轉P1口電平狀態(tài),然后將其bin文件進行ISP遠程下載。在20次測試中,通過示波器觀察所有入網控制器的STC12C5A60S2單片機的P1口波形均正常,說明程序均得以更新,ISP下載成功。為進一步測試ISP遠程下載能力,采用逐步增大bin文件大小的方式執(zhí)行遠程下載,發(fā)現bin文件大于21 kbyte后的下載成功率明顯降低。通過對比CC2530終端節(jié)點存儲bin目標代碼時串口輸出的數據與bin原始數據,發(fā)現ISP不成功的主要原因是PC通過串口下發(fā)數據到CC2530協調器時數據幀過長,造成協調器因不能有效接收而丟包,從而導致終端節(jié)點接收的數據與原始bin數據有偏差。通過降低PC下發(fā)數據的幀長和下發(fā)的速率,可明顯提高下載成功率。
根據微型機器人群組控制需求及舵機控制原理,基于STC12C5A60S2及CC2530單片機設計了一種多通道無線群組控制器,利用STC12C5A60S2同時輸出16路獨立的PWM信號控制16路模擬舵機,并通過CC2530構建的無線網絡實現對多個機器人的群組控制,從而形成了一種適用于操作微型機器人的無線群組化控制器。
參考文獻:
[1]霍麗霞,羅衛(wèi)兵,遲曉鵬.多通道舵機控制器設計[J].現代電子技術,2010,33(21):73-75.
[2]張龍,孟偲,劉穎,等.仿壁虎機器人多路舵機控制器設計[J].微特電機,2010,38(9):54-58.
[3]李楊,任文博,馮曉明,等.基于單?片機的六足機器人多路舵機控制系統(tǒng)設計[J].機械工程師,2013(12):90-91.
[4]STC12C5A60S2系列單片機器件手冊[EB/OL].[2013-12- 30].http://www.stcmcu.com.
[5]吳華波,錢春來.基于AT89C2051的多路舵機控制器設計[J].單片機與嵌入式系統(tǒng)應用,2006(8):55-58.
[6]6N137:8-Pin DIP 10 Mbit/s Single-Channel High Speed Logic Gate Output Optocoupler[EB/OL].[2008-07-20].https://www.fairchildsemi.com.
[7]丁俐,余瑾,吳垠,等.基于PIC單片機的仿生機器魚的舵機控制[J].微計算機信息,2010(14):88-90.
[8]A True System-on-Chip Solution for 2.4-GHz IEEE 802.15.4 and ZigBee Applications[EB/OL].[2014-09-24].http://www.ti.com.cn.
[9]王桂喜,胡平平.STC單片機集成下載器的設計與實現[J].北京機械工業(yè)學院學報,2011,(5):75-79.
[10]青島東合信息技術技術有限公司.ZigBee開發(fā)技術及實踐[M].西安:西安電子科技大學出版社,2014:229.
曾 妍(1982-),女,漢族,四川廣元人,碩士研究生、講師,現工作于四川信息職業(yè)技術學院電子工程系,物聯網應用技術專業(yè)骨干教師,主要從事嵌入式及無線傳感器網絡應用研究,zengyan628040@163.com。
A Mechanic Arm and Hand Control System Design Based on Infrared and Color Image Sensors
ZHU Rui1,WU Minjun2,JIN Hongsheng2,TANG Yongming2*
(1.School of Information Science and Engineering,Southeast University,Nanjing 210096,China;
2.School of Electronic Science and Engineering,Southeast University,Nanjing 210096,China)
Abstract:A design of mechanic arm and hand control system is proposed.The hardware system is mainly composed of a Kinect device with infrared and color image sensors,an upper computer on Atom Platform,a steering engine controller,and a set of mechanic arm and hand.Multiple algorisms including image segmentation and recognition,Support Vector Machine(SVM),linear smoothing and joint mapping are applied to enable several instant tracking and simulating modes.The combination of a graphical user interface(GUI)based on C# GUI and a 3D simulating platform based on Java3D are introduced to enhance user experience.The system is featured in its high degree of accuracy,low latency and strong robustness to the environment.It is valuable in practical as well as prospective application.
Key words:sensor; control system; modeling; infrared sensor; mechanic arm and hand; recognition; GUI
doi:EEACC:7210B; 7230G10.3969/j.issn.1005-9490.2015.04.018
收稿日期:2014-11-26修改日期:2014-12-19
中圖分類號:TP368.2; TP242.6
文獻標識碼:A
文章編號:1005-9490(2015)04-0798-07
項目來源:四川省經濟和信息化委員會2012年“兩化融合”項目(2012XM037)