宋文龍+呂迎春+秦建敏+田建艷
摘 要: 研發(fā)一種基于MSP430G2553單片機(jī)和基于BP神經(jīng)網(wǎng)絡(luò)PID的電動(dòng)跑步機(jī)控制系統(tǒng)。按模塊設(shè)計(jì)了主要硬件電路。為了提高調(diào)速性能,在電流速度雙閉環(huán)中的速度環(huán)中采用了基于BP神經(jīng)網(wǎng)絡(luò)的PID控制算法。最后給出系統(tǒng)軟件設(shè)計(jì)的流程圖。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)能滿足設(shè)計(jì)要求,并具有更好的性能。
關(guān)鍵詞: MSP430G2553; 跑步機(jī); BP神經(jīng)網(wǎng)絡(luò); PWM
中圖分類號(hào): TN926?34; TP273 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2016)22?0150?04
電動(dòng)跑步機(jī)已成為家庭首選的健身器材,設(shè)計(jì)出一款高性能的電動(dòng)跑步機(jī)控制系統(tǒng)具有重要的現(xiàn)實(shí)意義[1]。本文設(shè)計(jì)了一種家用電動(dòng)跑步機(jī)控制系統(tǒng),并給出了主要硬件電路圖和軟件編寫流程圖。為了達(dá)到提高系統(tǒng)性能的目的,調(diào)速采用了電流與速度雙閉環(huán)控制方式,其中電流環(huán)采用PI控制算法,而在速度環(huán)中采用基于BP神經(jīng)網(wǎng)絡(luò)的PID控制算法。
1 系統(tǒng)結(jié)構(gòu)
系統(tǒng)硬件電路框圖如圖1所示,系統(tǒng)以單片機(jī)MSP430G2553為控制器,由按鍵、心率檢測(cè)、顯示、直流電機(jī)控制和檢測(cè)電路、升降電機(jī)控制和檢測(cè)電路以及電源變換模塊組成。
上電后,可通過按鍵實(shí)現(xiàn)電機(jī)的啟停、設(shè)置速度和坡度等功能。設(shè)置速度后,將設(shè)定值與實(shí)時(shí)檢測(cè)值進(jìn)行比較;若存在偏差,則采用數(shù)字式雙閉環(huán)PWM方式對(duì)直流電機(jī)進(jìn)行調(diào)速。通過軟件編程實(shí)現(xiàn)電流環(huán)PI控制以及速度環(huán)的BP神經(jīng)網(wǎng)絡(luò)的PID控制,再利用單片機(jī)產(chǎn)生占空比可調(diào)的PWM信號(hào),通過驅(qū)動(dòng)芯片MC34151控制MOS管IRF460的通斷,改變加在電機(jī)兩端的電壓,實(shí)現(xiàn)對(duì)電機(jī)的轉(zhuǎn)速調(diào)節(jié)。設(shè)置坡度后,通過檢測(cè)模擬電壓的方法來檢測(cè)升降位置,利用與設(shè)定值比較結(jié)果來控制繼電器的通斷,調(diào)節(jié)單相電容運(yùn)轉(zhuǎn)型異步電動(dòng)機(jī)的正反轉(zhuǎn)。心率的檢測(cè)使用TM998模塊,該模塊可以檢測(cè)到每個(gè)心跳信號(hào),據(jù)此可計(jì)算出心率。顯示電路可以顯示速度、路程、心率以及消耗的卡路里等參數(shù)。此外,還有過流過壓檢測(cè)電路,保證系統(tǒng)的安全。
2 系統(tǒng)主要硬件電路設(shè)計(jì)
2.1 MSP430G2553介紹
MSP430G2553是超低功耗混合信號(hào)微控制器,采用16位精簡(jiǎn)指令集(RISC)架構(gòu),有16 KB FLASH和512 B RAM,低電源電壓范圍1.8~3.6 V,有2個(gè)16位Timer_A,提供了多達(dá)3個(gè)8位I/O端口,端口P1和P2都具有中斷功能,一個(gè)10 位模數(shù)(A/D)轉(zhuǎn)換器,一個(gè)多用途模擬比較器以及采用通用串行通信接口的內(nèi)置通信能力。系統(tǒng)中采用28引腳的TSSOP封裝的型號(hào)。
2.2 轉(zhuǎn)速檢測(cè)電路
直流電動(dòng)機(jī)的轉(zhuǎn)速檢測(cè)電路原理圖如圖2所示,齒輪信號(hào)盤安裝在電動(dòng)機(jī)的轉(zhuǎn)軸上,HZL201霍爾齒輪傳感器垂直于信號(hào)盤安裝。當(dāng)信號(hào)盤隨電動(dòng)機(jī)轉(zhuǎn)軸旋轉(zhuǎn)時(shí),信號(hào)盤的每個(gè)齒輪經(jīng)過探頭正前方時(shí)HZL201傳感器會(huì)輸出一個(gè)近似方波的脈沖信號(hào)。此信號(hào)的高電平高介于14 V與15 V之間,低電平接近于0 V。信號(hào)經(jīng)8050三極管整形電路后接MSP430G2553單片機(jī)的P1.2腳。當(dāng)HZL201輸出高電平時(shí),三極管導(dǎo)通,P1.2端電壓為0,當(dāng)HZL201輸出低電平時(shí),三極管截止,P1.2端電壓約為3 V。P1.2腳配置為輸入、上升沿觸發(fā)中斷,在單片機(jī)內(nèi)部采用周期法計(jì)算得電動(dòng)機(jī)的轉(zhuǎn)速[2]。
2.3 電流檢測(cè)電路
為降低電路復(fù)雜度和節(jié)約成本,電流信號(hào)的采集使用采樣電阻來實(shí)現(xiàn)電流的采集。將0.01 Ω的精密采樣電阻接在IRF460 S極,把電流信號(hào)轉(zhuǎn)換為電壓信號(hào),再通過放大電路把電壓放大至單片機(jī)引腳承受電壓范圍內(nèi)。設(shè)定10 A電流對(duì)應(yīng)A/D滿量程,電壓放大倍數(shù)為[30.1]=30。因?yàn)檫\(yùn)放LM358并非軌對(duì)軌輸出,所以設(shè)定其放大倍數(shù)為20倍;又考慮到運(yùn)放增益帶寬積的限制,采用兩級(jí)同向比例放大電路實(shí)現(xiàn),兩級(jí)放大倍數(shù)分別為5倍和4倍。電流檢測(cè)電路原理圖如圖3所示,其中RC網(wǎng)絡(luò)用于濾除電流信號(hào)中的高頻噪聲,二極管用于對(duì)調(diào)理電路輸出電壓進(jìn)行限幅。
2.4 驅(qū)動(dòng)電路
驅(qū)動(dòng)芯片采用MC34151,它是為數(shù)字電路低電流驅(qū)動(dòng)高轉(zhuǎn)換速率的大電容負(fù)載而設(shè)計(jì)的雙逆變高速驅(qū)動(dòng)器,具有獨(dú)立雙通道1.5 A推挽電路輸出,與CMOS/LSTTL兼容,在高頻下運(yùn)行良好。開關(guān)管使用N溝道MOS管IRF460,其最大工作電壓和電流分別為600 V和21 A,導(dǎo)通電阻為0.27 Ω,開關(guān)速度快、工作頻率高、驅(qū)動(dòng)電路簡(jiǎn)單。
驅(qū)動(dòng)電路如圖4所示,PWM信號(hào)由單片機(jī)MSP430G2553的P1.1引腳輸出,接MC34151的輸入端INA和INB,MC34151的輸出端OUTA接IRF460的G端。當(dāng)PWM信號(hào)為高電平時(shí),MC34151輸出高電平,IRF460導(dǎo)通,直流電壓加在電機(jī)兩端,反之關(guān)斷。通過調(diào)節(jié)PWM信號(hào)的占空比,就可以調(diào)節(jié)加在直流電動(dòng)機(jī)兩端的平均電壓,從而改變電動(dòng)機(jī)的轉(zhuǎn)速。
2.5 坡度調(diào)節(jié)電路
跑臺(tái)坡度的調(diào)節(jié)采用單相電容運(yùn)轉(zhuǎn)型異步電動(dòng)機(jī)驅(qū)動(dòng),其額定電壓和額定電流分別為AC 220 V和0.5 A。坡度調(diào)節(jié)電路原理圖如圖5所示。當(dāng)P1.3輸出高電平時(shí),K2閉合,白、黑兩引線間接入交流電,跑臺(tái)升高;當(dāng)P3.1輸出高電平時(shí),K3閉合,白、紅引線間接入交流電,跑臺(tái)降低;當(dāng)P1.3,P3.1都輸出低電平,K2,K3都斷開,跑臺(tái)高度不變。繼電器工作電流為30 mA,單片機(jī)引腳輸出電流難以驅(qū)動(dòng),因此選用8050三極管作為驅(qū)動(dòng)元件。升降位置反饋信號(hào)為0~3 V模擬電壓,將此信號(hào)送入MSP430G2553單片機(jī)引腳P1.5,并將P1.5配置為A/D功能,即可獲取當(dāng)前升降位置。
2.6 心率檢測(cè)電路
TM998是一款手握心跳偵測(cè)模組,利用ECG原理,將表面電極置于人體皮膚上來量度從心臟所產(chǎn)生的電位差,據(jù)此產(chǎn)生心跳信號(hào)。心率檢測(cè)電路原理圖如圖6所示。
TM998的O引腳輸出的是脈沖信號(hào),即心臟每跳動(dòng)一下產(chǎn)生一個(gè)脈沖。脈沖輸入單片機(jī)P1.6引腳,P1.6腳配置為輸入、上升沿觸發(fā)中斷。心率值計(jì)算公式為:心率值=60×[1T]。其中,T為兩個(gè)脈沖之間的時(shí)間間隔。因?yàn)樾穆仕俾瘦^慢,可以在中斷程序中進(jìn)行中值濾波和滑動(dòng)平均值濾波處理后,獲得較準(zhǔn)確的測(cè)量值[3?4]。該模塊有幾十微秒到幾百微秒的尖波干擾信號(hào),若兩次脈沖間隔時(shí)間小于250 ms就可判定有干擾信號(hào)出現(xiàn),需要濾除掉。
3 控制算法
雙閉環(huán)調(diào)速系統(tǒng)具有良好的靜態(tài)和動(dòng)態(tài)性能,啟動(dòng)時(shí)間短,超調(diào)量小,因此系統(tǒng)采用雙閉環(huán)控制。內(nèi)環(huán)為電流環(huán),采用傳統(tǒng)PI控制算法,能有效地克服電壓波動(dòng)的影響;外環(huán)為速度環(huán),采用BP神經(jīng)網(wǎng)絡(luò)PID控制算法。BP神經(jīng)網(wǎng)絡(luò)具有非線性映射能力、泛化能力和容錯(cuò)能力,傳統(tǒng)PID的具有魯棒性強(qiáng)和抗干擾能力的優(yōu)點(diǎn),BP神經(jīng)網(wǎng)絡(luò)PID將二者優(yōu)點(diǎn)結(jié)合了起來,能在保證控制精度的前提下,提高系統(tǒng)響應(yīng)速度和魯棒性[5]。利用BP神經(jīng)網(wǎng)絡(luò)的自學(xué)習(xí)性,可以更容易地獲得合適的PID參數(shù)。
系統(tǒng)性能主要由外環(huán)決定,同時(shí)外環(huán)也能抑制內(nèi)環(huán)擾動(dòng)的影響,因此將BP神經(jīng)網(wǎng)絡(luò)PID控制器加于速度外環(huán)。基于BP神經(jīng)網(wǎng)絡(luò)的PID控制原理方框圖如圖7所示。
PID控制由比例、積分和微分環(huán)節(jié)組成,系統(tǒng)中采用增量式數(shù)字PID控制算法:
[k=uk-1+KPek-ek-1+KIek+ KD[ek-2ek-1+e(k-2)]] (1)
式中,[KP,KI,KD]為比例、積分、微分系數(shù)。
采用3層BP神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),其結(jié)構(gòu)如圖8所示[6]。此網(wǎng)絡(luò)的輸出如式(2)所示:
[opk=fi=1qωkigj=1Mωijxpj-θj-θk, i=1,2,…,q, k=1,2,…,L] (2)
式中:[xpj]和[opk]分別為輸入層節(jié)點(diǎn)j和輸出層節(jié)點(diǎn)k在樣本p作用時(shí)的輸出; f(·),g(·)分別為輸出層和隱藏層的激活函數(shù),均取Sigmoid函數(shù);M,q和k分別為輸入層、隱含層和輸出層的節(jié)點(diǎn)個(gè)數(shù);ωij為輸入層神經(jīng)元j與隱含層神經(jīng)元i之間的連接權(quán)值;θi為隱含層神經(jīng)元i的閾值;ωki為隱含層神經(jīng)元i和輸出層神經(jīng)元k之間的連接權(quán)值;θk為輸出層神經(jīng)元k的閾值。
BP神經(jīng)網(wǎng)絡(luò)的輸入為轉(zhuǎn)速偏差e、偏差變化率Δe以及速度反饋值n,輸出為PID參數(shù)KP,KI和KD。
考慮到MSP430G2553單片機(jī)運(yùn)算速度和存儲(chǔ)空間的限制,在PC機(jī)上采用Matlab軟件進(jìn)行BP神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)和訓(xùn)練等,即采用離線訓(xùn)練的方式,這樣在MSP430G2553單片機(jī)中只需考慮前向傳播過程。對(duì)于訓(xùn)練完畢的BP神經(jīng)網(wǎng)絡(luò),式(2)中的參數(shù)ωij,ωki,θi,θk都是確定值,可以利用這些編寫神經(jīng)網(wǎng)絡(luò)計(jì)算程序并嵌入到MSP40G2553中。在程序運(yùn)行過程中,就可以根據(jù)系統(tǒng)運(yùn)行狀態(tài)得到相應(yīng)的PID參數(shù)[7]KP,KI和KD。
4 系統(tǒng)的軟件設(shè)計(jì)
系統(tǒng)軟件采用C語(yǔ)言編寫,在IAR Embedded Workbench環(huán)境下進(jìn)行模塊化設(shè)計(jì)。整個(gè)軟件由主程序、系統(tǒng)子程序和中斷服務(wù)子程序組成。主程序流程圖如圖9所示。
系統(tǒng)初始化后,要求用戶輸入性別、體重等生理參數(shù),然后進(jìn)行按鍵輪詢。按下SELECT鍵,可以選擇自定義程式或預(yù)置程式,若第一次按下START鍵,以自主程式運(yùn)行,即鍛煉者可以根據(jù)需求隨時(shí)調(diào)整跑步機(jī)的速度與坡度。此外,在某程式運(yùn)行過程中,也可調(diào)節(jié)速度或坡度的操作。預(yù)置程式是固化在內(nèi)部FLASH的代碼,包括走步程式、跑步程式、減肥程式、心肺鍛煉程式以及智能程式。執(zhí)行預(yù)置程式時(shí),無需人工干預(yù),跑步機(jī)自動(dòng)運(yùn)行程式對(duì)應(yīng)的運(yùn)動(dòng)方案。選擇自定義程式時(shí),用戶可以根據(jù)自身狀況定制個(gè)性化的運(yùn)動(dòng)方案。
系統(tǒng)有個(gè)5子程序。調(diào)速子程序根據(jù)設(shè)定值和采樣值的比較結(jié)果,依據(jù)控制算法調(diào)節(jié)PWM的占空比。調(diào)坡子程序包含坡度采樣功能,通過采樣獲得的實(shí)際值和設(shè)定值來控制繼電器的通斷時(shí)間。計(jì)算子程序通過用戶的體重、當(dāng)前的速度和運(yùn)行時(shí)間來計(jì)算路程以及消耗的卡路里。顯示子程序刷新顯示。停機(jī)子程序?qū)⑵露群退俣葴p為零。
中斷子程序有4個(gè)。速度采樣中斷子程序在每次速度采樣通道產(chǎn)生中斷時(shí)調(diào)用,采用周期法計(jì)算速度。心率中斷計(jì)算子程序在心率檢測(cè)通道產(chǎn)生中斷時(shí)調(diào)用,完成心率的計(jì)算。定時(shí)中斷子程序中要包含喂狗功能。過壓過流中斷子程序在過流過壓時(shí)調(diào)用。
5 結(jié) 語(yǔ)
本系統(tǒng)很好地利用了MSP430G2553的資源,設(shè)計(jì)的硬件電路合理。采用的控制算法將BP神經(jīng)網(wǎng)絡(luò)和傳統(tǒng)PID相結(jié)合,使系統(tǒng)獲得較好的調(diào)速性能,并實(shí)現(xiàn)了BP神經(jīng)網(wǎng)絡(luò)PID與MSP430G2553單片機(jī)的結(jié)合。系統(tǒng)滿足設(shè)計(jì)目標(biāo),具有很好的穩(wěn)定性和精確性,有很好的實(shí)用價(jià)值。
參考文獻(xiàn)
[1] 劉洋,周旭,孫怡寧,等.基于步法的跑步機(jī)速度跟蹤控制方法[J].傳感技術(shù)學(xué)報(bào),2015,28(2):217?220.
[2] 徐春劍,吳一輝,武俊峰,等.基于FPGA的高精度霍爾測(cè)速方法[J].儀表技術(shù)與傳感器,2009(10):99?101.
[3] ASHEGHAN M M, M?GUEZ J. Stability analysis and robust control of heart beat rate during treadmill exercise [J]. Automatica, 2016, 63: 311?320.
[4] 柴波,邵常哲,黃淼,等.一種可監(jiān)測(cè)人體脈搏波及心率的健康鼠標(biāo)[J].現(xiàn)代電子技術(shù),2012,35(5):170?172.
[5] 張怡卓,劉步玉,馬琳.BP?PID控制方法在變量施肥控制系統(tǒng)中的應(yīng)用[J].現(xiàn)代電子技術(shù),2012,35(5):192?194.
[6] 黃劍平.基于BP神經(jīng)網(wǎng)絡(luò)的PID控制研究[J].計(jì)算機(jī)仿真,2010,27(7):167?170.
[7] ZHANG Yanhong, ZHAO Dean Z, ZHANG Jiansheng. Research on PID controller based on the BP neural network [C]// Proceedings of 2011 International Conference on Electronic and Mechanical Engineering and Information Technology. [S.l.]: IEEE, 2011: 516?519.