曹佳棋 谷 爽 李如鵬
(山西師范大學物理與信息工程學院,山西 臨汾 041004)
無線傳感器網絡(WSN,Wireless Sensor Network)是由傳感器節點構成的,能夠實時感知外界環境并進行信息的采集和處理,進行信息的交互。而且由于其具有成本低、體積小等優點,被廣泛應用于醫療、工業、環境等領域中。然而當傳感器節點分布在廣闊的丘陵地帶、沙漠、建筑制造業地帶時,其電池容量本身是有限的,也無法用物理連線為傳感器節點提供能量[1],因此持續穩定可靠的電源來源是大范圍分布無線傳感器網絡所面臨的一大技術挑戰[2]。基于自然環境中太陽能豐富充足的事實[2],本文提出基于WSN節點能量補給系統,將太陽能轉化成電能儲存至可充電鋰電池中為WSN節點提供能量,延長無線傳感器節點的壽命。
系統總體框圖如圖1 所示。該系統由STM32F103C8T6最小系統所組成的控制電路、太陽能電池板、18650 鋰電池,舵機和光照檢測電路等部分組成。

圖1 系統的總體框圖
太陽能電池板吸收光能后,可通過光生伏特效應把太陽光能直接轉化為電能。同時,考慮到單塊太陽能電池板產生電流較小,所以本設計采用多片電池板并聯的方式,以期達到較好的充電效果。
電池充電儲能模塊一般選擇鋰電池,本設計選用常見的18650鋰電池。考慮到太陽能電池板產生的電流和電壓不穩定無法直接給電池充電,因此選用YXA 50V 470uf電容將太陽能電池板產生的直流電儲存起來,再充入鋰電池。當電容儲存的電壓大于鋰電池電壓時,電容給鋰電池充電。
基于肖特基二極管具有高速低損耗、體積較小等特點,可在太陽能電池板和電容之間、鋰電池和電容之間,分別串聯一個肖特基二極管,防止相互之間的反充。
本系統設計由硬件和軟件部分組成。硬件電路部分的核心是STM32F103C8T6單片機,舵機以及光電傳感器,軟件部分是通過Keil MDK5平臺設計并下載到STM32F103C8T6單片機進行控制。對于STM32F103C8T6的硬件部分則涉及單片機最小系統的制作。一個單片機最小系統通常包括供電電路、晶振電路、IO 輸入輸出電路、下載電路等組成部分[3]。
系統以STM32F103C8T6 最小系統為控制核心,主要模塊是由單片機控制電路,光照檢測電路,舵機驅動電路和電源模塊電路構成。系統總體框圖如圖1所示。
系統以 STM32F103C8T6 作為主控制系統,STM32F103C8T6 是一款基于ARMCortex-M 內核STM32 系列的32位的微處理器,只需要3.3v的電壓即可供電,工作溫度為-40℃~85℃,最大能達到72MHZ的工作頻率,擁有64kB的程序存儲器,具有功耗低、控制方便、接口豐富、易于擴展、成本較低、體積較小、能夠處理較為復雜的系統設計等突出特點[4]。
3.2.1 光電傳感器布局
為了能準確捕獲太陽能光強的最大位置,本系統追蹤模塊采用4 光敏區傳感器布局方式,如圖2 所示。其中①、②、③、④位置處各放置一個forKY-018型光電傳感器,整個電路板放置在一個十字交叉的隔板里,隔板高度和長度根據電路板尺寸和光電傳感器的光敏面積計算確定,可以有效調整傳感器接收光線的入射角度。4 個光敏電阻通過2個擋光板將受光區域分割成4個正方形部分,當太陽光移動時,4個光敏電阻的值就會發生變化。這種4光敏區布局充分考慮了太陽在東、西方向與南、北方向上的運動幅度差異,擴大了傳感器模塊的檢測范圍,提高系統環境適應性,電路設計也比較容易實現。

圖2 四象限光敏電阻分布圖
3.2.2 四象限光敏電阻探測器
光電檢測部分采用四個forKY-018 型光敏電阻傳感器,分布在與太陽能電池板平行平面的四個象限內。①、②、③、④光敏電阻傳感器模塊的AO 引腳分別與STM32F103C8T6的A1、A3、A0、A4 引腳相連,如圖3 所示。每兩個光敏電阻模塊傳感器一組。根據光敏電阻的光電效應,當太陽光斜射至太陽能電池板時,四個光敏電阻的值會發生變化。當光敏電阻傳感器接收到太陽光時,光敏電阻傳感器中的光信號接收器將光信號轉化成模擬電信號,隨后將模擬電信號傳入STM32單片機,通過STM32單片機A/D轉換模塊的4個通道采集光敏電阻傳感器的數值,然后對相鄰的兩個光敏電阻取平均值與另外兩個光敏電阻的平均值進行比較(比如①②和③④比較,①③和②④比較),當數值不相等且平均值的差值超過了舵機靈敏度時,STM32 單片機分別控制兩個舵機水平豎直轉動。當舵機轉動至與太陽光線垂直,四個光敏電阻接收到相同的光照強度,不產生電壓差,舵機不轉動。

