謝國坤
(西安交通工程學(xué)院 電氣工程學(xué)院,陜西 西安 710300)
進(jìn)入21世紀(jì)以來,曾支撐了整個20世紀(jì)人類文明高速發(fā)展的石化能源在千禧年之后出現(xiàn)了日趨嚴(yán)重的危機,其儲藏量被瘋狂開采后不斷銳減,同時也帶來了嚴(yán)重的環(huán)境問題。而太陽能是目前自然界已知存儲量最大的清潔能源,但由于開采利用技術(shù)的不成熟,導(dǎo)致能源的嚴(yán)重浪費。隨著近年來,新型數(shù)字化技術(shù)和自動化控制技術(shù)在生產(chǎn)領(lǐng)域的廣泛應(yīng)用,以及數(shù)字信號處理技術(shù)的不斷成熟,自動控制技術(shù)越來越多地被應(yīng)用到生產(chǎn)生活領(lǐng)域。
文獻(xiàn)[1]中,選用單片機STC89C52作為角度控制系統(tǒng)的主控制器,該系統(tǒng)采用按鍵模式設(shè)置帆板角度,采用PID控制器調(diào)節(jié)電機快速響應(yīng)。文獻(xiàn)[2]中,以51單片機為核心,通過霍爾式角度傳感器檢測帆板傾斜的角度,利用PWM脈沖調(diào)制電機轉(zhuǎn)動。文獻(xiàn)[3]中,采用STC芯片作為處理器,結(jié)合PID算法和PWM脈沖控制電機轉(zhuǎn)速。文中主要以STC89C52單片機作為核心器件,利用MPU6050檢測電機旋轉(zhuǎn)角度,應(yīng)用增量式PID算法,實現(xiàn)電機根據(jù)光照角度的變化,使電機快速響應(yīng),且設(shè)置了顯示模塊和按鍵模塊,可實時監(jiān)測電機旋轉(zhuǎn)角速度,采用按鍵實現(xiàn)了手動和自動兩種操作模式的切換。
該設(shè)計采用STC89C52作為角度自動控制系統(tǒng)的主控制器件,另外,包括MPU6050角度檢測、電機驅(qū)動、光強檢測、LCD液晶顯示和按鍵等功能模塊,根據(jù)這些模塊可實現(xiàn)帆板的實時控制。該系統(tǒng)的結(jié)構(gòu)框圖如圖1所示。
圖1 系統(tǒng)總框圖
由圖1可知,根據(jù)光照檢測模塊實時檢測光照角度值,同時,MPU6050角度傳感器將實時檢測到的角度信號通過A/D轉(zhuǎn)換獲得帆板角度信息,并實時顯示在LCD1602液晶顯示屏上。在軟件設(shè)計中,結(jié)合PID算法,通過單片機控制PWM波的輸出,快速準(zhǔn)確地控制電機驅(qū)動帆板轉(zhuǎn)動,若調(diào)節(jié)角度大于180°時,則觸發(fā)報警;另外,需要利用按鍵模塊在手動模式和自動模式之間切換,從而可調(diào)節(jié)帆板角度。
根據(jù)系統(tǒng)框圖設(shè)計系統(tǒng)電路原理圖。系統(tǒng)主要采用STC89C52單片機作為主控制器,其中角度測量電路主要采用GY-521MPU6050模塊三維角度傳感器,MPU-6050還有第二個I2C端口以方便連接51單片機的其他模塊。工作電壓一般為3V~5V的直流電,此外,MPU-6050的角速度全格感測范圍為+250~-250°/sec和+500~-500°/sec,最大可達(dá)到+1 000~-1 000°/sec,具有極大的轉(zhuǎn)動廣角,可快速追蹤轉(zhuǎn)動動作進(jìn)行實時的測量調(diào)控。采集到的θ角度可通過卡爾曼濾波器處理,卡爾曼濾波器在許多領(lǐng)域具有廣泛的應(yīng)用,包括機器人導(dǎo)航與控制、雷達(dá)跟蹤系統(tǒng)等,近年來還被應(yīng)用于計算機圖像處理,如視頻圖像跟蹤等。
MPU6050角度傳感器SCL時鐘線、SDA數(shù)據(jù)線分別與單片機的P3.2、P1.4連接進(jìn)行IIC通信。SCL為高電平時,當(dāng)SDA由高電平向低電平跳變時,開始傳送數(shù)據(jù)。SCL為高電平時,當(dāng)SDA由低電平向高電平跳變時,結(jié)束數(shù)據(jù)傳送[4-6]。
電機驅(qū)動電路主要采用ULN2803步進(jìn)電機驅(qū)動,因為STC89C52輸出的電壓一般為5 V,不足以帶動步進(jìn)電機驅(qū)動,所以需要采用ULN2803加以驅(qū)動[6]。驅(qū)動模塊ULN2803的8位輸入分別與STC89C52的D口8位輸出相連;而8位輸出分為兩組,目的是可同時連接兩個步進(jìn)電機。其接法比較簡單,按照要求輸入、輸出、電源和地線分別相連即可,電源選用+5 V。使用ULN2803驅(qū)動電機時,當(dāng)輸入信號為高電平時,輸出導(dǎo)通為低電平;輸入為低電平時,則不導(dǎo)通。
光強檢測模塊采用簡單的光敏電阻排列[7-9],將光強轉(zhuǎn)換為數(shù)字信號,通過I2C總線接口與主控芯片通信,通過程序性的比較,選擇最大平均光強,單片機主控模塊對其他模塊進(jìn)行控制。通過積分式A/D轉(zhuǎn)換器將流經(jīng)光敏二極管的電流積分轉(zhuǎn)換為數(shù)字量,該數(shù)字輸出表示測量每一個方向上的光強[7]。輸出的數(shù)字信號作為STC89C52微處理器的一個輸入信號,從而滿足該系統(tǒng)的光采集和轉(zhuǎn)換任務(wù)。
在實物設(shè)計中,選用PCF8591獲取數(shù)據(jù),其是一個單片集成的低功耗器件,主要完成數(shù)據(jù)轉(zhuǎn)換[8]。在本系統(tǒng)中,PCF8591與單片機相連時,需接四個10 k的上拉電阻,用于保護(hù)光敏檢測模塊[10-12]。PCF8591中的A/D轉(zhuǎn)換將測得的平均光強等模擬信號,轉(zhuǎn)變?yōu)閿?shù)字信號送入單片機,進(jìn)行對比確定光源方向[13]。I2C總線接口分別接主控芯片的P1.0和P1.1接口用以與單片機進(jìn)行通信。
顯示電路采用常用的LCD1602液晶屏進(jìn)行實時顯示,以串行的方式與單片機進(jìn)行通信,串行數(shù)據(jù)端口RS與單片機的P1.4相連,用于給顯示器傳輸指令和數(shù)據(jù)。讀寫引腳RW和單片機的P1.3口相連,控制液晶的讀寫數(shù)據(jù)[14]。數(shù)據(jù)的傳輸通過單片機P1口實時傳輸給顯示器。
在實際連接LCD1602液晶顯示時,LCD1602分為有背光和無背光。存在背光情況時,需連接V0引腳調(diào)整背景光對比度,單片機的P16引腳可實現(xiàn)對顯示屏背景光的亮度調(diào)整。
按鍵電路外圍五個按鍵,可以實現(xiàn)帆板在上下左右對方向上的調(diào)節(jié)。其中,S5按鍵實現(xiàn)對系統(tǒng)工作模式的切換,兩個發(fā)光二級管綠色表示在自動模式下工作,紅色表示在手動模式下工作;在手動模式下,上下左右四個方向的按鍵分別與STC89C52的P3.5、P3.3、P3.4、P3.6引腳連接,可實現(xiàn)帆板的轉(zhuǎn)動[15]。
在設(shè)計功能指示燈時,為了保護(hù)發(fā)光二極管電流過大,連接了1 kΩ的分壓電阻。在軟件設(shè)計中,按鍵選用軟件消抖,即增加一個循環(huán)延遲,增加按鍵的接觸反應(yīng)時間,使得按鍵的效果更加穩(wěn)定。
為了能夠精確地控制電機的轉(zhuǎn)速,選取PID控制算法的反饋調(diào)節(jié)機制控制電機,使角度誤差最快減為零的PWM占空比,單片機采用定時器中斷產(chǎn)生的PWM波實現(xiàn)對電機轉(zhuǎn)速的控制,使得電機快速響應(yīng)[16]。
為了使電機能夠跟隨條件實時改變轉(zhuǎn)速,且響應(yīng)速度穩(wěn)定,可選用PID控制算法對電機進(jìn)行轉(zhuǎn)速調(diào)制。PID控制算法不需要對控制對象建立相應(yīng)的具體模型,只需要根據(jù)經(jīng)驗對調(diào)節(jié)器的誤差及誤差變化率等參數(shù)在線調(diào)整,從而使控制對象的適應(yīng)性和靈活性增強[13]。
在自動角度控制系統(tǒng)中,采用PID算法調(diào)節(jié)電機轉(zhuǎn)動角度,使得電機根據(jù)設(shè)定條件快速響應(yīng),使得帆板光照接觸面達(dá)到最大,且響應(yīng)過程穩(wěn)定性能較好,可以實現(xiàn)自動角度檢測系統(tǒng)的設(shè)計[17]。根據(jù)采集光照信息轉(zhuǎn)換的角度值,結(jié)合PID控制器中的積分器控制,使得響應(yīng)與激勵的積分存在正比例的關(guān)系,從而實現(xiàn)消除穩(wěn)態(tài)誤差的功能。根據(jù)本系統(tǒng)功能和設(shè)計要求,采用數(shù)字增量式PID控制器設(shè)計,該控制器的計算公式如下:
Δu=Kp[e(k)-e(k-1)]+Kie(k)+Kd[e(k)-2e(k-1)+e(k-2)]
其中,Kp、Ki和Kd表示PID控制器的比例、積分和微分系數(shù),e為轉(zhuǎn)速誤差[3]。本系統(tǒng)根據(jù)設(shè)定轉(zhuǎn)速,比例項Kp的調(diào)節(jié)可以快速提取轉(zhuǎn)速誤差,積分項Ki可以使電機的轉(zhuǎn)速與設(shè)定閾值一致,保證靜差為零,微分項Kd可以對電機在下個周期的輸出信號進(jìn)行預(yù)測,從而快速提高系統(tǒng)的響應(yīng)速率。利用simulink軟件搭建的PID控制仿真模型如圖2所示。
圖2 PID控制仿真
在圖2中,PID控制模型主要包括PID控制器模塊、直流電機模塊、可控電源模塊以及對各節(jié)點輸出信號檢測的示波器。在該模型中,利用可控電壓源輸出信號的大小模擬PWM波形來實現(xiàn)對電機轉(zhuǎn)速的調(diào)節(jié),其輸出引腳分別與電機的電樞繞組引腳A+、A-和磁力繞組引腳F+和F-連接;為了模擬負(fù)載的大小,在電機的TL端加入了一階躍信號,信號的仿真時間表示加入負(fù)載時長;通過電機輸出端引腳m可以輸出電機旋轉(zhuǎn)角速度、轉(zhuǎn)矩、電樞和勵磁電流信號等狀態(tài)量,電機轉(zhuǎn)速閾值設(shè)定為500 rad/s,通過電機的m引腳傳輸電機相關(guān)的狀態(tài)變量,其中包括電機的旋轉(zhuǎn)角速度,圖2中利用示波器2可實時監(jiān)測電機的轉(zhuǎn)速。
PID控制器參數(shù)的設(shè)定可根據(jù)不同的算法計算得到,或者根據(jù)實際應(yīng)用測試結(jié)果選取最優(yōu)值[14]。但是,實際應(yīng)用中,需根據(jù)經(jīng)驗需求,利用多次嘗試選取合適的參數(shù),本系統(tǒng)選取的仿真參數(shù)為Kp=0.14、Ki=1.5和Kd=0.14。圖3為step的階躍信號仿真波形,階躍信號在0.7 s時發(fā)生跳變,表示電機在此刻加入負(fù)載。
圖3 負(fù)載轉(zhuǎn)矩仿真
圖4 電機轉(zhuǎn)速的變化曲線
根據(jù)各項參數(shù)的設(shè)定,查看示波器2中信號波形,如圖4所示。從圖中可知電機轉(zhuǎn)速在10 s內(nèi)的變化情況,電機在0.05 s基本趨于穩(wěn)定,當(dāng)在0.7 s加入負(fù)載時,電機轉(zhuǎn)速輕微發(fā)生波動,但在0.11 s內(nèi)趨于平穩(wěn),表明在PID控制器中選用的Kp、Ki和Kd各項參數(shù)使得電機快速響應(yīng),根據(jù)轉(zhuǎn)速波形可知,該系統(tǒng)具有一定的抗干擾能力,穩(wěn)定性較好。
開機進(jìn)入初始化,初始化程序包括定時器初始化、標(biāo)志位初始化及液晶初始化等;液晶屏初始化完成后,液晶屏將清屏,顯示初始角度,其他模塊開始工作,光采集模塊采集光強信息,通過A/D轉(zhuǎn)化將模擬信號轉(zhuǎn)為數(shù)字信號,傳送到STC89C52主控芯片,利用PID算法控制單片機占空比的輸出來控制電機電機轉(zhuǎn)速,并且在一定周期內(nèi)實時反饋調(diào)整。若調(diào)整角度大于180°,則觸發(fā)聲光報警,提醒復(fù)位,如果沒有達(dá)到所需調(diào)整角度,則利用PID算法的反饋調(diào)節(jié)機制,再次反饋調(diào)節(jié),直至滿足角度調(diào)整需求為止。本系統(tǒng)的主流程如圖5所示。
圖5 主程序流程
其中,角度檢測程序開機后進(jìn)行初始化,初始化完成之后,由角度傳感器檢測到當(dāng)前角度,通過A/D轉(zhuǎn)換,轉(zhuǎn)換為系統(tǒng)可識別的數(shù)字信號,讀入數(shù)字信號,調(diào)整數(shù)字信號值,在允許的誤差內(nèi)將處理過的數(shù)字信息送入主控芯片,完成角度檢測模塊的任務(wù)。PCF8591的A/D轉(zhuǎn)換程序,開機完成初始化之后,開始向控制芯片送入控制字,由內(nèi)部控制命令完成模數(shù)轉(zhuǎn)換,等待轉(zhuǎn)換。若轉(zhuǎn)換完畢,則直接將數(shù)字信號送入單片機,若轉(zhuǎn)換未完成,則返回繼續(xù)進(jìn)行轉(zhuǎn)換,直至轉(zhuǎn)換完成為止。
在自動角度采集系統(tǒng)中,由于電機旋轉(zhuǎn)過程中存在抖動現(xiàn)象,以及容易受到外界環(huán)境的變化等影響電機角度的準(zhǔn)確控制,從而使得采集到的信號不穩(wěn)定。文中在ADC轉(zhuǎn)換過程中,采集的模擬信號波形抖動較大,嚴(yán)重影響了θ角度的穩(wěn)定性控制;為了能夠更好地提高角度穩(wěn)定性的控制,可在系統(tǒng)軟件設(shè)計中濾除采集信號的干擾量。該設(shè)計主要采用卡爾曼濾波器濾除ADC轉(zhuǎn)化后的模擬量中的干擾信號,使得輸出信號電流為4 mA~20 mA,隨后結(jié)合去極值取平均值算法使得輸出的θ角度穩(wěn)定性得到提高。
在算法測試過程中,系統(tǒng)干擾噪聲為高斯白噪聲,使用參數(shù)Q表示,過程白噪聲采用參數(shù)R表示,實時測量電壓值為x_mid,設(shè)前一次測量的電壓值為x_last,實時最優(yōu)偏差量為p_mid,前一次最優(yōu)偏差值為p_last,增益為K1,估計最優(yōu)值為x_now。將首次測量的電壓值作為當(dāng)前電壓值,最優(yōu)偏差p_mid與系統(tǒng)白噪聲Q相加,作為當(dāng)前最優(yōu)偏差;利用實時最優(yōu)偏差與白噪聲之比,求出實時誤差增益,結(jié)合誤差增益和實施估計電壓值求出實施最優(yōu)值,采用實時最優(yōu)偏差和誤差增益求出實時協(xié)方差,將求得的協(xié)方差作為下次測量的最優(yōu)偏差,以及將實時最優(yōu)電壓值作為下次測量的估計值,不斷重復(fù)此過程,直到獲得最優(yōu)值。
在測試過程中,可適當(dāng)調(diào)整Q和R的值,數(shù)據(jù)不斷更新過程中使得數(shù)據(jù)偏差減小,結(jié)合平均值濾波算法保證采集的ADC輸出信號偏差較小,從而提高系統(tǒng)的穩(wěn)定性。但是,當(dāng)Q和R值選取不合適時,將會產(chǎn)生數(shù)據(jù)偏差較大的情況,從而很難獲得穩(wěn)定數(shù)值。
利用Proteus軟件繪制電路原理圖,在Keil軟件下編寫程序,運行并生成Hex文件,利用stc_isp軟件將Hex文件燒錄入單片機。根據(jù)電原理圖設(shè)計實物,實物測試如圖6所示。
圖6 實物測試
通過調(diào)節(jié)四個方向的光敏電阻的阻值,模擬不同方向上的光源,此時步進(jìn)電機的步距角為5.6°,從占空比可以看出一個周期內(nèi)兩個電機的PWM占空比是一樣的,所以達(dá)到了上左方向的光源模擬要求。根據(jù)仿真結(jié)果可知,采用PID算法可使電機快速響應(yīng),根據(jù)采集的光照信息,快速旋轉(zhuǎn)到光照相對較強區(qū)域,穩(wěn)定性較好。
在實物測試過程中,液晶顯示第一行為X、Y、Z軸的角速度,第二行為其加速度,角速度分別為-189、13、187(單位:rad/s),可以根據(jù)弧度與角度之間的關(guān)系轉(zhuǎn)化為角度值,根據(jù)角度信息可以實時監(jiān)測采集光照帆板的旋轉(zhuǎn)角度。在測試過程中,該設(shè)計可以根據(jù)光照旋轉(zhuǎn)帆板,電機轉(zhuǎn)速穩(wěn)定,響應(yīng)靈敏度高,基本實現(xiàn)了預(yù)期的設(shè)計目標(biāo)。
設(shè)計了一款基于STC89C52的角度自動控制系統(tǒng),選用STC89C52單片機作為核心控制芯片,通過排列式光敏電阻陣確定最大采光點,再由MPU6050角度傳感器確定角度信息,隨后,通過PCF8591將模擬角度信號轉(zhuǎn)換為數(shù)字角度信號,輸送到主控芯片,同時根據(jù)PID算法的反饋調(diào)節(jié),調(diào)節(jié)PWM占空比的輸出來控制ULN8023驅(qū)動電機的轉(zhuǎn)速,使得電機響應(yīng)靈敏。同時該系統(tǒng)具有聲光報警、液晶顯示和按鍵控制等功能,可實時監(jiān)測角度及在手動和自動模式之間切換,具有較高的穩(wěn)定性和可靠性。結(jié)合光強檢測的實時性和角度檢測的可靠性,能夠在一定時間內(nèi)對角度進(jìn)行實時的控制,根據(jù)仿真和測試結(jié)果可知,該系統(tǒng)在PID算法控制下,實現(xiàn)了角度自動控制系統(tǒng)的快速響應(yīng),仿真結(jié)果與測試結(jié)果一致,電機響應(yīng)穩(wěn)定性較好,且靈敏度較高,為以后太陽能系統(tǒng)高效性的研究提供了更好的基礎(chǔ)條件。