石科帥+忻尚芝+張宇慧+沈海鷹



摘 要:直流無刷電機是一個多變量、強耦合的非線性系統(tǒng),針對直流無刷電機換相時抖動比較明顯、速度調節(jié)時的準確性也存在誤差等缺點,通過無線傳輸模塊實現了Matlab與stm32之間的通訊,建立了基于Matlab與stm32的電機遠程控制系統(tǒng),實現了上位機對電機的遠程控制。與此同時,還采用對直流無刷電機換相時間采樣與樣本訓練分離的策略,解決了stm32的運算能力差的問題,并利用Matlab的強大運算能力,實現了BP神經網絡在BLDCM換相控制系統(tǒng)中的應用。實驗表明,基于BP神經網絡的BLDCM換相控制系統(tǒng)有利于提高電機的控制精度及動態(tài)性能。該系統(tǒng)將在智能化的控制領域擁有更廣闊的空間。
關鍵詞:無刷直流電機;Matlab;stm32;BP神經網絡
DOIDOI:10.11907/rjdk.171343
中圖分類號:TP319
文獻標識碼:A 文章編號文章編號:1672-7800(2017)008-0079-04
0 引言
直流無刷電機(Brusldess DC Motor,BLDCM)具有低速大轉矩、速度范圍寬、運行效率高、過載能力強、體積小、重量輕、功率大、無機械換向器控制系統(tǒng)等優(yōu)點,廣泛應用于電力機車、電動自行車、城軌車輛、冰箱、空調等領域。但是由于電機內部或外界的非線性干擾,直流無刷電機換相時抖動比較明顯,速度調節(jié)時的準確性也存在誤差, 大大地限制了其在精度較高的伺服系統(tǒng)中的應用[1]。
BP神經網絡具有非線性映射逼近、分布式信息優(yōu)化處理、自適應學習等能力,能夠很好地解決在不明確運行環(huán)境的情況下,特別是比較復雜并且控制變量不能呈現線性變化的問題[2],從而使得控制部分魯棒性能增強,擁有適應較高需求的動靜態(tài)能力[3]。本文提出基于stm32和Matlab的BP神經網絡控制理論,并將其應用于無刷直流電機的換相時間控制部分,以此增強電機運行的穩(wěn)定性、平滑性,從而達到準確性更高、抗干擾信號能力強的穩(wěn)定準確的控制系統(tǒng)效果。
1 總體設計
本設計主要流程分為3個部分:①基于stm32的換項到過零點間隔時間的數據采樣;②stm32與上位機(Matlab環(huán)境下)間的數據通信;③在設計環(huán)節(jié)中,借助于采樣數據進行BP神經網絡訓練,獲取BP神經網絡權值,建立換項到過零點間隔與換項時刻的非線性映射,以此避免遭受、負載變化等外界因素對換項時刻的影響,提高檢測精度;在執(zhí)行環(huán)節(jié),利用建立的BP神經網絡,實現電機的平穩(wěn)換向,提高電機運行的穩(wěn)定性。系統(tǒng)的設計框架如圖1所示,包括數據采集模塊(stm32)、無線傳輸模塊(WSN-1101)和數據處理模塊(Matlab平臺)[4]。
2 基于stm32的數據采集原理及實現
2.1 換相時間采集原理
一種比較簡單的做法是近似認為轉子轉速在0~60°的小范圍區(qū)間內基本是恒定的:從AB相開始通電到檢測出C相過零的前半段時間,基本等于后半段的時間[5]。所以只要記錄從換相開始到過零點間的時間T1,然后從當前時刻開始再等待相同的時間,就可以換相了。以此類推可以得出:從AC導通到檢測到B相過零點后時間間隔T2進行換相,BC導通到檢測到A相過零點后時間間隔T3進行換相,BA導通到檢測到C相過零點后時間間隔T4進行換相,CA導通到檢測到B相過零點后時間間隔T5進行換相,CB導通到檢測到C相過零點后時間間隔T6進行換相。即T(i)=Z(i)-P(i),其中:1≤i≤6,T(i)為檢測到過零點后到換相的延時時間,Z(i)為第i次反電動勢過零點時刻,P(i)為第i次換相開始時的時刻。圖2為6種通電情形下各繞組感生電動勢和換相時間[6-7]。
2.2 樣本更新與換相時間采集
為了獲得從換項開始到過零點的時間間隔與換項時刻的非線性映射,需要大量的樣本數據對BP神經網絡進行訓練。為此需要按照如下步驟進行采樣:①上位機通過串口給stm32發(fā)送已知速度指令;②進入換相狀態(tài)時清空時間計數值Time1并進行向上計數,當檢測到過零點時Time1停止向上計數并把當前值存儲到對應的ai[n]數組中;③Time1進行向下計數直到遞減到零,并進行換相;④循環(huán)第二步便可得到6組一維組換相時間數組,由此便可得到6個換相時間Ti:Ti=(∑j≤n-1j=0ai[j])÷n(1≤i≤6),由式(1)和式(2)可獲得當前速度下的真實換相時間d=5/(n*p);⑤當完成步驟④的工作時,上位機通過串口給stm32發(fā)送新的速度指令,同時接收并記錄由stm32反饋過來的6個換相時間Ti;⑥重復步驟②,便可獲取多組實驗樣本和對應的期望值。n=60*f /p(1)
f=30/(360*d)=1/(12*d)(2)
其中:n代表轉速,f代表定子旋轉磁場的頻率,d換相時間的期望值。
圖3為整體控制流程。
3 stm32與上位機間數據通信
3.1 通訊模塊硬件設計
數據采樣模塊和樣本訓練模塊的分離是本設計的一大亮點,這樣既減輕了stm32的運算和存儲負擔,也縮短了樣本訓練時間。遠程控制與Matlab對樣本的獲取都建立在數據通訊的基礎上。針對無線通訊,本設計采用了一套獨立的數據收發(fā)單元,該單元基于stm32和Matlab建立,無線模塊選用WSN-1101。WSN-1101無線數傳模塊是一款高穩(wěn)定性、高性價比、低功耗的無線微功率透明數據收發(fā)模塊。
圖4為無線通訊與設備間的連接框架,主要分為兩部分:①stm32串口的發(fā)送和接收直接與WSN-1101的接收和發(fā)送相連接;②上位機(Matlab)通過PL2303與WSN-1101建立連接。PL2303是Prolific公司生產的一種高度集成的RS232-USB接口轉換器,可提供一個RS232全雙工異步串行通信裝置與USB功能接口。該器件作為USB/RS232雙向轉換器,一方面從上位機接收USB數據并將其轉換為RS232信息流格式發(fā)送給WSN-1101;另一方面從RS232外設接收數據轉換為USB數據格式傳送回上位機。endprint
為了能實現上位機與stm32間的通訊,還需要把兩個無線模塊設置成相同的波特率、通信頻道和地址。當圖4右邊的設備向無線模塊2發(fā)送串口數據時,無線模塊2的RXD端口收到串口數據后,自動將數據以無線電波的方式發(fā)送到空中。無線模塊1能自動接收到由模塊2發(fā)送過來的數據,并由TXD還原最右邊設備發(fā)送的串口數據。同理,從左到右也是一樣的。
3.2 通訊模塊程序設計
3.2.1 stm32串口中斷服務函數:速度接收與樣本發(fā)送
keil中的部分程序如下所示:void USART3_IRQHandler(void){int rec_data, i;if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET) //判斷是否產生接受中斷 {USART_ClearITPendingBit(USART3,USART_IT_RXNE); //清除接收中斷 rec_data = USART_ReceiveData(USART3);//讀取接收到的數據speed = rec_data; //stm32獲得速度指令PutChar(T1);//發(fā)送上次速度指令檢測得到的六組換相時間PutChar(T2); PutChar(T3);PutChar(T4);PutChar(T5);PutChar(T6); }}
3.2.2 Matlab和stm32之間通訊的建立:速度發(fā)送與樣本接收
Matlab中程序如下所示[3]:Obj=serial('com3','baudrate',115200,'parity','none','databits',8,'stopbits',1);%初始化串口fopen(Obj);%連接obj和外設fwrite(Obj,'xxx','uchar');%向串口中寫入第i次速度指令值xxxfread(Obj,6,'uint8');%在串口obj讀取上一次發(fā)送指令的6組換相時間fclose(Obj)%關閉串口設備對象objdelete(Obj)%從內存中刪除串口對象objclear Obj%從Matlab工作區(qū)中清除串行接口對象obj由上面程序可以獲得當速度改變時所對應的6組換相時間T1-T6,每次改變速度所對應的期望換相時間d可通過計算得到。寫入Matlab中的速度變化范圍是500~1 000,變化梯度為1,這樣便可得到500個訓練樣本。最后把獲得的樣本制作成Excel表格的形式,這樣方便下一步對樣本進行BP神經網絡的訓練。
4 BP神經網絡運用
4.1 基本原理
BP神經網絡處理信息的基本原理是:輸入信號Ti(n)(1≤i≤6,n代表樣本的標號),通過中間節(jié)點作用于輸出節(jié)點,經過非線形變換,產生輸出信號yi(n),網絡訓練的每個樣本包括輸入向量和期望輸出量d(n)、網絡輸出值yi(n)與期望輸出值d(n)之間的偏差,通過調整輸入節(jié)點與輸出節(jié)點的聯接強度取值Wij以及閾值,使誤差沿梯度方向下降,經過反復學習訓練,確定與最小誤差相對應的網絡參數(權值和閾值),停止訓練。此時經過訓練的神經網絡即能對類似樣本的輸入信息,自行處理輸出誤差最小的經過非線性轉換的信息。
圖5是根據神經網絡的基本原理建立的六輸入六輸出的神經網絡信號流圖。
4.2 訓練方式選取
網絡訓練方式分為串行訓練和集中訓練。串行訓練是指從訓練樣本集中每輸入一個樣本模式和期望輸出,進行一次BP神經網絡的突觸權值更新;而集中訓練突觸權值的更新要在組成一個回合的所有樣本向量都訓練后才進行。從在線運行的觀點來看,訓練的串行方式比集中方式好,因為對每個突觸權值來說,需要更少的局部存儲。此外,樣本向量以隨機方式呈現給網絡,利用每輸入一樣本向量就更新突觸權值的方法使得在權值空間的搜索具有隨機性,這使得反向傳播算法陷入極小局部的可能性降低。因此在網絡訓練中選取串行訓練的方式。
反向傳播算法的學習步驟如下:
(1)初始化。設置所有突觸權值和閾值為最小的隨機數。在沒有先驗知識可用的情況下,可以選擇均值等于0的均勻分布來設置,該分布的方差的選擇,應該使神經元誘導局部域的標準偏差位于sigmoid激活函數的線性部分與飽和部分的過渡處。
(2)提供輸入訓練樣本集{T(n),d(n)}Nn=1。給出順序賦值輸入向量T(1),T(2),T(3)…,T(n)和期望輸出響應d(n)。其中T(n)=T1(n),T2(n),T3(n),T4(n),T5(n),T6(n)。
(3)對訓練樣本n,計算各隱含層和輸出層的神經元輸出,參見式(5)和式(6)。
(4)對訓練樣本n,計算誤差函數和代價函數參見式(3)和式(4)。
(5)調整輸出層和隱含層的突觸權值,參見式(7)。
(6)令n=n+1,返回步驟(3),直到滿足停止準則。
ej(n)=d(n)-yj(n) (3)
ε(n)=12∑6j=1e2j(n)(4)
υj(n)=∑6i=0ωji(n)Ti(n)(5)
yj(n)=f(υj(n))(6)
權值校正Δωji(n)=學習率參數η·局部梯度δj(n)·神經元j輸入信號Ti(n)
δj=f(vj)[1-f(vj)][dk-f(vj)](7)
由以上訓練可以得出輸入層與輸出層之間的權值wij(1≤i≤6,1≤j≤6),其中:i為輸入層神經元的標號,j為輸出層神經元的標號。最后把訓練好的權值發(fā)送給stm32,此時可以利用stm32軟件檢測的換向時間和權值,便可得到期望值d誤差較小的換相時間在yj,從而使電機換相平穩(wěn)、運行速度精準。
5 結語
本文建立了基于stm32和Matlab的電機控制系統(tǒng)、BP神經網絡采樣系統(tǒng)和BP神經網絡訓練系統(tǒng)。該設計方案具有智能化遠程控制和操作簡單的優(yōu)點,利用BP神經網絡優(yōu)秀的學習能力,能夠適應直流無刷電機這個多變量、強耦合、非線性復雜系統(tǒng),引入BP神經網絡控制,使系統(tǒng)對換相時間的控制具有更好的魯棒性。本文提出的BP神經網絡在換相系統(tǒng)中的應用,有利于提高電機控制精度及動態(tài)性能。本控制系統(tǒng)的設計理念可移植到眾多控制領域當中,因此,這種基于stm32和Matlab的BP神經網絡控制系統(tǒng)在智能化控制領域將會擁有廣闊的應用前景。
參考文獻:
[1] 張琛.直流無刷電動機原理及應用[M].北京:機械工業(yè)出版社,2006.
[2] 馮純伯,劉延年.神經網絡控制的現狀及問題[J].控制理論與應用,1994,11(1):103-106.
[3] 范磊,張運陶,程正軍.基于Matlab的改進BP 神經網絡及其應用[J].西華師范大學學報:自然科學版,2005,26(1):70-73.
[4] 張立材基于Matlab環(huán)境的串行數據通信[J].微計算機信息,2004,20(3):100-101
[5] KIM Y ,KOOK Y ,KO Y.A new technique of reducing to rqueripples for BDCM drives[J].IEEE Trans on Industrial Electronics.1997,44(5):735-739.
[6] SOMANATHAM R,PRASAD P V N,RAJKUMAR A D.Modeling and simulation of sensor less control of PM BLDC motor using zero crossing back EMF detection[C].IEEE International Symposium on Power Electronics,Electric Drives,Automation and Motion,2006:984-989.endprint