余麗杰,孫玉國,焦金輝,勾 燦
(上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)
基于安卓手機(jī)的無線隨動(dòng)控制系統(tǒng)設(shè)計(jì)
余麗杰,孫玉國,焦金輝,勾 燦
(上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)
無線隨動(dòng)控制在虛擬現(xiàn)實(shí),運(yùn)動(dòng)捕獲等領(lǐng)域有重要應(yīng)用。設(shè)計(jì)了一種基于安卓手機(jī)的角位置無線隨動(dòng)控制系統(tǒng)。采用安卓手機(jī)內(nèi)部的微機(jī)電(MEMS)傳感器感知物體旋轉(zhuǎn)的角速度并作為該系統(tǒng)的控制指令,藍(lán)牙模塊HC-06作為無線通信媒介,跟隨端利用STC125A60S單片機(jī)結(jié)合積分分離式的PID算法控制兩相混合式步進(jìn)電機(jī)做跟隨轉(zhuǎn)動(dòng)。實(shí)驗(yàn)結(jié)果表明,該隨動(dòng)控制系統(tǒng)運(yùn)行穩(wěn)定,角位置跟隨誤差<0.5°。
隨動(dòng)控制;MEMS傳感器;單片機(jī);步進(jìn)電機(jī);PI
在模擬駕駛訓(xùn)練、虛擬現(xiàn)實(shí)、運(yùn)動(dòng)捕獲以及智能家居等領(lǐng)域,很多場(chǎng)景下需要實(shí)時(shí)獲取控制手柄的轉(zhuǎn)動(dòng)角度與轉(zhuǎn)動(dòng)角速度信號(hào),并驅(qū)動(dòng)模擬平臺(tái)同步轉(zhuǎn)動(dòng)。這是一個(gè)典型的隨動(dòng)控制系統(tǒng)[1-2],若采用傳統(tǒng)的自整角方案,則控制系統(tǒng)體積較大、成本較高,并在諸多場(chǎng)景下,有必要利用無線傳輸?shù)姆椒▽?shí)現(xiàn)物體旋轉(zhuǎn)運(yùn)動(dòng)的跟隨控制[3]。
考慮到某些場(chǎng)合對(duì)跟隨精度及控制距離沒有過高的要求,本文提出了一種基于安卓手機(jī)及藍(lán)牙技術(shù)的無線隨動(dòng)控制系統(tǒng)設(shè)計(jì)[4-6]。安卓手機(jī)作為控制端,通過其自帶的MEMS傳感器實(shí)時(shí)獲取物體的旋轉(zhuǎn)角度與旋轉(zhuǎn)角速度,再經(jīng)手機(jī)自帶的藍(lán)牙模塊將同步控制指令發(fā)送到跟隨端。跟隨端采用傳統(tǒng)的步進(jìn)電機(jī)驅(qū)動(dòng)方式,驅(qū)動(dòng)可靠、成本較低,并將步進(jìn)電機(jī)的輸出軸與一個(gè)絕對(duì)式光電編碼器的碼盤同軸連接,用以檢測(cè)電機(jī)運(yùn)動(dòng)的角速度及角位置。本文給出了相應(yīng)的控制系統(tǒng)架構(gòu),以及軟硬件實(shí)現(xiàn)方法。
如圖1所示,該無線隨動(dòng)控制系統(tǒng)由控制端和跟隨端兩部分組成??刂贫藶榘沧恐悄苁謾C(jī),負(fù)責(zé)旋轉(zhuǎn)角度與角速度信號(hào)的采集與無線發(fā)射。跟隨端由HC-06藍(lán)牙模塊[7-8],STC12單片機(jī),兩相混合式步進(jìn)電機(jī)及其驅(qū)動(dòng)器,絕對(duì)式光電編碼器構(gòu)成,負(fù)責(zé)控制步進(jìn)電機(jī)的轉(zhuǎn)速與轉(zhuǎn)向并獲取其角位置信息[9]。
系統(tǒng)具備上電自檢功能,當(dāng)應(yīng)用程序啟動(dòng)手機(jī)藍(lán)牙與HC-06建立連接時(shí),手機(jī)當(dāng)前方位角度值會(huì)被發(fā)送至單片機(jī),單片機(jī)讀取與步進(jìn)電機(jī)同軸的絕對(duì)式光電編碼器位置信息后控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng)至相同方位。
圖1 隨動(dòng)控制系統(tǒng)框圖
Android系統(tǒng)提供了對(duì)傳感器的支持,如果手機(jī)設(shè)備的硬件提供了這些傳感器,Android應(yīng)用可通過傳感器來獲取設(shè)備的外界條件,包括手機(jī)的運(yùn)行狀態(tài)、當(dāng)前擺放方向等[10]。Android系統(tǒng)提供了驅(qū)動(dòng)程序去管理這些傳感器硬件,當(dāng)傳感器硬件感知到外部環(huán)境發(fā)生改變時(shí),Android系統(tǒng)負(fù)責(zé)管理這些傳感器數(shù)據(jù)[11]。本設(shè)計(jì)中主要應(yīng)用到了Android手機(jī)內(nèi)的方向傳感器和陀螺儀傳感器,分別獲取移動(dòng)設(shè)備在二維空間的旋轉(zhuǎn)角度值和旋轉(zhuǎn)角速度值。在Android開發(fā)時(shí),兩種傳感器數(shù)據(jù)的獲取方法相同。本設(shè)計(jì)中獲取角速度信息的關(guān)鍵代碼如下:
SensorManager=(SensorManager)get SystemService(SENSOR_SERVICE);∥獲得傳感器管理服務(wù)
Sensor sensor_gyr=sensorManager.Get DefaultSensor(Sensor.TYPE_GYRO SCOPE);
sensorManager.registerListener(mySensorEventListener,sensor_gyr,SensorManager.SENSOR_DELAY_ NORMAL); ∥注冊(cè)傳感器的監(jiān)聽器
public void onSensorChanged (SensorEve nt event){
if (event.sensor.getType()==Sensor.TYPE_
GYROSCOPE) {
gsensor[0]=event.values[0];
gsensor[1]=event.values[1];
gsensor[2]=event.values[2];
}∥監(jiān)聽傳感器各種事件
protected void onPause(){
super.onPause();
sensorManager.unregisterListener(this);
}∥解除注冊(cè)傳感器監(jiān)聽器
3.1 硬件電路設(shè)計(jì)
如圖2所示,串口藍(lán)牙模塊HC-06的TXD,RXD管腳分別連接到STC12單片機(jī)的P3.0,P3.1管腳,用于實(shí)現(xiàn)控制端與隨動(dòng)端的數(shù)據(jù)通信。單片機(jī)的P2.0,P2.1與P2.2管腳分別與M415B步進(jìn)電機(jī)驅(qū)動(dòng)器的PUL, DIR,ENA管腳連接,分別為脈沖信號(hào),方向信號(hào)與使能信號(hào)控制端。通過改變輸出脈沖頻率實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)轉(zhuǎn)速的控制,改變輸入DIR的電平信號(hào)控制步進(jìn)電機(jī)的轉(zhuǎn)向。另外,為了實(shí)時(shí)檢測(cè)并反饋步進(jìn)電機(jī)轉(zhuǎn)動(dòng)的角位置及角速度,在電機(jī)輸出軸上安裝了10 bit、1 024線的絕對(duì)式光電編碼器[12],構(gòu)成閉環(huán)控制系統(tǒng)。
圖2 跟隨端控制系統(tǒng)連線
3.2 軟件設(shè)計(jì)
首先,通過配置STC12內(nèi)部的串行控制寄存器SCON和波特率選擇特殊功能寄存器PCON來設(shè)置串口工作模式和波特率,使之與藍(lán)牙模塊相匹配從而實(shí)現(xiàn)兩者正常通信。單片機(jī)每次從絕對(duì)式編碼器讀取的位置都是唯一的,單位時(shí)間內(nèi)電機(jī)轉(zhuǎn)軸的角度變化量就是軸的角速度
ω=2π×(NNUM-LLNUM)/1 024×T
(1)
式中,ω為角速度;NNUM為本次讀取的位置值;LNUM為上次讀取的位置值;T為讀取周期。
本部分設(shè)計(jì)的核心在于步進(jìn)電機(jī)增量式PID調(diào)速算法的實(shí)現(xiàn)。增量式PID離散化公式為
(2)
Δuk=uk-uk-1=Kp(ek-ek-1)+Kiek+Kd(ek-2ek-1+ek-2)
(3)
uk=uk-1+Δukuk-1Kp(ek-ek-1)+Kiek+Kd(ek-2ek-1+ek-2)
(4)
PID算法中P、I、D三者并不是都必須出現(xiàn)的,本設(shè)計(jì)只使用PI控制就能滿足要求。在一般的 PID 控制算法過程中,當(dāng)輸入量發(fā)生大幅度的改變時(shí),由此形成的較大偏差將不能很快的被消除,且在積分項(xiàng)的作用下,會(huì)產(chǎn)生較大的超調(diào),甚至形成震蕩。此時(shí),可以采用積分分離的方式處理,在被控量的調(diào)節(jié)初期,將積分項(xiàng)取消,當(dāng)被控量接近給定量時(shí),加上積分項(xiàng)的作用,由此可將上式的控制公式改為:此可將上式的控制公式改為
Δuk=uk-uk-1=Kp(ek-ek-1)+NKiek+Kd(ek-2ek-1+ek-2)
(5)
在運(yùn)用PID算法控制時(shí),需要一個(gè)精確的控制周期??衫每刂破鞯亩〞r(shí)器功能產(chǎn)生一個(gè)周期性的中斷,在周期性中斷中進(jìn)行PID算法的運(yùn)算和對(duì)電機(jī)的控制輸出。在中斷程序中首先要讀取電機(jī)的當(dāng)前轉(zhuǎn)速和目標(biāo)轉(zhuǎn)速,然后利用PID算法計(jì)算控制器的輸出量,由于是利用輸出脈沖頻率調(diào)節(jié)電機(jī)轉(zhuǎn)速,所以PID算法計(jì)算數(shù)據(jù)應(yīng)該是脈沖的頻率。定時(shí)器周期性中斷程序流程圖如圖4所示。
圖3 控制算法流程圖
圖4 定時(shí)器周期性中斷程序流程圖
安卓手機(jī)控制界面如圖5所示,該應(yīng)用程序的主要功能為實(shí)時(shí)顯示手機(jī)運(yùn)動(dòng)的角度信息及步進(jìn)電機(jī)跟隨的角度信息,并可感應(yīng)手機(jī)運(yùn)動(dòng)的方向,相應(yīng)的按鈕顏色變紅。
打開安卓應(yīng)用程序與藍(lán)牙模塊配對(duì)連接,并將手機(jī)水平放置到JZJ-1準(zhǔn)直儀轉(zhuǎn)臺(tái)上,以不同的速度來回轉(zhuǎn)動(dòng)平臺(tái)到一定位置,讀取跟隨端步進(jìn)電機(jī)轉(zhuǎn)過的實(shí)際角度值。重復(fù)以上步驟,每組測(cè)試進(jìn)行5次、取平均值。實(shí)驗(yàn)結(jié)果如表1所示,該系統(tǒng)的跟隨誤差<0.5°。
圖5 安卓應(yīng)用程序界面
轉(zhuǎn)動(dòng)角度/(°)跟隨角度/(°)誤差/(°)360359.52-0.48270270.350.35180179.78-0.229090.180.183030.370.37-30-30.19-0.19-90-89.740.25-180-180.15-0.15-270-270.40-0.40-360-360.26-0.26
本文設(shè)計(jì)了一種以安卓手機(jī)控制的無線隨動(dòng)系統(tǒng)。該系統(tǒng)基于Java編程,自主開發(fā)了安卓應(yīng)用程序,可實(shí)時(shí)獲取手機(jī)運(yùn)動(dòng)時(shí)產(chǎn)生的角速度值及角度值,并可通過藍(lán)牙與單片機(jī)實(shí)現(xiàn)數(shù)據(jù)的收發(fā);構(gòu)建了隨動(dòng)端閉環(huán)控制,采用積分分離的增量式PI控制算法,最終實(shí)現(xiàn)無線控制步進(jìn)電機(jī)的跟隨運(yùn)動(dòng)。實(shí)驗(yàn)結(jié)果表明,該隨動(dòng)系統(tǒng)運(yùn)行穩(wěn)定,跟隨誤差<0.5°。與傳統(tǒng)的隨動(dòng)控制系統(tǒng)相比,該設(shè)計(jì)更加智能便捷,有更廣泛的應(yīng)用。在今后的工作中將對(duì)跟隨系統(tǒng)的動(dòng)態(tài)特性做更深入的研究。
[1] 李曦.基于ARM的隨動(dòng)系統(tǒng)測(cè)控裝置設(shè)計(jì)[D].南京:南京理工大學(xué),2013.
[2] 王桂霞,李媛.位置隨動(dòng)控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].機(jī)電設(shè)備,2007,24(12):29-32.
[3] 任強(qiáng),周升良,孫玉國.基于MEMS的角位置無線隨動(dòng)控制系統(tǒng)設(shè)計(jì)[J].傳感器與微系統(tǒng),2013,32(9):122-124.
[4] 高子龍.基于DSP的隨動(dòng)控制系統(tǒng)實(shí)驗(yàn)臺(tái)的設(shè)計(jì)與研究[D].南京:南京理工大學(xué),2013.
[5] 潘曉偉.基于TMS320F28335的隨動(dòng)控制系統(tǒng)設(shè)計(jì)及其控制算法研究[D].南京:南京理工大學(xué),2012.
[6] Giap N H,Shin J H,Kim W H.A study on autotuning controller for servo system[J]. Intelligent Control and Automation,2014(5):102-110.
[7] 陳志崇,張祺.基于Android的藍(lán)牙通信接口[J].電子世界,2013(3):16-17.
[8] 李振榮.基于藍(lán)牙的無線通信芯片關(guān)鍵技術(shù)研究[D].西安:西安電子科技大學(xué),2010.
[9] 代杰,樊瑜浸,張學(xué)麗,等.基于單片機(jī)的光電編碼器位置檢測(cè)系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2011,19(1):17-19.
[10] 李剛.瘋狂Android講義[M]. 2版.北京:電子工業(yè)出版社,2013.
[11] Morgenthal G,H?pfner H. The application of sma- rtphones to measuring transient structural displacement[J].Journal of Civil Structural Health Monitoring, 2012,2(3):149-161.
[12] 蔣利勇,李偉光.絕對(duì)式光電編碼器的接口裝置設(shè)計(jì)與應(yīng)用[J].裝備制造技術(shù),2007(5):62-64.
[13] 吳強(qiáng),韓震宇,李程.基于增量式PID算法的無刷直流電機(jī)PWM調(diào)速研究[J].機(jī)電工程技術(shù),2013(3):63-65.
[14] 魏麗君.基于增量式PID算法的高精度溫控系統(tǒng)的設(shè)計(jì)[J].智能電網(wǎng),2013(2):37-42.
[15] 李敬一,王會(huì)彬.基于PID算法的步進(jìn)電機(jī)位置控制[J].軍民兩用技術(shù)與產(chǎn)品,2015(7):55-57.
Design of Wireless Servo-control System Based on Android Phone
YU Lijie,SUN Yuguo,JIAO Jinhui,GOU Can
(School of Optical-Electrical and Computer Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China)
Wireless servo-control has important application in fields of virtual reality, motion capture and so on. Design a wireless servo-control system of angular velocity based on Android phone. Use the micro-electro-mechanical sensor inside android phone to sense object’s rotating angular velocity that as the control signal, bluetooth module HC-06 as the wireless communication medium, and STC125A60S SCM to control following rotation of the two-phase hybrid stepping motor in follow-up end with the PID algorithm of integral separation. The experimental results show that this servo-control system works stably, and the angular position following error is less than 0.5°.
servo-control; MEMS sensor; SCM; stepping motor; PID
2016- 05- 05
上海市大學(xué)生創(chuàng)新基金資助項(xiàng)目(SH2014042)
余麗杰(1993-),女,碩士研究生。研究方向:精密機(jī)械運(yùn)動(dòng)控制。
10.16180/j.cnki.issn1007-7820.2017.04.040
TN926+.22;TP212
A
1007-7820(2017)04-159-04