徐明娜,張 峰,寇志偉
(1.內蒙古工業大學 工程訓練中心,呼和浩特 010051;2.二連浩特出入境檢驗檢疫局 技術中心,二連浩特 011100)
機器人控制技術涉及了計算機技術、自動控制技術、傳感器技術、通訊技術、人工智能、材料科學和仿生學等多類學科[1,2]。
目前,國外教學機器人大多與工業相結合,其具備了工業機器人類型繁多、控制精度高的特點,但是這類教學機器人大多以軟件編程為主且價格昂貴,用戶對其控制方面的開發受到很大程度上的限制。
國內的機器人控制,主要采用單片機、嵌入式工業控制模塊、數字信號處理器等。其中采用比較廣泛的是單片機,其具有結構簡單、經濟性好、開發周期短等特點,比起后兩者更適用。單片機種類繁多,MCS51、AVR、STM等均應用比較廣泛。傳統的8位或者16位單片機, 存在硬件資源有限、運算和處理速度慢的問題。高速DSP的出現雖然使得系統模塊化和全數字化,但其開發套件成本高。32位ARM微處理器的出現,較好地解決了這些矛盾[3,4]。國內有不少高校和企業已經研制出了較為成熟的教學機器人,這些教學機器人都有其各自特點,但仍有不少方面有待進一步開發,特別是作為教學機器人核心的控制器方面[5]。
為了滿足我校機器人教學方面的需要,本文設計了基于STM32的教學手動機器人控制系統。
利用基于ARM的32位微處理器為核心控制器設計一款應用于教學的手動機器人,主要任務是能夠完成自主抓取和移動。機器人應該具備以下功能:
1)能夠正確判斷所處的方位;
2)能用機械手正確抓取和放置物體;
3)能夠在行走過程中完成前進、后退、向左向右轉向等移動。
教學手動機器人由機械系統和控制系統組成。其中控制系統包括了傳感器檢測及電機和驅動的控制。
控制系統采用紅外測距傳感器、陀螺儀等組成檢測和定位裝置,用來檢測周圍環境以提供準確的方位、速度等信號,實現機器人的定位行走和自動避障功能。基于STM32,完成了系統電源及復位電路、串口通信、JTAG接口、電機驅動等電路的設計及硬件系統的調試,并編寫了相應的軟件程序[6]。
其系統總體框架如圖1所示。

圖1 系統總體框圖
教學手動機器人控制系統硬件電路設計包括系統STM32-MCU、供電電源、系統復位、JTAG接口、USB串口、電機驅動等內容。
為實現教學手動機器人快速、準確的完成規定任務,核心處理器必須具有同時讀取多通路輸入信號,并且能在短時間內快速運算能力。因此,控制系統處理器選用基于ARM的32位微處理器STM32,型號為STM32F103RBT6,即基于ARM Cortex-M3內核的32位增強型微處理器。
STM32F103RBT6增強型處理器采用LQFP封裝,有64個引腳,具有高性能、低成本、低功耗、運算速度快、價格便宜等特點[7]。內部有128K字節的flash存儲器,用于存放程序、數據等信息。內部有2個12位的ADC轉換器,每個轉換器有16個外部通道,能夠進行多循環掃描,電路圖如圖2所示。

圖2 STM32微處理器
為了滿足教學手動機器人移動的要求,通過綜合考慮各種電池的優缺點及整個機器人控制系統的供電需求,包括電機、傳感器、驅動器、控制器等。結合電池的性能、電流等多方面因素,本文選用24V,10A的鋰電池作為供電源。其具有能量密度大、質量輕、沒有記憶效應,可以隨充隨用的特點。
教學手動機器人供電電源為24V直流電,通過三端穩壓器78L05單元電路,將電壓穩定調節到+5V。78L05單元電路,能改善阻抗,提供低靜態電流。
STM32芯片的工作電壓為3.3V。+5V電壓通過三端穩壓芯片正向低壓穩壓器AMS1117-3.3,將電壓轉換成+3.3V。當主電源VDD掉電后,通過VBAT腳為實時時鐘(RTC)和備份寄存器提供電源,如圖3所示。

圖3 電源電路
復位電路用來使系統電路恢復到起始狀態。其原理是通過電阻給電容充電,使得電容的電壓緩慢上升直到VCC-3.3V。電路如圖4所示,充電未達到3.3V時,復位引腳為低電平,芯片復位;達到3.3V時,復位引腳為高電平,芯片復位停止,完成復位過程。

圖4 復位電路
JTAG(Joint Test Action Group)是一種國際標準測試協議(IEEE 1149.1兼容),主要用于芯片內部測試[8]。20針的JTAG仿真調試電路,需要5根信號線,包括:nTRST、TDI、TMS、TCK、TDO[9],引腳連接如圖5所示。STM32處理器支持JTAG在線仿真調試,程序下載,同時也支持串口ISP。

圖5 JTAG
RS232串口用來接收上位機指令,調節各個通道輸出信號的脈寬。RS232是一種全雙工通訊協議,硬件擴展和協議應用都非常方便[10]。控制系統中,用Prolific公司的PL2303接口轉換器進行電平轉換,可調節3V~5V 輸出電壓,滿足3V、3.3V和5V不同應用需求,其電路如圖6所示。

