謝國坤
(西安交通工程學院 電氣工程學院,陜西 西安 710300)
進入21世紀以來,曾支撐了整個20世紀人類文明高速發展的石化能源在千禧年之后出現了日趨嚴重的危機,其儲藏量被瘋狂開采后不斷銳減,同時也帶來了嚴重的環境問題。而太陽能是目前自然界已知存儲量最大的清潔能源,但由于開采利用技術的不成熟,導致能源的嚴重浪費。隨著近年來,新型數字化技術和自動化控制技術在生產領域的廣泛應用,以及數字信號處理技術的不斷成熟,自動控制技術越來越多地被應用到生產生活領域。
文獻[1]中,選用單片機STC89C52作為角度控制系統的主控制器,該系統采用按鍵模式設置帆板角度,采用PID控制器調節電機快速響應。文獻[2]中,以51單片機為核心,通過霍爾式角度傳感器檢測帆板傾斜的角度,利用PWM脈沖調制電機轉動。文獻[3]中,采用STC芯片作為處理器,結合PID算法和PWM脈沖控制電機轉速。文中主要以STC89C52單片機作為核心器件,利用MPU6050檢測電機旋轉角度,應用增量式PID算法,實現電機根據光照角度的變化,使電機快速響應,且設置了顯示模塊和按鍵模塊,可實時監測電機旋轉角速度,采用按鍵實現了手動和自動兩種操作模式的切換。
該設計采用STC89C52作為角度自動控制系統的主控制器件,另外,包括MPU6050角度檢測、電機驅動、光強檢測、LCD液晶顯示和按鍵等功能模塊,根據這些模塊可實現帆板的實時控制。該系統的結構框圖如圖1所示。

圖1 系統總框圖
由圖1可知,根據光照檢測模塊實時檢測光照角度值,同時,MPU6050角度傳感器將實時檢測到的角度信號通過A/D轉換獲得帆板角度信息,并實時顯示在LCD1602液晶顯示屏上。在軟件設計中,結合PID算法,通過單片機控制PWM波的輸出,快速準確地控制電機驅動帆板轉動,若調節角度大于180°時,則觸發報警;另外,需要利用按鍵模塊在手動模式和自動模式之間切換,從而可調節帆板角度。
根據系統框圖設計系統電路原理圖。系統主要采用STC89C52單片機作為主控制器,其中角度測量電路主要采用GY-521MPU6050模塊三維角度傳感器,MPU-6050還有第二個I2C端口以方便連接51單片機的其他模塊。工作電壓一般為3V~5V的直流電,此外,MPU-6050的角速度全格感測范圍為+250~-250°/sec和+500~-500°/sec,最大可達到+1 000~-1 000°/sec,具有極大的轉動廣角,可快速追蹤轉動動作進行實時的測量調控。采集到的θ角度可通過卡爾曼濾波器處理,卡爾曼濾波器在許多領域具有廣泛的應用,包括機器人導航與控制、雷達跟蹤系統等,近年來還被應用于計算機圖像處理,如視頻圖像跟蹤等。
MPU6050角度傳感器SCL時鐘線、SDA數據線分別與單片機的P3.2、P1.4連接進行IIC通信。SCL為高電平時,當SDA由高電平向低電平跳變時,開始傳送數據。SCL為高電平時,當SDA由低電平向高電平跳變時,結束數據傳送[4-6]。
電機驅動電路主要采用ULN2803步進電機驅動,因為STC89C52輸出的電壓一般為5 V,不足以帶動步進電機驅動,所以需要采用ULN2803加以驅動[6]。驅動模塊ULN2803的8位輸入分別與STC89C52的D口8位輸出相連;而8位輸出分為兩組,目的是可同時連接兩個步進電機。其接法比較簡單,按照要求輸入、輸出、電源和地線分別相連即可,電源選用+5 V。使用ULN2803驅動電機時,當輸入信號為高電平時,輸出導通為低電平;輸入為低電平時,則不導通。
光強檢測模塊采用簡單的光敏電阻排列[7-9],將光強轉換為數字信號,通過I2C總線接口與主控芯片通信,通過程序性的比較,選擇最大平均光強,單片機主控模塊對其他模塊進行控制。通過積分式A/D轉換器將流經光敏二極管的電流積分轉換為數字量,該數字輸出表示測量每一個方向上的光強[7]。輸出的數字信號作為STC89C52微處理器的一個輸入信號,從而滿足該系統的光采集和轉換任務。
在實物設計中,選用PCF8591獲取數據,其是一個單片集成的低功耗器件,主要完成數據轉換[8]。在本系統中,PCF8591與單片機相連時,需接四個10 k的上拉電阻,用于保護光敏檢測模塊[10-12]。PCF8591中的A/D轉換將測得的平均光強等模擬信號,轉變為數字信號送入單片機,進行對比確定光源方向[13]。I2C總線接口分別接主控芯片的P1.0和P1.1接口用以與單片機進行通信。
顯示電路采用常用的LCD1602液晶屏進行實時顯示,以串行的方式與單片機進行通信,串行數據端口RS與單片機的P1.4相連,用于給顯示器傳輸指令和數據。讀寫引腳RW和單片機的P1.3口相連,控制液晶的讀寫數據[14]。數據的傳輸通過單片機P1口實時傳輸給顯示器。
在實際連接LCD1602液晶顯示時,LCD1602分為有背光和無背光。存在背光情況時,需連接V0引腳調整背景光對比度,單片機的P16引腳可實現對顯示屏背景光的亮度調整。
按鍵電路外圍五個按鍵,可以實現帆板在上下左右對方向上的調節。其中,S5按鍵實現對系統工作模式的切換,兩個發光二級管綠色表示在自動模式下工作,紅色表示在手動模式下工作;在手動模式下,上下左右四個方向的按鍵分別與STC89C52的P3.5、P3.3、P3.4、P3.6引腳連接,可實現帆板的轉動[15]。
在設計功能指示燈時,為了保護發光二極管電流過大,連接了1 kΩ的分壓電阻。在軟件設計中,按鍵選用軟件消抖,即增加一個循環延遲,增加按鍵的接觸反應時間,使得按鍵的效果更加穩定。
為了能夠精確地控制電機的轉速,選取PID控制算法的反饋調節機制控制電機,使角度誤差最快減為零的PWM占空比,單片機采用定時器中斷產生的PWM波實現對電機轉速的控制,使得電機快速響應[16]。
為了使電機能夠跟隨條件實時改變轉速,且響應速度穩定,可選用PID控制算法對電機進行轉速調制。PID控制算法不需要對控制對象建立相應的具體模型,只需要根據經驗對調節器的誤差及誤差變化率等參數在線調整,從而使控制對象的適應性和靈活性增強[13]。
在自動角度控制系統中,采用PID算法調節電機轉動角度,使得電機根據設定條件快速響應,使得帆板光照接觸面達到最大,且響應過程穩定性能較好,可以實現自動角度檢測系統的設計[17]。根據采集光照信息轉換的角度值,結合PID控制器中的積分器控制,使得響應與激勵的積分存在正比例的關系,從而實現消除穩態誤差的功能。根據本系統功能和設計要求,采用數字增量式PID控制器設計,該控制器的計算公式如下:
Δu=Kp[e(k)-e(k-1)]+Kie(k)+Kd[e(k)-2e(k-1)+e(k-2)]
其中,Kp、Ki和Kd表示PID控制器的比例、積分和微分系數,e為轉速誤差[3]。本系統根據設定轉速,比例項Kp的調節可以快速提取轉速誤差,積分項Ki可以使電機的轉速與設定閾值一致,保證靜差為零,微分項Kd可以對電機在下個周期的輸出信號進行預測,從而快速提高系統的響應速率。利用simulink軟件搭建的PID控制仿真模型如圖2所示。

