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