圖6 USB串口電路
為了教學手動機器人在演示時能自由移動、準確定位,其底盤選用三個輪子的結構進行支撐。倒Y字形分布,夾角120°,行走過程中前邊的一個萬向輪起支撐和轉向的作用,左右兩側兩個輪子為動力輪。每個輪子由一個單獨的直流電機控制。機器人移動時,通過STM32處理器上的定時器產生數字脈沖信號,來調節驅動電機的轉速。
直流電機型號:Maxon Motor公司RE40,額定電壓24V,功率150W。教學手動機器人有3個輪子,因此需要3路PWM信號控制電機轉速,每2路I/O控制1個電機正反轉。控制使用固件庫compare函數調整脈寬占空比,實現電機調速,電路如圖7所示。

圖7 電機驅動模塊
系統其他電路還包括模式選擇、碼盤接口、AD采集、PWM輸出、數字量輸出、PS2手柄接口、LED顯示、IIC接口等,PCB總體電路圖如圖8所示。

圖8 PCB圖
整體程序包括主程序和相應的子程序。主程序用來控制機器人執行命令:移動到指定位置、抓取物體、放置物體等。子程序設計包括定時器中斷、串口中斷、編碼器外部中斷等內容。根據設計要求主程序流程如圖9所示。

圖9 程序流程圖
底層控制系統完成接收命令和執行命令的任務。內容包括機器人的移動控制、抓取及放置控制。此外, 還要設計異常狀態的預防和處理, 以維持機器人的正常運行。指令執行步驟如下:
1)機器人通電后,開始復位自檢,等待下一步。
2)機器人讀取指令后,判斷執行相應動作。
3)通過程序及外部檢測裝置判斷執行結果, 符合則停止動作,不符合則重復執行上一指令直到結束。
教學手動機器人PWM控制程序如下:
void TIM4_IRQHandler()
{
if(TIM4->SR&0x0001);
TIM4->SR&=~(1<<0);
}
//PWM輸出初始化
//arr:自動重裝值
//psc:時鐘預分頻數
void PWM_Init(u16 p_arr,u16 p_psc)
{
//此部分需手動修改IO口設置
RCC->APB2ENR|=1<<0; //復用
RCC->APB1ENR|=1<<2; //TIM4時鐘使能
RCC->APB2ENR|=1<<3; //使能PORTB時鐘
GPIOB->CRL&=0X00FFFFFF; //PB7 PB6 輸出
GPIOB->CRL|=0XBB000000; //復用功能輸出
GPIOB->CRH&=0XFFFFFF00; //PB8 PB9 輸出
GPIOB->CRH|=0X000000BB; //復用功能輸出
GPIOB->ODR|=0X03C0; //PB9 PB8 PB7 PB6 上拉
TIM4->ARR=p_arr; //設定計數器自動重裝值
TIM4->PSC=p_psc; //預分頻器不分頻
TIM4->CCMR1|=6<<4; //CH1 PWM1模式
TIM4->CCMR1|=1<<3; //CH1 預裝載使能
TIM4->CCMR1|=6<<12; //CH2 PWM1模式
TIM4->CCMR1|=1<<11; //CH2 預裝載使能
TIM4->CCMR2|=6<<4; //CH3 PWM1模式
TIM4->CCMR2|=1<<3; //CH3 預裝載使能
TIM4->CCMR2|=6<<12; //CH4 PWM1模式
TIM4->CCMR2|=1<<11; //CH4 預裝載使能
TIM4->CCER|=3<<0; //OC1 輸出使能
TIM4->CCER|=3<<4; //OC2 輸出使能
TIM4->CCER|=3<<8; //OC3 輸出使能
TIM4->CCER|=3<<12; //OC4 輸出使能
TIM4->CR1=0x0080; //ARPE使能
TIM4->CR1|=0x01; //使能定時器4
// TIM4->DIER|=1<<0; //允許更新中斷
// TIM4->DIER|=1<<6; //允許觸發中斷
}
使用STM32作為核心處理器,研究適用于教學的手動機器人控制系統,完成了系統硬件構建和軟件編程。改善了以往教學機器人芯片受限制、程序開發困難、成本高等問題。通過實驗證明,該機器人控制系統能夠實現預期目標,系統運行平穩可靠性高。
[1]安紹銀.基于ARM的實驗機器人控制系統的研制[D].哈爾濱:哈爾濱工業大學,2008.
[2]孔祥宣.自主式雙輪動態平衡移動機器人的控制系統研究[D].上海:上海交通大學,2007.
[3]劉潔,王祖麟,朱順利.基于LPC2138的小型足球機器人控制系統設計[J].制造業自動化,2008,3,30(3):40-41,66.
[4]關慧貞,劉贊,魏永,等.LPC2106在足球機器人控制中的應用設計[J].單片機與嵌入式系統應用,2005(1):47-49.
[5]朱勇勇.開放式教學機器人運動控制器設計[D].上海:上海交通大學,2007.
[6]勾慧蘭,劉光超.基于STM32的最小系統及串信的實現[J].工業控制計算機,2012,9(25):26-28.
[7]張鍇,李世光,朱曉莉.基于STM32的智能巡線小車[J].電子測量技術,2012,2,35(2):105-107.
[8]譚斌,雷宏.基于FPGA的數據記錄器數據源的研究與實現[J].電子測量技術,2006(6):126-128.
[9]李莉,吳星明,陳偉海.基于ARM和FPGA的機器人運動控制器的實現[J].計算機測量與控制,2007,15(9):1172-1173,1118.
[10]韓慶瑤,洪草根,朱曉光,等.基于AVR單片機的多舵機控制系統設計及仿真[J].計算機測量與控制,2011,19(2):332-334,349.