摘 要: 給出一種小型機(jī)器人關(guān)節(jié)控制電路系統(tǒng)的軟硬件設(shè)計方案。該方案以意法半導(dǎo)體32位單片機(jī)STM32為核心處理器,通過CAN總線接收上位機(jī)的命令和反饋傳感器采集的信息,利用雙相DMOS全橋驅(qū)動電路芯片A3995驅(qū)動關(guān)節(jié)電機(jī),采用PID算法實現(xiàn)空心杯直流電機(jī)的高精度閉環(huán)定位控制。其中關(guān)節(jié)位置信息的采集使用的是AS5045磁旋轉(zhuǎn)編碼器,分辨率達(dá)到0.087 9°。關(guān)節(jié)角度轉(zhuǎn)動的誤差控制在1°以內(nèi),關(guān)節(jié)控制電路板的面積為11.88 cm2,信號傳輸速率為1 Mb/s。
關(guān)鍵詞: 空心杯直流電機(jī);STM32嵌入式微處理器;磁旋轉(zhuǎn)編碼器;PID控制
0 引言
小型化機(jī)器人在通信、軍事、醫(yī)療、航天航空以及家庭服務(wù)等領(lǐng)域具有重要的應(yīng)用價值。機(jī)器人轉(zhuǎn)動關(guān)節(jié)的準(zhǔn)確定位和控制是小型機(jī)器人運動控制系統(tǒng)的一項關(guān)鍵技術(shù)。關(guān)節(jié)控制精度、與上位機(jī)的通信、功耗、控制電路體積是小型機(jī)器人運動控制電路設(shè)計時需要重點考慮的問題。
1 系統(tǒng)硬件設(shè)計
關(guān)節(jié)控制電路的電機(jī)選取空心杯直流電機(jī),該種電機(jī)具有突出的節(jié)能特性、靈敏的控制特性和穩(wěn)定的運行特性,廣泛用于各種機(jī)電產(chǎn)品中[1]。本系統(tǒng)為了實現(xiàn)電機(jī)的快速準(zhǔn)確控制,需要進(jìn)行比例積分微分(PID)控制算法運算,因此采用低功耗的ARM嵌入式微處理器STM32F103C8T6(以下簡稱STM32)作為控制器,通過CAN(控制器局域網(wǎng))總線接口與上位機(jī)進(jìn)行雙向通信,充分利用CAN總線突出的可靠性、實時性、可擴(kuò)展性以及總線利用率高等特點[2]。磁旋轉(zhuǎn)編碼器AS5045精度高,用以實時檢測電機(jī)的位置信息;A3995驅(qū)動電路體積小,單個芯片可控制2個電機(jī)。上述元件體積都較小,適用于機(jī)器人關(guān)節(jié)處和機(jī)器人內(nèi)部。小型機(jī)器人關(guān)節(jié)控制電路系統(tǒng)如圖1所示。
1.1 微處理器控制電路
圖1中STM32F103C8T6是基于ARM Cortex-M3內(nèi)核的32位微控制器,負(fù)責(zé)采集磁編碼器實時位置信息、接收上位機(jī)通過CAN總線傳送的控制命令、進(jìn)行控制電機(jī)轉(zhuǎn)速的控制計算、反饋關(guān)節(jié)角度信息給上位機(jī)。
1.2 驅(qū)動模塊電路
采用雙相DMOS全橋驅(qū)動電路芯片A3995驅(qū)動電路。驅(qū)動電路和保護(hù)電路如圖2所示。雙相DMOS全橋驅(qū)動能夠以高達(dá)2.4 A的電流驅(qū)動2個8~36 V直流電動機(jī)。
1.2.1 驅(qū)動模塊電路的設(shè)計
ARM微處理器STM32的3個I/O引腳作為電機(jī)驅(qū)動芯片A3995的PHASE、ENABLE和MODE控制輸入信號,進(jìn)而控制電機(jī)的動作。其中PHASE的高低電平?jīng)Q定電機(jī)轉(zhuǎn)動的方向,MODE選擇電流衰減快慢模式。STM32定時器輸出PWM信號接A3995的ENABLE,用于控制電機(jī)轉(zhuǎn)速。
1.2.2 電流檢測保護(hù)電路與軟件設(shè)置
A3995芯片具有電流檢測功能,通過外部編程設(shè)置內(nèi)部保護(hù)電路的電壓比較器門檻。A3995中的電流檢測保護(hù)電路如圖3所示。
圖3中SENSE1為A3995芯片電流保護(hù)電路的電壓比較器正輸入端,接在H橋(控制電機(jī)的正轉(zhuǎn)或反轉(zhuǎn))的電流輸出端口處,經(jīng)一個0.1 Ω電阻接地,用來檢測流過負(fù)載(即直流電機(jī))的電流大小。VREF1作為電壓比較器的負(fù)輸入端,A3995內(nèi)部電路根據(jù)該端口輸入PWM信號的占空比作為比較參考電壓,通過軟件設(shè)置STM32的定時器使PB1輸出PWM信號,降壓后相連到VREF1。
對于電壓比較器而言,其正極電平V+與負(fù)極電平V-分別為:
V-=Im×R1
V+=VREF1÷3
其中,Im為流過電機(jī)電流,R1為采樣電阻。對VREF1進(jìn)行÷3降壓處理是A3995內(nèi)部的功能。當(dāng)V-<V+時,即流過電機(jī)的電流在安全范圍內(nèi)時,比較器輸出高電平,直流電機(jī)工作正常。而當(dāng)V->V+時,即電機(jī)流過的電流Im較大時,比較器輸出低電平,復(fù)位PWM鎖存器,電機(jī)驅(qū)動的控制邏輯輸出端口被鎖住,無法輸出信號給H橋,從而關(guān)閉了對電機(jī)的輸出,保護(hù)了電機(jī)與驅(qū)動電路。保護(hù)電路原理圖如圖4所示。
STM32定時器通過端口PB0輸出高電平為3.3 V的PWM信號,平均輸出電壓為Vout=3.3×duty(占空比)。
當(dāng)V+=V-時,流經(jīng)電機(jī)M的電流達(dá)到正常值的最大值Imax。此時:
其中,R1=0.1 Ω,R2=10 kΩ,R3=10 kΩ,帶入上式可得Imax與占空比duty之間的關(guān)系式為:
duty(%)=18.18×Imax
當(dāng)Imax限制在1 A時,占空比為18.18%,在整個機(jī)器人的關(guān)節(jié)控制中,可以針對不同電機(jī)的Imax限制來設(shè)置占空比,從而保護(hù)電路。
1.3 CAN通信模塊電路的設(shè)計
本系統(tǒng)的信號傳輸采用CAN總線通信模式,CAN總線最多可接110個節(jié)點,可以進(jìn)行區(qū)域組網(wǎng),用于小型機(jī)器人的多關(guān)節(jié)聯(lián)機(jī)協(xié)調(diào)動作。機(jī)器人關(guān)節(jié)節(jié)點與主控機(jī)進(jìn)行通信,充分利用CAN報文幀ID識別碼的特性,將發(fā)送幀的識別碼、本節(jié)點的編碼和本節(jié)點接收濾波器的識別碼相統(tǒng)一[3]。
STM32內(nèi)部本身集成了一路增強(qiáng)型CAN控制器,支持CAN2.0B標(biāo)準(zhǔn)接口,使用時只需連接CAN的收發(fā)器即可。具體電路圖如圖5所示。
SN65HVD230是3.3 V CAN收發(fā)器,信號傳輸速率最高可達(dá)1 Mb/s。STM32中CAN控制器的輸出引腳CAN_TX與CAN收發(fā)器SN65HVD230的數(shù)據(jù)輸入端D連接,可將此CAN節(jié)點發(fā)送的數(shù)據(jù)信息傳送到CAN網(wǎng)絡(luò)中,CAN控制器的接收引腳CAN_RX與SN65HVD230的數(shù)據(jù)輸出端R連接,用于此CAN節(jié)點接收數(shù)據(jù)。
SN65HVD230具有高速、斜率和等待3種工作模式[4],其工作模式通過控制Rs引腳的電平實現(xiàn)。當(dāng)Rs通過0 Ω的電阻接邏輯低電平時,收發(fā)器工作在高速模式,通信速率達(dá)到最高。
1.4 磁旋轉(zhuǎn)編碼器信息采集模塊
機(jī)器人關(guān)節(jié)控制系統(tǒng)傳感器必須尺寸很小,靈敏度高,靈活性強(qiáng)。每個關(guān)節(jié)選取無接觸式的磁旋轉(zhuǎn)編碼器AS5045來采集位置信息。內(nèi)部集成霍爾元件,可以精確地測量電機(jī)轉(zhuǎn)動的360°范圍內(nèi)的角度,分辨率達(dá)到0.087 9°,即每圈可以分成4 096個位置[5]。它的優(yōu)點有:(1)芯片內(nèi)部集成一個完整的片上系統(tǒng);(2)非接觸式的位置傳感器可以應(yīng)用在比較惡劣的環(huán)境下;(3)無需校準(zhǔn);(4)體積小,便于安裝。
AS5045電路板固定在關(guān)節(jié)處,為了測量關(guān)節(jié)的角度,要在關(guān)節(jié)的旋轉(zhuǎn)軸上安裝一個圓形徑向磁化雙極磁鐵,必須對準(zhǔn)AS5045芯片的中間[5]。根據(jù)關(guān)節(jié)的機(jī)械結(jié)構(gòu),磁鐵可以安裝在芯片的上方或下方。由于是無接觸式的,因此在轉(zhuǎn)動過程中不會影響關(guān)節(jié)。其工作原理是:關(guān)節(jié)在旋轉(zhuǎn)的過程中帶動磁鐵旋轉(zhuǎn),AS5045內(nèi)部的霍爾元件檢測到磁性的大小,經(jīng)過內(nèi)部的DSP計算,可以輸出角度信息。
AS5045提供PWM輸出和絕對值串行輸出,本系統(tǒng)中采用的是絕對值串行輸出。AS5045檢測磁場的方向并計算出12 bit的二進(jìn)制編碼,此編碼通過同步串行接口(SSI)進(jìn)行訪問,STM32產(chǎn)生磁旋轉(zhuǎn)編碼器AS5045的時鐘CLK和片選CSn信號,讀取其輸出DO信號。硬件電路設(shè)計如圖6所示。
STM32單片機(jī)產(chǎn)生的CSn和CLK信號時序,以及AS5045輸出信號DO如圖7所示。AS5045的工作過程如下:初始時STM32輸出引腳拉高CSn和CLK信號,當(dāng)需要讀取數(shù)據(jù)DO時,將CSn變?yōu)檫壿嫷碗娖?,?shù)據(jù)輸出(DO)將從高阻(三態(tài))狀態(tài)變?yōu)檫壿嫺唠娖?。?jīng)過最短時間tclk后,數(shù)據(jù)在CLK的第1個下降沿鎖存至輸出移位寄存器內(nèi)。每個后續(xù)的CLK上升沿將移出1 bit數(shù)據(jù)。STM32采集到的串行字包含18 bit數(shù)據(jù),前12 bit D[11:0]是角度信息,后6 bit D[17:12]包含系統(tǒng)信息(奇偶校驗、線性誤差、磁鐵對齊等)。數(shù)據(jù)全部讀完之后,設(shè)置CSn為高電平,持續(xù)時間為tCSn恢復(fù)初始的狀態(tài)進(jìn)行后續(xù)測量。
通過STM32的IO引腳接收到的二進(jìn)制數(shù)據(jù)Do轉(zhuǎn)換成關(guān)節(jié)對應(yīng)的角度值A(chǔ),轉(zhuǎn)換公式如下:
A=(Do>>6)×360÷4096
2 系統(tǒng)軟件設(shè)計
整個關(guān)節(jié)控制電路系統(tǒng)是以STM32為控制核心,采用keil作為編譯工具,使用C語言開發(fā)代碼,便于移植。
主要程序包括系統(tǒng)初始化、啟動模塊、AS5045霍爾數(shù)據(jù)采集模塊、PID速度控制模塊、CAN通信模塊。程序流程圖如圖8所示。
系統(tǒng)經(jīng)過初始化之后,上位機(jī)通過CAN總線發(fā)送控制命令給STM32單片機(jī),霍爾傳感器會檢測關(guān)節(jié)所在的位置,通過處理之后發(fā)送出關(guān)節(jié)的實時位置信息給STM32單片機(jī)。根據(jù)目標(biāo)值和實時值,利用PID調(diào)節(jié)kP、kI、kD參數(shù)調(diào)節(jié)占空比,從而控制電機(jī)的轉(zhuǎn)動。
本系統(tǒng)采用增量式PID控制算法[6]控制關(guān)節(jié)電機(jī)轉(zhuǎn)速,進(jìn)而控制關(guān)節(jié)在規(guī)定時刻到達(dá)特定角度。計算的輸入量為關(guān)節(jié)角度偏差值,計算公式為:
其中,為k時刻角速度輸出。
3 實驗研究
小型機(jī)器人關(guān)節(jié)控制電路系統(tǒng)實物圖如圖9所示,共有兩塊電路板,分別是磁編碼器電路板和關(guān)節(jié)控制電路板。關(guān)節(jié)控制電路板的尺寸為44 mm×27 mm,具有體積小、質(zhì)量輕的特點,有利于將電路板安裝在機(jī)器人的關(guān)節(jié)處以及機(jī)器人內(nèi)部。整個系統(tǒng)的功耗為227.37 mW,其中關(guān)節(jié)控制電路板的功耗為175.5 6mW,磁編碼器電路板功耗為54.45 mW。
將關(guān)節(jié)控制電路系統(tǒng)安裝在機(jī)器人的關(guān)節(jié)處進(jìn)行調(diào)試,該關(guān)節(jié)角度范圍過零點,起止位置分別是300°和178°,即關(guān)節(jié)運動時采集到的角度為從300°經(jīng)過360°(0°)到178°。通過串口與PC相連,在1 s時間內(nèi)采樣擬合的曲線如圖10所示,給定的角度值與反饋的角度值誤差控制在1°之內(nèi)。
4 結(jié)論
本文介紹了一個基于STM32處理器設(shè)計的機(jī)器人關(guān)節(jié)控制系統(tǒng)。對微處理器外圍電路、電機(jī)驅(qū)動電路、通信電路以及信號采集電路進(jìn)行了硬件設(shè)計。關(guān)節(jié)控制電路板的面積為11.88 cm2。通過對機(jī)器人關(guān)節(jié)轉(zhuǎn)動控制的測試,關(guān)節(jié)角度轉(zhuǎn)動的誤差控制在1°以內(nèi)。本系統(tǒng)軟硬件的功能和性能符合小型機(jī)器人轉(zhuǎn)動關(guān)節(jié)控制電路系統(tǒng)的實用要求。
參考文獻(xiàn)
[1] 吳方勇,田偉程.基于ARM的空心杯直流電機(jī)伺服驅(qū)動器設(shè)計[J].機(jī)械與電子,2012(8):44-47.
[2] 趙曉軍,曹建坤,李可一,等.基于CAN總線的數(shù)據(jù)臂通信設(shè)計[J].自動化儀表,2010,31(5):13-15.
[3] 陳瑛,宋俊磊,王典洪.CAN總線在野外地震數(shù)據(jù)傳輸中的應(yīng)用[J].電子技術(shù)應(yīng)用,2013,39(9):34-37.
[4] 馬丹丹.基于CAN-BUS和STM32的智能步進(jìn)電機(jī)驅(qū)動控制模塊設(shè)計[D].杭州:杭州電子科技大學(xué),2013.
[5] Wang Zhiheng, Zhang Libin, Bao Guanjun. Design and control of integrated pneumatic dexterous robot finger[J]. Journal of Central South University of Technology,2011, 18(4):1105-1114.
[6] 王恩義,羅先喜,王甲甲.基于PID算法的智能溫控系統(tǒng)設(shè)計與實現(xiàn)[J].微型機(jī)與應(yīng)用,2014,33(12):18-20.