任 剛,任美臣
(1.淮南師范學(xué)院 電子工程學(xué)院,安徽 淮南 232001;2.上海海洋大學(xué) 信息學(xué)院,上海 201306)
路燈作為人們生活中必不可少的基礎(chǔ)設(shè)施,直接反映一個(gè)地方的經(jīng)濟(jì)水平.我國(guó)目前城鎮(zhèn)化不斷發(fā)展,路燈的使用數(shù)量也在與日俱增.2006—2017年,我國(guó)路燈數(shù)量從1 283.8萬(wàn)增加到2 683.4萬(wàn),年均增長(zhǎng)率為6.75%,在電能消耗方面非常巨大[1-2].我國(guó)部分地區(qū)路燈管理方面還存在很多問(wèn)題:
1)控制系統(tǒng)落后.由于技術(shù)方面的原因,有些地區(qū)路燈還是靠工作人員手動(dòng)控制,而且存在“一亮全亮,一滅全滅”的現(xiàn)象.這種落后的路燈控制,精確度不高,既不能充分發(fā)揮路燈的照明功能,也造成了不必要的電能浪費(fèi).
2)智能化落后.采用原始的電子定時(shí)裝置控制路燈開(kāi)關(guān),用戶選擇性不大,操作復(fù)雜,可靠性差,不能自動(dòng)檢測(cè)故障,不利于單個(gè)路燈控制,存在電能消耗問(wèn)題.
3)光控系統(tǒng)主要是采用光敏電阻與光電三極管組成的電子線路,對(duì)路燈進(jìn)行控制.這種控制不能調(diào)整路燈亮度,而且調(diào)整智能化不夠.
總之,傳統(tǒng)路燈在路燈工作狀態(tài)反饋方面存在滯后,路燈管控中心無(wú)法實(shí)時(shí)獲取能耗、亮度等信息.如果路燈出現(xiàn)短路或者斷路等故障,維修人員也不能及時(shí)檢修,所以非智能化的路燈照明系統(tǒng)無(wú)法滿足人們對(duì)路燈照明的需求.
隨著我國(guó)工業(yè)經(jīng)濟(jì)不斷發(fā)展,城鎮(zhèn)規(guī)模逐漸增大,人們對(duì)路燈照明系統(tǒng)的需求日益迫切,要求其功能更加多樣化,傳統(tǒng)電路控制的路燈系統(tǒng)耗電量大、維修效率低下、智能化差的問(wèn)題逐漸突顯出來(lái).
基于51單片機(jī)的開(kāi)發(fā)環(huán)境Keil μVision4軟件,具有Windows開(kāi)發(fā)界面,而且支持C語(yǔ)言編程.可以編寫(xiě)模塊化程序,便于調(diào)試,可以處理單片機(jī)傳感器的各種數(shù)據(jù)類型,例如光線強(qiáng)度、溫度和壓力等,將這些數(shù)據(jù)轉(zhuǎn)換成電信號(hào),然后進(jìn)行數(shù)字化處理,從而直接對(duì)硬件進(jìn)行操作,編輯效率高,可移植性強(qiáng),便于使用者在不同工作環(huán)境中開(kāi)發(fā)使用[3-4].
因?yàn)?1單片機(jī)的指令系統(tǒng)、內(nèi)部結(jié)構(gòu)相對(duì)簡(jiǎn)單,所以可以借助C語(yǔ)言程序設(shè)計(jì)實(shí)現(xiàn)很多實(shí)用功能.為了利于節(jié)能路燈程序適合國(guó)內(nèi)使用,在單片機(jī)系統(tǒng)中增加了中文字符輸入和輸出功能,字庫(kù)號(hào)選擇高度為16點(diǎn)陣,寬度為8點(diǎn)陣.單片機(jī)系統(tǒng)分成兩部分:一是用戶控制界面(UI)部分;二是硬件執(zhí)行部分.具體組成見(jiàn)表1.
表1 單片機(jī)模塊組成及作用
用于路燈控制的單片機(jī)的硬件框架見(jiàn)圖1.
圖1 單片機(jī)系統(tǒng)硬件框架
單片機(jī)軟件控制模塊主要包括鍵盤驅(qū)動(dòng)、液晶顯示屏驅(qū)動(dòng)、通信模塊驅(qū)動(dòng)、中文界面設(shè)計(jì)等.為了在單片機(jī)上實(shí)現(xiàn)中文輸入,選擇了漢字的Unicode編碼.用戶輸入拼音字符,系統(tǒng)顯示同音字供選擇,然后在字庫(kù)中查詢點(diǎn)陣信息并在LCD上顯示.其C語(yǔ)言代碼為:
Struct Character{
char unicode[2];//中文字符的Unicode編碼
int PositionX;
int PositionY;//獲取字符的(x,y)坐標(biāo)位置
};
struct Character *pCharactor;//指向結(jié)構(gòu)數(shù)組的指針
圖2為單片機(jī)中文字符輸出流程.
圖2 單片機(jī)系統(tǒng)中文字符輸出流程
由于路燈控制系統(tǒng)程序比較復(fù)雜,將程序按照模塊化進(jìn)行處理.整個(gè)系統(tǒng)包括主模塊、重置模塊、光強(qiáng)檢測(cè)模塊、時(shí)間調(diào)控模塊、鍵盤顯示模塊和自動(dòng)糾錯(cuò)模塊.C語(yǔ)言編寫(xiě)程序模塊較為緊湊,而且與單片機(jī)的硬件系統(tǒng)沒(méi)有太大關(guān)系,可以在不同單片機(jī)快速移植.表2是單片機(jī)主要模塊及功能.
表2 控制系統(tǒng)模塊組成及作用
單片機(jī)首先加電復(fù)位,對(duì)系統(tǒng)采取初始化處理,同時(shí)打開(kāi)傳感器接口、顯示屏和定時(shí)器,實(shí)現(xiàn)模擬數(shù)值和數(shù)字信號(hào)的AD轉(zhuǎn)換.采用光線檢測(cè)模塊采集路燈所處環(huán)境的亮度,時(shí)間控制模塊提供亮燈的夜間時(shí)間控制.
如果路燈電源系統(tǒng)處于關(guān)閉狀態(tài),則調(diào)用電源控制模塊接通電源.如果電源已經(jīng)接通,則判斷當(dāng)時(shí)環(huán)境亮度是否過(guò)暗,然后調(diào)整路燈亮度.接著根據(jù)系統(tǒng)時(shí)間模塊,判斷路燈的工作時(shí)間段是否滿足夜間條件.如果不滿足,判斷是否有人工手動(dòng)控制,如果有手動(dòng)模式,則進(jìn)入鍵盤掃描階段,等候鍵盤指令進(jìn)行外部路燈亮度的控制.圖3是路燈節(jié)能軟件設(shè)計(jì)的整體流程.
圖3 路燈節(jié)能軟件整體流程
定時(shí)模塊實(shí)現(xiàn)的功能是路燈開(kāi)啟和熄滅時(shí)間由用戶做出選擇,而且可以重復(fù)輸入.程序利用了C語(yǔ)言的scanf函數(shù),時(shí)間采用int數(shù)據(jù)類型[5-6].主要代碼如下:
#include
#include
int main( )
{
int hour,minute,second,times;//定義整型數(shù)據(jù)
hour=0,minute=0,second=0;//數(shù)據(jù)賦初值
printf(“請(qǐng)輸入關(guān)閉路燈時(shí)間(小時(shí)): ” );//提示用戶輸入x小時(shí)
scanf(“%d”,&hour);//輸入小時(shí)
printf(“請(qǐng)輸入關(guān)閉路燈時(shí)間(分鐘): ”);//提示用戶輸入x分鐘
scanf(“%d”,&minute);//輸入x分鐘
printf(“請(qǐng)輸入關(guān)閉路燈時(shí)間(秒): ”);//提示用戶輸入x秒
scanf(“%d”,&second);//輸入x秒
times=hour*3600+minute*60+second;//時(shí)間轉(zhuǎn)換成秒為單位
char strTime[20];
itoa(times,strTime,10);//整型變量轉(zhuǎn)成字符串
char strCommands[30]=“shutdown -s -t”;//關(guān)閉路燈時(shí)間
strcat(strCommands,strTime);//將關(guān)閉路燈時(shí)間與系統(tǒng)設(shè)定時(shí)間關(guān)聯(lián)
printf(“路燈將在%d小時(shí)%d分鐘%d秒后關(guān)閉! ”,hour,minute,second);//顯示關(guān)燈剩余時(shí)間
system(strCommands);
return 0;
}
為了便于用戶操控和選擇,可以將代碼編寫(xiě)到一個(gè)函數(shù)的函數(shù)體里面,用戶只需進(jìn)行數(shù)字選擇0,1,2,3就可以進(jìn)入關(guān)閉路燈、取消關(guān)閉、設(shè)置程序和退出程序的響應(yīng)操作.主要代碼如下:
void PrintUI
{
int choose=0;
printf(“--------------------------- ”);
printf(“歡迎使用路燈節(jié)能定時(shí)系統(tǒng)! 0 表示關(guān)閉路燈 1 表示取消關(guān)閉 2 表示進(jìn)入設(shè)置程序 3 表示退出設(shè)置程序 ”);
printf(“--------------------------- ”);
printf(“請(qǐng)輸入您的選擇”);
scanf(“%d”,&choose);
switch(choose)
{
case choose=0:
system(“shutdown -s -t 100”);
case choose=1:
system(“shutdown -a”);
case choose=2:
system(“start -a”);
case choose=3:
system(“pause -a”);
default:printf("error ");
break;
}
在光控模塊中,路燈環(huán)境光線強(qiáng)度的采集和信號(hào)轉(zhuǎn)化是十分重要的.光線檢測(cè)模塊使用的是光電池傳感器,可以將光強(qiáng)度通過(guò)光伏效應(yīng)轉(zhuǎn)化為電流信號(hào),輸出的光電流信號(hào)大小與光強(qiáng)度成正比關(guān)系[7-8].因此,單片機(jī)采集的電流信號(hào)與光線的強(qiáng)弱一一對(duì)應(yīng).由R2332模塊向單片機(jī)AD轉(zhuǎn)換口輸入低于5 V的電壓,然后轉(zhuǎn)換成0~255的十進(jìn)制數(shù)值,用于表征環(huán)境光線的強(qiáng)弱,并送到顯示屏顯示.為了更準(zhǔn)確地探測(cè)光強(qiáng)度,選擇單片機(jī)的8個(gè)端口均為光電流,并由程序確定其最快速的通道.主要程序代碼如下:
void ADconvert()//調(diào)用內(nèi)存信息,將模擬電流信號(hào)轉(zhuǎn)換成數(shù)值信號(hào)
{
uchar m,n;// m,n無(wú)符號(hào),數(shù)值范圍為0~255
ADC-CONTR=0xe0;//選擇最快光電轉(zhuǎn)換,并打開(kāi)電源
-nop-();//延遲等待
for(n=0;j<8;j++)//八個(gè)通道信號(hào)循環(huán)掃描
{
tempAD=0;//賦初值
for(m=0;n<10;n++)//采集10次
{ ADC-CONTR=0xe8+j;//啟動(dòng)轉(zhuǎn)換器
-nop-();//延遲等待
while(!ADC-CONTR&0x10);//判斷光電轉(zhuǎn)換是否完成
temph=ADC-RES;
temp1[m]=temph;//讀取光電轉(zhuǎn)換信息
tempAD=temp1[m]+tempAD;
delays(10);//進(jìn)程等待10 ms
tempAD=tempAD/10;
ADRES=tempAD;//采集8路信號(hào)裝入ADRES中
return 0;
}
}
}
為了便于理解上述程序設(shè)計(jì),用圖4表示單片機(jī)對(duì)光電流采集的AD轉(zhuǎn)換過(guò)程.
圖4 光電流采集轉(zhuǎn)換流程
獲取了光電流信號(hào)后,可以設(shè)置輸出控制程序,通過(guò)單片機(jī)控制系統(tǒng)輸出穩(wěn)定的電流,使其根據(jù)環(huán)境亮度調(diào)整路燈的工作電流,從而達(dá)到節(jié)能的目的.在程序中,如果外部亮度大于160,將降低路燈工作電流60.反之,則增加工作電流60.主要程序代碼如下:
void extern_adjust( )//外部調(diào)節(jié)程序
{
int ADRES,current;
if(ADRES<255&& ADRES>160)//如果亮度在160與255之間,環(huán)境亮度偏高
{
current= ADRES-60;//減小路燈工作電流
}
else if(ADRES>0&& ADRES<160)//如果亮度在0與160之間,環(huán)境偏暗
{
current= ADRES-60;//增加路燈工作電流
}
return 0;
}
在物聯(lián)網(wǎng)時(shí)代,可以通過(guò)網(wǎng)絡(luò)對(duì)路燈遙控管理,節(jié)省人力和電力資源.要實(shí)現(xiàn)此功能,需在51單片機(jī)中增加串口Wi-Fi模塊,將路燈光線傳感器數(shù)據(jù)進(jìn)行網(wǎng)絡(luò)傳輸,通過(guò)TCP/IP協(xié)議和IEEE 802.11協(xié)議,傳到用戶終端.終端設(shè)備可以借助其獲取信息,對(duì)路燈進(jìn)行遠(yuǎn)程控制和數(shù)據(jù)交互,從而實(shí)現(xiàn)智能化和信息化管理.
ESP8226串口無(wú)線模塊采用UART接口,體積小、功耗低,適合多種網(wǎng)絡(luò)協(xié)議,其端口連接見(jiàn)表3.
表3 Wi-Fi模塊端口與單片機(jī)連接
無(wú)線路燈系統(tǒng)的主體結(jié)構(gòu)包括51單片機(jī)系統(tǒng)、電源接口、Wi-Fi模塊、光線傳感器模塊以及A/D采集轉(zhuǎn)換模塊.系統(tǒng)框圖見(jiàn)圖5.
圖5 無(wú)線路燈系統(tǒng)框架
將路燈連接到互聯(lián)網(wǎng)上,實(shí)現(xiàn)聯(lián)網(wǎng)功能,利用手機(jī)或電腦終端對(duì)其控制.終端接收程序用C語(yǔ)言進(jìn)行編寫(xiě),圖6為系統(tǒng)運(yùn)行流程.
圖6 Wi-Fi模塊工作流程
本文的路燈節(jié)能程序在時(shí)間控制方面更加精確,而且可以循環(huán)使用,增加了中間手動(dòng)控制模塊.另外,借助于單片機(jī)的光電轉(zhuǎn)換模塊,可以根據(jù)環(huán)境亮度調(diào)整路燈的工作電流.最后,借助于Wi-Fi模塊,實(shí)現(xiàn)路燈管理模塊的聯(lián)網(wǎng)功能.路燈的亮暗變換也可以根據(jù)實(shí)際需求,使用終端設(shè)備程序進(jìn)行操控.
一般小型路燈額定功率在30 W左右,每天按照明10 h計(jì)算,一個(gè)月大約9 kWh.安裝節(jié)能系統(tǒng),精確控制亮燈時(shí)間,根據(jù)環(huán)境亮度自動(dòng)調(diào)整路燈功率,可以節(jié)省電能2 kWh以上.而且,采用Wi-Fi 模塊的設(shè)計(jì)可以節(jié)省大量人力資源,實(shí)時(shí)觀測(cè)和控制路燈的工作狀況.綜合起來(lái),節(jié)省電力可達(dá)20%.
由于傳統(tǒng)路燈的時(shí)間控制、光線控制不足,提出了一種基于Keil μVision4環(huán)境的單片機(jī)控制路燈系統(tǒng).系統(tǒng)的軟件結(jié)構(gòu)是C語(yǔ)言程序,程序設(shè)計(jì)可以由STC-ISP軟件通過(guò)串口RS2332連接單片機(jī),燒錄到單片機(jī)中,進(jìn)行調(diào)試運(yùn)行.借助于單片機(jī)的微處理器和光線傳感器,可以精確控制路燈開(kāi)關(guān)時(shí)間,調(diào)整路燈亮度.另外,通過(guò)通訊模塊實(shí)現(xiàn)路燈管理的智能化和網(wǎng)絡(luò)化.
51單片機(jī)具有強(qiáng)大的拓展功能.后期,將在前期工作的基礎(chǔ)上,通過(guò)增加熱釋電傳感器搜索路燈附近活動(dòng)物體信號(hào),從而控制路燈開(kāi)關(guān).這樣,在夜間無(wú)人活動(dòng)時(shí),路燈可以降低照明亮度或者熄滅,從而更大限度地提升路燈的節(jié)能效果.另外,也可以增加溫度傳感器或圖像傳感器等設(shè)備,實(shí)現(xiàn)路燈故障、異常開(kāi)啟及設(shè)備異常的檢測(cè)和報(bào)警,從而由智能化向智慧化改進(jìn).