徐明娜,張 峰,寇志偉
(1.內(nèi)蒙古工業(yè)大學(xué) 工程訓(xùn)練中心,呼和浩特 010051;2.二連浩特出入境檢驗檢疫局 技術(shù)中心,二連浩特 011100)
機器人控制技術(shù)涉及了計算機技術(shù)、自動控制技術(shù)、傳感器技術(shù)、通訊技術(shù)、人工智能、材料科學(xué)和仿生學(xué)等多類學(xué)科[1,2]。
目前,國外教學(xué)機器人大多與工業(yè)相結(jié)合,其具備了工業(yè)機器人類型繁多、控制精度高的特點,但是這類教學(xué)機器人大多以軟件編程為主且價格昂貴,用戶對其控制方面的開發(fā)受到很大程度上的限制。
國內(nèi)的機器人控制,主要采用單片機、嵌入式工業(yè)控制模塊、數(shù)字信號處理器等。其中采用比較廣泛的是單片機,其具有結(jié)構(gòu)簡單、經(jīng)濟性好、開發(fā)周期短等特點,比起后兩者更適用。單片機種類繁多,MCS51、AVR、STM等均應(yīng)用比較廣泛。傳統(tǒng)的8位或者16位單片機, 存在硬件資源有限、運算和處理速度慢的問題。高速DSP的出現(xiàn)雖然使得系統(tǒng)模塊化和全數(shù)字化,但其開發(fā)套件成本高。32位ARM微處理器的出現(xiàn),較好地解決了這些矛盾[3,4]。國內(nèi)有不少高校和企業(yè)已經(jīng)研制出了較為成熟的教學(xué)機器人,這些教學(xué)機器人都有其各自特點,但仍有不少方面有待進(jìn)一步開發(fā),特別是作為教學(xué)機器人核心的控制器方面[5]。
為了滿足我校機器人教學(xué)方面的需要,本文設(shè)計了基于STM32的教學(xué)手動機器人控制系統(tǒng)。
利用基于ARM的32位微處理器為核心控制器設(shè)計一款應(yīng)用于教學(xué)的手動機器人,主要任務(wù)是能夠完成自主抓取和移動。機器人應(yīng)該具備以下功能:
1)能夠正確判斷所處的方位;
2)能用機械手正確抓取和放置物體;
3)能夠在行走過程中完成前進(jìn)、后退、向左向右轉(zhuǎn)向等移動。
教學(xué)手動機器人由機械系統(tǒng)和控制系統(tǒng)組成。其中控制系統(tǒng)包括了傳感器檢測及電機和驅(qū)動的控制。
控制系統(tǒng)采用紅外測距傳感器、陀螺儀等組成檢測和定位裝置,用來檢測周圍環(huán)境以提供準(zhǔn)確的方位、速度等信號,實現(xiàn)機器人的定位行走和自動避障功能。基于STM32,完成了系統(tǒng)電源及復(fù)位電路、串口通信、JTAG接口、電機驅(qū)動等電路的設(shè)計及硬件系統(tǒng)的調(diào)試,并編寫了相應(yīng)的軟件程序[6]。
其系統(tǒng)總體框架如圖1所示。
圖1 系統(tǒng)總體框圖
教學(xué)手動機器人控制系統(tǒng)硬件電路設(shè)計包括系統(tǒng)STM32-MCU、供電電源、系統(tǒng)復(fù)位、JTAG接口、USB串口、電機驅(qū)動等內(nèi)容。
為實現(xiàn)教學(xué)手動機器人快速、準(zhǔn)確的完成規(guī)定任務(wù),核心處理器必須具有同時讀取多通路輸入信號,并且能在短時間內(nèi)快速運算能力。因此,控制系統(tǒng)處理器選用基于ARM的32位微處理器STM32,型號為STM32F103RBT6,即基于ARM Cortex-M3內(nèi)核的32位增強型微處理器。
STM32F103RBT6增強型處理器采用LQFP封裝,有64個引腳,具有高性能、低成本、低功耗、運算速度快、價格便宜等特點[7]。內(nèi)部有128K字節(jié)的flash存儲器,用于存放程序、數(shù)據(jù)等信息。內(nèi)部有2個12位的ADC轉(zhuǎn)換器,每個轉(zhuǎn)換器有16個外部通道,能夠進(jìn)行多循環(huán)掃描,電路圖如圖2所示。
圖2 STM32微處理器
為了滿足教學(xué)手動機器人移動的要求,通過綜合考慮各種電池的優(yōu)缺點及整個機器人控制系統(tǒng)的供電需求,包括電機、傳感器、驅(qū)動器、控制器等。結(jié)合電池的性能、電流等多方面因素,本文選用24V,10A的鋰電池作為供電源。其具有能量密度大、質(zhì)量輕、沒有記憶效應(yīng),可以隨充隨用的特點。
教學(xué)手動機器人供電電源為24V直流電,通過三端穩(wěn)壓器78L05單元電路,將電壓穩(wěn)定調(diào)節(jié)到+5V。78L05單元電路,能改善阻抗,提供低靜態(tài)電流。
STM32芯片的工作電壓為3.3V。+5V電壓通過三端穩(wěn)壓芯片正向低壓穩(wěn)壓器AMS1117-3.3,將電壓轉(zhuǎn)換成+3.3V。當(dāng)主電源VDD掉電后,通過VBAT腳為實時時鐘(RTC)和備份寄存器提供電源,如圖3所示。
圖3 電源電路
復(fù)位電路用來使系統(tǒng)電路恢復(fù)到起始狀態(tài)。其原理是通過電阻給電容充電,使得電容的電壓緩慢上升直到VCC-3.3V。電路如圖4所示,充電未達(dá)到3.3V時,復(fù)位引腳為低電平,芯片復(fù)位;達(dá)到3.3V時,復(fù)位引腳為高電平,芯片復(fù)位停止,完成復(fù)位過程。
圖4 復(fù)位電路
JTAG(Joint Test Action Group)是一種國際標(biāo)準(zhǔn)測試協(xié)議(IEEE 1149.1兼容),主要用于芯片內(nèi)部測試[8]。20針的JTAG仿真調(diào)試電路,需要5根信號線,包括:nTRST、TDI、TMS、TCK、TDO[9],引腳連接如圖5所示。STM32處理器支持JTAG在線仿真調(diào)試,程序下載,同時也支持串口ISP。
圖5 JTAG
RS232串口用來接收上位機指令,調(diào)節(jié)各個通道輸出信號的脈寬。RS232是一種全雙工通訊協(xié)議,硬件擴展和協(xié)議應(yīng)用都非常方便[10]??刂葡到y(tǒng)中,用Prolific公司的PL2303接口轉(zhuǎn)換器進(jìn)行電平轉(zhuǎn)換,可調(diào)節(jié)3V~5V 輸出電壓,滿足3V、3.3V和5V不同應(yīng)用需求,其電路如圖6所示。
圖6 USB串口電路
為了教學(xué)手動機器人在演示時能自由移動、準(zhǔn)確定位,其底盤選用三個輪子的結(jié)構(gòu)進(jìn)行支撐。倒Y字形分布,夾角120°,行走過程中前邊的一個萬向輪起支撐和轉(zhuǎn)向的作用,左右兩側(cè)兩個輪子為動力輪。每個輪子由一個單獨的直流電機控制。機器人移動時,通過STM32處理器上的定時器產(chǎn)生數(shù)字脈沖信號,來調(diào)節(jié)驅(qū)動電機的轉(zhuǎn)速。
直流電機型號:Maxon Motor公司RE40,額定電壓24V,功率150W。教學(xué)手動機器人有3個輪子,因此需要3路PWM信號控制電機轉(zhuǎn)速,每2路I/O控制1個電機正反轉(zhuǎn)??刂剖褂霉碳靋ompare函數(shù)調(diào)整脈寬占空比,實現(xiàn)電機調(diào)速,電路如圖7所示。
圖7 電機驅(qū)動模塊
系統(tǒng)其他電路還包括模式選擇、碼盤接口、AD采集、PWM輸出、數(shù)字量輸出、PS2手柄接口、LED顯示、IIC接口等,PCB總體電路圖如圖8所示。
圖8 PCB圖
整體程序包括主程序和相應(yīng)的子程序。主程序用來控制機器人執(zhí)行命令:移動到指定位置、抓取物體、放置物體等。子程序設(shè)計包括定時器中斷、串口中斷、編碼器外部中斷等內(nèi)容。根據(jù)設(shè)計要求主程序流程如圖9所示。
圖9 程序流程圖
底層控制系統(tǒng)完成接收命令和執(zhí)行命令的任務(wù)。內(nèi)容包括機器人的移動控制、抓取及放置控制。此外, 還要設(shè)計異常狀態(tài)的預(yù)防和處理, 以維持機器人的正常運行。指令執(zhí)行步驟如下:
1)機器人通電后,開始復(fù)位自檢,等待下一步。
2)機器人讀取指令后,判斷執(zhí)行相應(yīng)動作。
3)通過程序及外部檢測裝置判斷執(zhí)行結(jié)果, 符合則停止動作,不符合則重復(fù)執(zhí)行上一指令直到結(jié)束。
教學(xué)手動機器人PWM控制程序如下:
void TIM4_IRQHandler()
{
if(TIM4->SR&0x0001);
TIM4->SR&=~(1<<0);
}
//PWM輸出初始化
//arr:自動重裝值
//psc:時鐘預(yù)分頻數(shù)
void PWM_Init(u16 p_arr,u16 p_psc)
{
//此部分需手動修改IO口設(shè)置
RCC->APB2ENR|=1<<0; //復(fù)用
RCC->APB1ENR|=1<<2; //TIM4時鐘使能
RCC->APB2ENR|=1<<3; //使能PORTB時鐘
GPIOB->CRL&=0X00FFFFFF; //PB7 PB6 輸出
GPIOB->CRL|=0XBB000000; //復(fù)用功能輸出
GPIOB->CRH&=0XFFFFFF00; //PB8 PB9 輸出
GPIOB->CRH|=0X000000BB; //復(fù)用功能輸出
GPIOB->ODR|=0X03C0; //PB9 PB8 PB7 PB6 上拉
TIM4->ARR=p_arr; //設(shè)定計數(shù)器自動重裝值
TIM4->PSC=p_psc; //預(yù)分頻器不分頻
TIM4->CCMR1|=6<<4; //CH1 PWM1模式
TIM4->CCMR1|=1<<3; //CH1 預(yù)裝載使能
TIM4->CCMR1|=6<<12; //CH2 PWM1模式
TIM4->CCMR1|=1<<11; //CH2 預(yù)裝載使能
TIM4->CCMR2|=6<<4; //CH3 PWM1模式
TIM4->CCMR2|=1<<3; //CH3 預(yù)裝載使能
TIM4->CCMR2|=6<<12; //CH4 PWM1模式
TIM4->CCMR2|=1<<11; //CH4 預(yù)裝載使能
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; //允許觸發(fā)中斷
}
使用STM32作為核心處理器,研究適用于教學(xué)的手動機器人控制系統(tǒng),完成了系統(tǒng)硬件構(gòu)建和軟件編程。改善了以往教學(xué)機器人芯片受限制、程序開發(fā)困難、成本高等問題。通過實驗證明,該機器人控制系統(tǒng)能夠?qū)崿F(xiàn)預(yù)期目標(biāo),系統(tǒng)運行平穩(wěn)可靠性高。
[1]安紹銀.基于ARM的實驗機器人控制系統(tǒng)的研制[D].哈爾濱:哈爾濱工業(yè)大學(xué),2008.
[2]孔祥宣.自主式雙輪動態(tài)平衡移動機器人的控制系統(tǒng)研究[D].上海:上海交通大學(xué),2007.
[3]劉潔,王祖麟,朱順利.基于LPC2138的小型足球機器人控制系統(tǒng)設(shè)計[J].制造業(yè)自動化,2008,3,30(3):40-41,66.
[4]關(guān)慧貞,劉贊,魏永,等.LPC2106在足球機器人控制中的應(yīng)用設(shè)計[J].單片機與嵌入式系統(tǒng)應(yīng)用,2005(1):47-49.
[5]朱勇勇.開放式教學(xué)機器人運動控制器設(shè)計[D].上海:上海交通大學(xué),2007.
[6]勾慧蘭,劉光超.基于STM32的最小系統(tǒng)及串信的實現(xiàn)[J].工業(yè)控制計算機,2012,9(25):26-28.
[7]張鍇,李世光,朱曉莉.基于STM32的智能巡線小車[J].電子測量技術(shù),2012,2,35(2):105-107.
[8]譚斌,雷宏.基于FPGA的數(shù)據(jù)記錄器數(shù)據(jù)源的研究與實現(xiàn)[J].電子測量技術(shù),2006(6):126-128.
[9]李莉,吳星明,陳偉海.基于ARM和FPGA的機器人運動控制器的實現(xiàn)[J].計算機測量與控制,2007,15(9):1172-1173,1118.
[10]韓慶瑤,洪草根,朱曉光,等.基于AVR單片機的多舵機控制系統(tǒng)設(shè)計及仿真[J].計算機測量與控制,2011,19(2):332-334,349.