圖2 PID控制仿真
在圖2中,PID控制模型主要包括PID控制器模塊、直流電機模塊、可控電源模塊以及對各節點輸出信號檢測的示波器。在該模型中,利用可控電壓源輸出信號的大小模擬PWM波形來實現對電機轉速的調節,其輸出引腳分別與電機的電樞繞組引腳A+、A-和磁力繞組引腳F+和F-連接;為了模擬負載的大小,在電機的TL端加入了一階躍信號,信號的仿真時間表示加入負載時長;通過電機輸出端引腳m可以輸出電機旋轉角速度、轉矩、電樞和勵磁電流信號等狀態量,電機轉速閾值設定為500 rad/s,通過電機的m引腳傳輸電機相關的狀態變量,其中包括電機的旋轉角速度,圖2中利用示波器2可實時監測電機的轉速。
PID控制器參數的設定可根據不同的算法計算得到,或者根據實際應用測試結果選取最優值[14]。但是,實際應用中,需根據經驗需求,利用多次嘗試選取合適的參數,本系統選取的仿真參數為Kp=0.14、Ki=1.5和Kd=0.14。圖3為step的階躍信號仿真波形,階躍信號在0.7 s時發生跳變,表示電機在此刻加入負載。

圖3 負載轉矩仿真

圖4 電機轉速的變化曲線
根據各項參數的設定,查看示波器2中信號波形,如圖4所示。從圖中可知電機轉速在10 s內的變化情況,電機在0.05 s基本趨于穩定,當在0.7 s加入負載時,電機轉速輕微發生波動,但在0.11 s內趨于平穩,表明在PID控制器中選用的Kp、Ki和Kd各項參數使得電機快速響應,根據轉速波形可知,該系統具有一定的抗干擾能力,穩定性較好。
開機進入初始化,初始化程序包括定時器初始化、標志位初始化及液晶初始化等;液晶屏初始化完成后,液晶屏將清屏,顯示初始角度,其他模塊開始工作,光采集模塊采集光強信息,通過A/D轉化將模擬信號轉為數字信號,傳送到STC89C52主控芯片,利用PID算法控制單片機占空比的輸出來控制電機電機轉速,并且在一定周期內實時反饋調整。若調整角度大于180°,則觸發聲光報警,提醒復位,如果沒有達到所需調整角度,則利用PID算法的反饋調節機制,再次反饋調節,直至滿足角度調整需求為止。本系統的主流程如圖5所示。