圖3 光敏傳感器電路圖
舵機是由電信號的脈沖持續時間決定旋轉角度的一種伺服電機。本系統驅動舵機分為兩部分,一部分為水平方向調整舵機,另一部分為豎直方向調整舵機。控制水平方向的舵機的PWM控制線與STM32CF103C8T6的B7引腳連接,控制垂直方向的舵機的PWM 控制線與STM32CF103C8T6 的B6引腳連接,如圖4所示。當主控器感應到當前光照強度后,控制系統將提供PWM調速方式:控制信號由PWM控制線傳輸進入控制電路板,電機帶動內部齒輪組,減速后傳動至輸出舵盤。舵盤轉動帶動位置反饋電位計,控制板電路將得到電位計輸出的電壓信號,進行反饋,產生一個特定的轉動的方向和速度,驅動電路驅動舵機轉動到靈敏度范圍內停止。

圖4 舵機驅動電路圖
考慮到舵機的承載能力、充電效率和實用性,我們采用兩塊太陽能板并聯的方式(電壓為6V左右),為18650電池供電。太陽能板產生的電先儲存到YXA 50V 470uf 型電容c,然后電容放電給18650電池,為防止電流反充,在太陽能與電容、電容與18650電池之間分別加了二極管①和二極管②;太陽能板、二極管①和電容構成一個閉合回路;電容、二極管②和18650 電池構成一個回路。YXA 50V 470uf 型電容的電壓、太陽能板電壓與18650電池的電壓均分別相差0.5V。如圖5所示。

圖5 電源模塊電路
本系統軟件使用Keil MDK5 開發平臺,采用C 語言設計。主程序流程圖如圖6所示。系統接通電源后,首先對各個模塊進行初始化,當光敏電阻傳感器接收到太陽光時,光敏電阻傳感器中的光信號接收器將光信號轉化成模擬電信號,然后將模擬電信號傳入STM32單片機。AD接口采集數據得到四個光敏電阻傳感器的電壓值并計算水平、垂直方向兩個光敏電阻的電壓的平均值,判斷水平方向兩個光敏電阻平均值的電壓差和豎直方向兩個光敏電阻平均值的電壓差是否在光電傳感器的靈敏度范圍內,若不在范圍內,控制水平、豎直方向的舵機向電壓較小的方向旋轉,直至水平方向的電壓差值調整到靈敏度范圍內,使太陽能板始終與太陽光線垂直[5]。

圖6 主程序算法流程圖
在上述設計方案的基礎上構建了一臺太陽能自動追光模型,太陽能電池板對鋰電池的充電功能在實驗中得到了驗證。實驗結果如圖7所示,18650鋰電池的初始電壓為3.8v,對鋰電池進行放電處理,使其電壓降至3.5v以下,放入電路中進行測試。2021 年4 月17 日,晴天,溫度19℃,濕度38%,本實驗測試了光照強度和電路中的四個節點(包括鋰電池正極電壓、太陽能電池板電壓、電容正極電壓、電池板供給鋰電池的充電電流),數據采集周期為5分鐘,得到7組數據,如圖7。

圖7 實測數據圖
實驗測得太陽能電池板在光照強度最大時獲得最大電壓,太陽能電池板電壓、電容正極電壓和鋰電池正極電壓均差0.5v 左右,滿足肖特基二極管正向導通壓降,且鋰電池在35 分鐘內,由原先的3.224v 提高到3.491v,在穩定的0.1A 左右的充電電流下電壓上升了0.273v,電壓增長了8.37%,為鋰電池補充了能量。
本文設計一個基于WSN節點能量補充的太陽能充電系統,太陽能追蹤系統采用光電編碼檢測電路實現了舵機閉環檢測機制,信號電壓為0時無自轉現象,轉速隨轉矩的增加而勻速下降,減少了能量的消耗,同時實現了WSN節點能量的有效補給,延長了節點的壽命[6]。