<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于PIC的太陽能與市電互補照明系統(tǒng)控制器

          基于PIC的太陽能與市電互補照明系統(tǒng)控制器

          作者: 時間:2010-06-23 來源:網(wǎng)絡(luò) 收藏

          利用太陽能照明是人類開發(fā)利用太陽能的一個主要用途,然而,由于太陽能輻射的不連續(xù)性和間歇性,以及目前單純太陽能照明系統(tǒng)的投資和成本較高、部分技術(shù)不夠成熟等原因,太陽能照明系統(tǒng)經(jīng)常出現(xiàn)在連續(xù)陰雨天時,由于蓄電池電壓不足而導(dǎo)致負載不能點亮的情況。將太陽能與市電組成雙電源互補供電照明系統(tǒng),不僅可以有效解決太陽能利用不穩(wěn)定的問題,還可以適當(dāng)減小太陽能電池和蓄電池的容量,降低開發(fā)利用太陽能技術(shù)的成本,同時滿足系統(tǒng)的可靠性和經(jīng)濟性要求[1-2]。

          1 控制器的主要功能及組成

           本文所設(shè)計的控制器供街道和住宅小區(qū)夜間利用太陽能和市電系統(tǒng)使用,根據(jù)照明實際狀況,設(shè)計控制器具有如下功能:

           (1)支持12 V直流系統(tǒng)工作電壓;
           (2)支持最大至4 A的充放電電流;
           (3)支持直流、脈沖兩種充電方式;
           (4)具有深夜使半導(dǎo)體照明燈具亮度減半的功能;
           (5)蓄電池電量不足時,自動切換到市電電源供電;
           (6)能檢測太陽能電池的電壓,自動轉(zhuǎn)換工作模式;
           (7)能檢測蓄電池的電壓,對蓄電池的充、放電過程進行控制;
           (8) 具有防反充電保護、過充電保護、過放電保護和負載短路保護功能;
           (9)具有電子時鐘和計時功能。

           圖1所示為以為核心的控制器外圍電路示意圖[3]。主要由PIC單片機(內(nèi)部含A/D)、時鐘電路、電壓采樣電路、開關(guān)驅(qū)動電路、時鐘控制和數(shù)碼管顯示電路組成。單片機是控制器的核心,外圍電路包括開關(guān)(C1~C3)、數(shù)碼管顯示及驅(qū)動(A~G/Dig_EN1~Dig_EN6)電路、工作狀態(tài)顯示等。

          基于PIC的太陽能與市電互補照明系統(tǒng)控制器

          2 主要電路設(shè)計及器件選型

          2.1

          單片機是控制器的核心,系統(tǒng)工作時需要采集太陽能電池和蓄電池的電壓。太陽能電池的輸出電壓受溫度和太陽輻射強度等外界因素影響較大,這就要求系統(tǒng)的實時性比較高,即要求系統(tǒng)的響應(yīng)速度快。故設(shè)計中選用了內(nèi)部含有A/D模塊、具有14位指令寬度的中檔PIC單片機16F877A,屬PIC中級產(chǎn)品,在保持低價格的前提下具有很高的性能。

           本文設(shè)計的控制器主要用到PIC16F877A的如下一些資源:

          (1)16 KB的系統(tǒng)內(nèi)可編程Flash,1 KB片內(nèi)SRAM,10 000次擦寫壽命。程序存儲空間足夠大,不需要額外擴展存儲器;10 000次的擦寫壽命方便進行程序調(diào)試;
           (2) 2個具有獨立預(yù)分頻器和比較器功能的8位定時器/計數(shù)器。用于按鍵去抖和計時;
           (3) 1個具有預(yù)分頻器、比較功能和捕捉功能的16位定時器/計數(shù)器。用作調(diào)節(jié)PWM控制信號的占空比,控制充電開關(guān);
           (4) 8路10位ADC。使用其中的2路ADC通道分別對太陽能電池工作電壓、蓄電池工作電壓采樣;
           (5) 使用2個中斷源,外部中斷和定時器中斷,分別用于計時和按鍵;
           (6) 可編程I/O口。部分I/O口使用其第二功能,其他用于控制器系統(tǒng)功能擴展。

          2.2 電壓采樣電路

           控制器需要采集2路電壓信號,分別是太陽能電池輸出電壓和蓄電池端電壓,這兩路信號均為變化的直流模擬信號,采樣信號應(yīng)能如實地反映檢測量。設(shè)計中利用精度為0.1%的精密電阻組成簡單的分壓電阻網(wǎng)絡(luò)來實現(xiàn),并在分壓電阻網(wǎng)絡(luò)的輸出端并聯(lián)漏電流很小的精密電容和電感進行 濾波,以減小電流泄漏對測量精度的影響[4]。采樣電路如圖2所示。

          基于PIC的太陽能與市電互補照明系統(tǒng)控制器

          2.3 控制開關(guān)驅(qū)動電路

          控制器的主要控制對象是3個控制開關(guān)C1~C3。分別是蓄電池的充電開關(guān)、蓄電池放電(供電)開關(guān)和市電供電開關(guān)。開關(guān)的狀態(tài)由單片機根據(jù)系統(tǒng)的工作狀態(tài)進行控制:白天太陽能電池向蓄電池充電,開關(guān)C1閉合,太陽能電池將太陽能轉(zhuǎn)換為電能,儲存在蓄電池中,當(dāng)蓄電池電壓出現(xiàn)過充時,控制器斷開充電開關(guān)C1;晚上主要由蓄電池向負載供電,開關(guān)C2閉合,當(dāng)蓄電池電壓不足(欠壓)時,蓄電池供電開關(guān)C2斷開,控制器自動切換為市電給負載供電(C3閉合)。圖3、圖4和圖5分別為蓄電池充電、放電和市電供電時開關(guān)的驅(qū)動電路。

          基于PIC的太陽能與市電互補照明系統(tǒng)控制器

          基于PIC的太陽能與市電互補照明系統(tǒng)控制器

          基于PIC的太陽能與市電互補照明系統(tǒng)控制器

           在充電中,用肖特基二極管來實現(xiàn)防蓄電池反充電保護,防止晚上蓄電池向太陽能電池反充電。同時設(shè)計了防止蓄電池過充的保護電路,為了控制蓄電池的充電方式,充電控制信號為單片機輸出的PWM信號。蓄電池放電(供電)開關(guān)的控制信號由單片機輸出的高低電平直接控制,實現(xiàn)了深夜半功率供電功能。市電供電開關(guān)電路中使用繼電器[5]。

          3 控制器

          本文對所設(shè)計的系統(tǒng)控制器的功能進行了初步測試,部分測試結(jié)果如下。

          (1)指示燈測試系統(tǒng)工作狀態(tài)

           蓄電池脈沖充電情況測試。當(dāng)TVcc>0.7 V時,天亮;此時12 VVcc15 V,蓄電池脈沖充電,脈沖充電指示燈DS2點亮。如圖6所示。

          基于PIC的太陽能與市電互補照明系統(tǒng)控制器

          (2)示波器測試蓄電池充電波形

          用示波器檢測充電開關(guān)Q2的柵電壓,檢測蓄電池的充電情況。蓄電池脈沖充電情況下的輸出波形為脈沖波形。

           另外,還分別對控制器供電控制功能、充電和供電方式轉(zhuǎn)換功能以及控制器工作時整個系統(tǒng)的性能進行了測試和分析,測試結(jié)果表明系統(tǒng)控制器可以很好地完成各項功能,并且運行良好。

           本文所設(shè)計的基于PIC16F877A的系統(tǒng)控制器,充分利用單片機的內(nèi)部資源,具有結(jié)構(gòu)簡單、功耗低等特點。經(jīng)調(diào)試實驗證明,控制器各項功能完成良好,具有較高的實用價值和良好的應(yīng)用前景,對太陽能LED照明系統(tǒng)的推廣應(yīng)用具有參考意義。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();