圖5 主程序流程
其中,角度檢測程序開機后進行初始化,初始化完成之后,由角度傳感器檢測到當前角度,通過A/D轉換,轉換為系統可識別的數字信號,讀入數字信號,調整數字信號值,在允許的誤差內將處理過的數字信息送入主控芯片,完成角度檢測模塊的任務。PCF8591的A/D轉換程序,開機完成初始化之后,開始向控制芯片送入控制字,由內部控制命令完成模數轉換,等待轉換。若轉換完畢,則直接將數字信號送入單片機,若轉換未完成,則返回繼續進行轉換,直至轉換完成為止。
在自動角度采集系統中,由于電機旋轉過程中存在抖動現象,以及容易受到外界環境的變化等影響電機角度的準確控制,從而使得采集到的信號不穩定。文中在ADC轉換過程中,采集的模擬信號波形抖動較大,嚴重影響了θ角度的穩定性控制;為了能夠更好地提高角度穩定性的控制,可在系統軟件設計中濾除采集信號的干擾量。該設計主要采用卡爾曼濾波器濾除ADC轉化后的模擬量中的干擾信號,使得輸出信號電流為4 mA~20 mA,隨后結合去極值取平均值算法使得輸出的θ角度穩定性得到提高。
在算法測試過程中,系統干擾噪聲為高斯白噪聲,使用參數Q表示,過程白噪聲采用參數R表示,實時測量電壓值為x_mid,設前一次測量的電壓值為x_last,實時最優偏差量為p_mid,前一次最優偏差值為p_last,增益為K1,估計最優值為x_now。將首次測量的電壓值作為當前電壓值,最優偏差p_mid與系統白噪聲Q相加,作為當前最優偏差;利用實時最優偏差與白噪聲之比,求出實時誤差增益,結合誤差增益和實施估計電壓值求出實施最優值,采用實時最優偏差和誤差增益求出實時協方差,將求得的協方差作為下次測量的最優偏差,以及將實時最優電壓值作為下次測量的估計值,不斷重復此過程,直到獲得最優值。
在測試過程中,可適當調整Q和R的值,數據不斷更新過程中使得數據偏差減小,結合平均值濾波算法保證采集的ADC輸出信號偏差較小,從而提高系統的穩定性。但是,當Q和R值選取不合適時,將會產生數據偏差較大的情況,從而很難獲得穩定數值。
利用Proteus軟件繪制電路原理圖,在Keil軟件下編寫程序,運行并生成Hex文件,利用stc_isp軟件將Hex文件燒錄入單片機。根據電原理圖設計實物,實物測試如圖6所示。

圖6 實物測試
通過調節四個方向的光敏電阻的阻值,模擬不同方向上的光源,此時步進電機的步距角為5.6°,從占空比可以看出一個周期內兩個電機的PWM占空比是一樣的,所以達到了上左方向的光源模擬要求。根據仿真結果可知,采用PID算法可使電機快速響應,根據采集的光照信息,快速旋轉到光照相對較強區域,穩定性較好。
在實物測試過程中,液晶顯示第一行為X、Y、Z軸的角速度,第二行為其加速度,角速度分別為-189、13、187(單位:rad/s),可以根據弧度與角度之間的關系轉化為角度值,根據角度信息可以實時監測采集光照帆板的旋轉角度。在測試過程中,該設計可以根據光照旋轉帆板,電機轉速穩定,響應靈敏度高,基本實現了預期的設計目標。
設計了一款基于STC89C52的角度自動控制系統,選用STC89C52單片機作為核心控制芯片,通過排列式光敏電阻陣確定最大采光點,再由MPU6050角度傳感器確定角度信息,隨后,通過PCF8591將模擬角度信號轉換為數字角度信號,輸送到主控芯片,同時根據PID算法的反饋調節,調節PWM占空比的輸出來控制ULN8023驅動電機的轉速,使得電機響應靈敏。同時該系統具有聲光報警、液晶顯示和按鍵控制等功能,可實時監測角度及在手動和自動模式之間切換,具有較高的穩定性和可靠性。結合光強檢測的實時性和角度檢測的可靠性,能夠在一定時間內對角度進行實時的控制,根據仿真和測試結果可知,該系統在PID算法控制下,實現了角度自動控制系統的快速響應,仿真結果與測試結果一致,電機響應穩定性較好,且靈敏度較高,為以后太陽能系統高效性的研究提供了更好的基礎條件。