文獻標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2015.12.005
中文引用格式: 王長清,,余丙濤,,潘德強. 基于STM32的逐陽帆控制系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,2015,,41(12):25-27,,31.
英文引用格式: Wang Changqing,Yu Bingtao,,Pan Deqiang. A solar tracker system based on STM32[J].Application of Electronic Technique,,2015,41(12):25-27,,31.
0 引言
太陽能作為一種清潔、可持續(xù)發(fā)展的新能源,,目前已經(jīng)被大量利用。由于在同一地理位置觀測到的太陽方位角時刻處于變化當(dāng)中,,導(dǎo)致固定支架式太陽能電池板發(fā)電量較低,。目前,國內(nèi)部分光伏電站已經(jīng)大量采用可跟蹤式太陽能支架,。光伏電站一般建于人煙稀少的荒漠地區(qū),,占地面積大,系統(tǒng)維護較為困難,,對跟蹤支架控制系統(tǒng)的可靠性和調(diào)試便利性提出了要求,。文獻[1]提出的高精度太陽能跟蹤控制器解決了太陽跟蹤精度的問題,但是控制功能單一,,實用性不強,。文獻[2]提出的控制系統(tǒng)實用性較強,有大風(fēng)天氣的保護模式,,但是系統(tǒng)維護升級復(fù)雜,,同時因為沒有備份系統(tǒng)程序,一旦程序出現(xiàn)不可恢復(fù)性問題,,系統(tǒng)就不能正常工作,,可靠性不高。
針對以上方案存在系統(tǒng)維護升級困難,、可靠性不高的問題,,本文提出的基于STM32的太陽能跟蹤系統(tǒng),,具有升級維護方便、系統(tǒng)可靠性高,、實用性強的特點,,目前已經(jīng)被應(yīng)用于內(nèi)蒙古自治區(qū)察右中旗庫倫光伏電站的跟蹤式光伏支架項目中。為了解決系統(tǒng)升級困難的問題,,該系統(tǒng)創(chuàng)新性地將ZigBee技術(shù)和應(yīng)用編程技術(shù)結(jié)合應(yīng)用于工程之中,,實現(xiàn)了無線升級的功能,將后期維護升級人員的工作量減小到最少,。為了方便后臺管理,,系統(tǒng)將信息通過ModBus協(xié)議上報。該系統(tǒng)有抗風(fēng)和抗雪兩種保護模式,,提高了系統(tǒng)抵抗自熱災(zāi)害的性能,。為了保證系統(tǒng)的可靠性,系統(tǒng)將控制芯片的片內(nèi)Flash分為BootLoader程序區(qū),、主程序區(qū)和備份程序區(qū),,當(dāng)主程序因不可知因素擾亂不能正常工作時,系統(tǒng)通過BootLoader程序跳轉(zhuǎn)至備份程序區(qū)繼續(xù)運行,。同時,,系統(tǒng)通過μC/OS II操作系統(tǒng)對系統(tǒng)任務(wù)進行調(diào)度管理,保證系統(tǒng)的實時性和穩(wěn)定性,。經(jīng)實際應(yīng)用測試,,該系統(tǒng)工作穩(wěn)定。
1 系統(tǒng)原理
系統(tǒng)采用ST公司的STM32F103ZET6為主控芯片,,外部掛載GPS模塊,、角度傳感器、EEROM,、ZigBee模塊以及獨立鍵盤,。系統(tǒng)通過GPS模塊獲取當(dāng)前經(jīng)緯度值,通過讀取STM32內(nèi)部的時鐘模塊,,計算出當(dāng)前時間值,,并通過經(jīng)緯度和時間值計算出太陽方位角。系統(tǒng)通過讀取角度傳感器獲取當(dāng)前太陽能板的方位角度值,,計算出太陽當(dāng)前的方位角與太陽能板傾斜角的角度差,,再根據(jù)該差值驅(qū)動電機將太陽能板轉(zhuǎn)動一定角度。由于光伏電站一般建于人煙較少的地區(qū),,維護比較困難,,所以對太陽追蹤系統(tǒng)的穩(wěn)定性要求較高。本系統(tǒng)通過對片內(nèi)Flash進行分區(qū),將片內(nèi)512 K Flash分為BootLoader程序區(qū),、主程序區(qū)和備份程序區(qū),,保證系統(tǒng)在主程序卡死時能夠跳轉(zhuǎn)到備份程序區(qū)繼續(xù)運行,從而提高了系統(tǒng)的穩(wěn)定性,。由于光伏電站占地面積太大,,動輒多達1到2平方公里,動用人力來對區(qū)域內(nèi)所有設(shè)備進行升級維護工作量太大,,本系統(tǒng)通過ZigBee技術(shù)實現(xiàn)了區(qū)域內(nèi)無線網(wǎng)絡(luò)覆蓋,,使維護人員在一臺設(shè)備上即可對網(wǎng)內(nèi)任一設(shè)備進行無線升級,減少了工作量,。為了方便光伏電站對逐陽帆系統(tǒng)進行管理,,本系統(tǒng)采用ModBus通訊協(xié)議提供RS485接口,以便后臺對追蹤系統(tǒng)進行參數(shù)設(shè)置和信息查詢,。本系統(tǒng)設(shè)有獨立鍵盤,,用于手動控制。由于系統(tǒng)較為復(fù)雜,,對系統(tǒng)的穩(wěn)定性和實時性都有一定的要求,,所以本系統(tǒng)采用μC/OS II 操作系統(tǒng)對任務(wù)進行管理。
2 系統(tǒng)硬件設(shè)計
系統(tǒng)分為主板和從板,,主板安裝在電控柜,,用于控制三相交流電機。從板安裝于斜單軸主梁上,,外部掛載角度傳感器,,用于獲取角度信息。主板與從板通過RS485串行總線通信,。主板的串口1用于獲取GPS信息,串口2用于與ZigBee模塊通信,。串口3和串口4接RS485接口,。串口5接RS232接口。電機驅(qū)動采用三相交流電機正反轉(zhuǎn)模塊,。為了擴大ZigBee的通信范圍,,系統(tǒng)通過CC2592進行功率放大。按鍵采用自鎖式按鍵開關(guān),。系統(tǒng)硬件結(jié)構(gòu)圖如圖1,。
3 系統(tǒng)軟件設(shè)計
3.1 從板軟件設(shè)計
從板用于采集太陽能板當(dāng)前方位角度值并通過RS485總線反饋給主板。從板的程序流程圖如圖2,。
系統(tǒng)首先配置時鐘,,本系統(tǒng)采用外部8 MHz晶振,經(jīng)芯片內(nèi)部倍頻后,,系統(tǒng)時鐘為72 MHz,。外設(shè)初始化包括IIC,、定時器和串口。MPU6050的初始化包括解除休眠狀態(tài),、設(shè)置陀螺儀采樣率選擇量程等,。主程序通過檢測接收完成標(biāo)志位來判斷一幀數(shù)據(jù)是否接收完成,并檢測是否是關(guān)鍵字,,若是關(guān)鍵字,,則讀MPU6050,計算三軸角度并通過串口發(fā)送,。
3.2 主板軟件設(shè)計
主板的程序分為BootLoader部分和APP部分,。
BootLoader部分用于無線IAP和處理系統(tǒng)異常,代碼存放在片內(nèi)Flash 0x8000000到0x8002FFF 12 KB空間范圍內(nèi),。程序首先解鎖Flash,,然后初始化串口和IIC。IIC掛載24C02,,用于存放系統(tǒng)標(biāo)識字,。初始化完成后,讀取存在24C02中的標(biāo)識字,,并進行加1操作,,再存入24C02。在主循環(huán)中讀取存放在24C02中的標(biāo)識字,,通過標(biāo)識字的值來判斷系統(tǒng)當(dāng)前的狀態(tài),。如果標(biāo)識字為1,說明此刻在進行IAP應(yīng)用程序升級,,此時系統(tǒng)通過Ymodem協(xié)議接收.bin文件并執(zhí)行新程序,。如果標(biāo)識字為2,說明App程序卡死,,導(dǎo)致系統(tǒng)沒有及時復(fù)位,,此時程序跳轉(zhuǎn)至備份程序區(qū)。當(dāng)標(biāo)識字大于2時,,說明備份程序也卡死,,此時程序不再跳轉(zhuǎn),點亮LED進行報警,。BootLoader程序的地址偏移量為0,,共12 K 地址空間;App程序的地址偏移量為0x3000,,250 K 地址空間,;備份程序的地址偏移量為0x41800,250 K地址空間。BootLoader程序流程圖如圖3,。
App部分程序流程圖如圖4,。系統(tǒng)通過μC/OS II 操作系統(tǒng)來對各個任務(wù)進行管理。由于App部分的代碼存放在Flash中的地址偏移量為0x8003000,,所以在程序開始時,,需要設(shè)置地址偏移量:SCB->VTOR=Flash_BASE | 0x3000。設(shè)置完后初始化各種外設(shè)并初始化系統(tǒng),,創(chuàng)建開始任務(wù),,最后開始對系統(tǒng)的各個任務(wù)進行處理。
啟動任務(wù)主要是用于創(chuàng)建二值信號量,、郵箱,、內(nèi)存區(qū)和系統(tǒng)的各種任務(wù)。在完成創(chuàng)建后,,需要刪除啟動任務(wù),。
系統(tǒng)設(shè)置任務(wù)用于設(shè)置系統(tǒng)參數(shù),由于系統(tǒng)設(shè)置任務(wù)是關(guān)鍵任務(wù),,所以其優(yōu)先級僅次于起始任務(wù),。系統(tǒng)設(shè)置任務(wù)通過串口1與上位機連接,設(shè)置的參數(shù)有時間,、經(jīng)緯度,、板長、板間距,、限位角,、避風(fēng)角、避雪角度,。系統(tǒng)首先通過SETSYSTEM指令進入系統(tǒng)設(shè)置狀態(tài),,并通過串口在上位機界面上打印提示信息。進入系統(tǒng)設(shè)置狀態(tài)以后,,通過不同的指令進行不同參數(shù)的設(shè)置,。在設(shè)置RTC時間時,需要將時間換算成秒數(shù),,再將該值寫入RTC的秒寄存器,同時注意閏年換算,。由于電站后臺需要對系統(tǒng)信息進行查詢,,所以需要將系統(tǒng)參數(shù)寫入到保持寄存器中,方便后臺查詢管理,。在系統(tǒng)設(shè)置的循環(huán)中加入系統(tǒng)延時,,即將該任務(wù)掛起,提高系統(tǒng)的實時性。保證在進行系統(tǒng)設(shè)置時,,系統(tǒng)的各個任務(wù)仍然可以調(diào)度,。系統(tǒng)設(shè)置任務(wù)的程序流程圖如圖 5。
由于ModBus任務(wù)的實時性較高,,可用信號量或者郵箱來觸發(fā),,在實際測試中發(fā)現(xiàn)將ModBus處理函數(shù)放在定時器中斷服務(wù)程序中更好。本系統(tǒng)支持ModBus的命令有01,,02,,03,04,,05,,15,16,。保持寄存器中包含的信息為從機地址,、時間信息、經(jīng)緯度,、限位角,、工作模式等信息。
按鍵任務(wù)用于檢測按鍵事件,,保證系統(tǒng)可以手動控制,。任務(wù)輪詢模式按鍵是否有按鍵按下,如果按下,,進行消抖,,發(fā)送郵箱。在按鍵任務(wù)中需要注意的是系統(tǒng)必須是輪詢電平而不是上升沿或者下降沿,。在模式按鍵按下之前,,正轉(zhuǎn)和反轉(zhuǎn)按鍵按下,系統(tǒng)不做任何操作,。
電機驅(qū)動任務(wù)用于獲取GPS,、RTC、角度數(shù)據(jù),。并根據(jù)當(dāng)前系統(tǒng)模式來驅(qū)動電機,。電機驅(qū)動任務(wù)的程序流程圖如圖6。
經(jīng)計算,,太陽方位角基本上為2分鐘轉(zhuǎn)0.5度,,因此程序?qū)崟r性要求不高。當(dāng)模式按鍵按下以后,,按鍵任務(wù)會發(fā)送郵箱給電機驅(qū)動任務(wù),。當(dāng)電機驅(qū)動任務(wù)接收到郵箱以后,,會檢測正轉(zhuǎn)反轉(zhuǎn)以及模式按鍵是否按下。3個按鍵均為自鎖按鍵,,只有在模式按鍵有效的情況下,,正反轉(zhuǎn)按鍵才有效。如果在1秒之內(nèi)沒有收到郵箱,,此時電機驅(qū)動任務(wù)結(jié)束掛起,,取得CPU所有權(quán)。申請內(nèi)存存放GPS,、角度,、時間信息。讀GPS,,如果當(dāng)前GPS無效,,讀RTC時間,并將時間值寫入時間寄存器,。讀角度值,,如果角度值無效,電機停止轉(zhuǎn)動,,并點亮LED報警,。讀模式寄存器的值,1為自動模式,,2為避風(fēng)模式,,3為避雪模式。如果是自動模式,,需要根據(jù)時間,、經(jīng)緯度、板子參數(shù)計算出太陽的方位角,,驅(qū)動電機,。
3.3 ZigBee程序設(shè)計
ZigBee部分主要是透傳作用。系統(tǒng)采用的ZigBee協(xié)議版本為ZStack 2.5.1a,。協(xié)調(diào)器與上位機相連,,在協(xié)調(diào)器收到串口數(shù)據(jù)以后,將收到的數(shù)據(jù)進行廣播,。所有子節(jié)點收到協(xié)調(diào)器廣播的數(shù)據(jù)以后,,將數(shù)據(jù)通過串口發(fā)送給控制板。如果當(dāng)前的控制板處于BootLoader模式,,則控制板將ZigBee模塊通過串口發(fā)送過來的數(shù)據(jù)寫入Flash,。子節(jié)點將控制板通過串口發(fā)送過來的數(shù)據(jù)單播給協(xié)調(diào)器,協(xié)調(diào)器收到子節(jié)點單播的數(shù)據(jù)以后,,通過串口發(fā)送給上位機,。系統(tǒng)需要預(yù)編譯MT_TASK,在MT層處理串口數(shù)據(jù),。在MT層接收完一幀數(shù)據(jù)以后,,將數(shù)據(jù)打包,發(fā)往應(yīng)用層,。應(yīng)用層收到數(shù)據(jù)以后,,將數(shù)據(jù)解包,然后調(diào)用AF_DataRequest()函數(shù)將串口字符串發(fā)送出去,。當(dāng)收到空中發(fā)過來的數(shù)據(jù)以后,應(yīng)用層會有AF_INCOMING_MSG_CMD事件產(chǎn)生,,在該事件的處理函數(shù)中對數(shù)據(jù)進行解包,然后將有效數(shù)據(jù)通過串口發(fā)送出去,。
4 結(jié)論
該系統(tǒng)的創(chuàng)新處為把ZigBee技術(shù)應(yīng)用于光伏電廠,,通過ZigBee技術(shù)和應(yīng)用程序編程技術(shù)實現(xiàn)了系統(tǒng)程序無線更新,減輕了調(diào)試人員的工作量,。通過對片內(nèi)Flash分區(qū),,寫入備份程序,保證了系統(tǒng)的可靠性,。同時系統(tǒng)的多種工作模式保證了系統(tǒng)的抗風(fēng),、抗雪性能。在實際現(xiàn)場的測試,,該系統(tǒng)運行穩(wěn)定,。目前,該系統(tǒng)已經(jīng)被應(yīng)用于上海摩昆新能源科技有限公司承擔(dān)的內(nèi)蒙庫倫光伏電站二期可跟蹤光伏支架的項目中,。
參考文獻
[1] 王小鑫,,胡紅利,王博.高精度太陽能跟蹤控制器[J].光電與控制,,2012(12):80-83.
[2] 仲玉芳,,王慧芬,葉建鋒.光伏發(fā)電系統(tǒng)太陽跟蹤裝置的研究[J].太陽能學(xué)報,,2013(10):1762-1767.
[3] 萬蓉鳳,,修春波,盧少磊.基于ZigBee技術(shù)的風(fēng)速測量系統(tǒng)的設(shè)計[J].中南大學(xué)學(xué)報(自然科學(xué)版),,2013(S1):162-165.
[4] 丁力,,宋志平,徐萌萌.基于STM32的嵌入式測控系統(tǒng)設(shè)計[J].中南大學(xué)學(xué)報(自然科學(xué)版),,2013(S1):260-265.
[5] 王鈺博,,黃凱,陳辰.嵌入式Flash讀取加速技術(shù)及實現(xiàn)[J].浙江大學(xué)學(xué)報(工學(xué)板),,2014(09):1570-1579.
[6] 張猛,,房俊龍.基于ZigBee和Internet的溫室群環(huán)境遠程監(jiān)控系統(tǒng)設(shè)計[J].農(nóng)業(yè)工程學(xué)報,,2013(S1):171-176.
[7] 肖振鋒,袁蓉湘,,鄧翔天.基于MSP430F169的遠程智能故障檢測器[J].電力自動化設(shè)備,,2013(01):160-164.
[8] 李鵬,黃新波,,趙隆.智能輸電線路狀態(tài)監(jiān)測代理的研究與設(shè)計[J].中國電機工程學(xué)報,,2013(16):153-161.
[9] 李傳偉,常關(guān)羽,,于振興.基于無線傳感網(wǎng)絡(luò)的石油鉆機設(shè)備遠程監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[J].西北工業(yè)大學(xué)學(xué)報,,2013(02).
[10] 王林軍,許立曉,,邵磊.碟式太陽能自動跟蹤系統(tǒng)傳動機構(gòu)的誤差分析[J].農(nóng)業(yè)工程學(xué)報,,2014(18):63-39.
[11] 劉琨,鄒琴梅,,胡玉超.塔式太陽能熱發(fā)電自主式定日鏡系統(tǒng)設(shè)計[J].北京工業(yè)大學(xué)學(xué)報,,2014(07):1073-1078.
[12] 邸斌,宋宏明.一種新型太陽能跟蹤系統(tǒng)的研究[J].哈爾濱理工大學(xué)學(xué)報,2012(02):67-71.