鄭洪慶,程 蔚
(閩南理工學(xué)院,工業(yè)自動化控制技術(shù)與信息處理福建省高校重點(diǎn)實(shí)驗(yàn)室,福建 石獅362700)
隨著經(jīng)濟(jì)的高速發(fā)展,造就了我國許多大型公共場所例如地下室、停車場等。出于對安全考慮,一般采取全天候照明模式。然而以這樣的方式工作,在一定程度上造成了能源方面的極度浪費(fèi)。降低照明用電是節(jié)約能源的重要途徑[1]。
目前大部分地下車庫的照明都是使用人工非自動化控制。這種控制方式不僅會給人們的生活帶來不便,而且還會在一定程度上造成能源的損耗,尤其是在地下車庫等公共場所。現(xiàn)研究一種基于微波感應(yīng)的地下車庫節(jié)能照明系統(tǒng)。通過控制系統(tǒng)對信號的一系列處理,從而實(shí)現(xiàn)對LED燈進(jìn)行準(zhǔn)確和及時的亮度控制[2-3]。
本系統(tǒng)應(yīng)用在地下車庫,由微波感應(yīng)電路、單片機(jī)、光強(qiáng)感應(yīng)電路、電源模塊、顯示模塊、調(diào)試接口及LED驅(qū)動電路構(gòu)成。系統(tǒng)方案如圖1所示。
圖1 系統(tǒng)總體設(shè)計(jì)方案圖
光強(qiáng)度傳感器置放于車庫入口處,并在車庫入口安裝微波感應(yīng)傳感器,以啟動該傳感器檢測外部光照強(qiáng)度。其余位置微波傳感器與LED一起放置,當(dāng)檢測到相應(yīng)的物體移動時,啟動相應(yīng)位置的LED燈。地下車庫模擬示意圖如圖2所示。
系統(tǒng)以IAP15F2K61S2單片機(jī)作為核心控制處理器,主要由核心控制模塊、電源管理模塊、微波感應(yīng)模塊、光強(qiáng)感應(yīng)模塊、顯示模塊、調(diào)試模塊以及LED驅(qū)動模塊等組成。
微波傳感器為多普勒效應(yīng)自動感應(yīng)技術(shù)傳感器,采用平面天線發(fā)射及接收回波。該傳感器探測回波內(nèi)微小的移動,觸發(fā)微處理器,執(zhí)行指令。傳感器抗干擾能力強(qiáng),幾乎不受風(fēng)、熱等外界環(huán)境因素的干擾??梢酝高^門、玻璃板及薄的墻壁探測到人或物體移動,探測效果好[4]。傳感器探測范圍內(nèi)物體移動,并以電壓形式輸出,經(jīng)由LM324集成運(yùn)放放大后,再由電壓比較器比較輸出。微波傳感器處理電路圖如圖3所示。
圖3 微波傳感器處理電路圖
光強(qiáng)度傳感器(BH1750)模塊是一種數(shù)字型光強(qiáng)度傳感器,采用雙線串行總線接口(IIC)。光強(qiáng)度傳感器的分辨率高,可以探測較大范圍(1-65535)的光強(qiáng)度變化。該傳感器擁有接近視覺靈敏度的光譜靈敏度特性(峰值靈敏度波長典型值為560 nm),無需其他部件,通過50 Hz/60 Hz除光噪音功能實(shí)現(xiàn)穩(wěn)定的測定輸出對應(yīng)亮度的數(shù)字值[5]。數(shù)字光強(qiáng)度傳感器處理電路圖如圖4所示。
圖4 數(shù)字光強(qiáng)度傳感器電路圖
如果將LED燈直接接入電路進(jìn)行脈寬調(diào)制,在高速的PWM頻率下,容易產(chǎn)生頻閃現(xiàn)象,因此驅(qū)動LED燈需要恒流恒壓條件,才不會在控制亮度的同時產(chǎn)生閃爍現(xiàn)象[6]。驅(qū)動電路中直流電壓經(jīng)無頻閃電路二次穩(wěn)壓,供給LED燈珠,通過PWM信號控制最終輸出穩(wěn)定的直流電壓供給燈珠,以保證其穩(wěn)定正常工作。LED驅(qū)動電路如圖5所示。
圖5 LED驅(qū)動電路
為了更好地監(jiān)測系統(tǒng)運(yùn)行狀態(tài),以便對系統(tǒng)運(yùn)行進(jìn)行判別與監(jiān)測,設(shè)計(jì)時引入1602液晶以便于顯示。LCD1602以其精簡易用,驅(qū)動簡單,能夠在器件上以兩行每行十六個字符的形式顯示出所有包括英文字母以及數(shù)字在內(nèi)的信息,方便對系統(tǒng)進(jìn)行監(jiān)測。LCD1602液晶顯示電路如圖6所示。
圖61602 液晶顯示驅(qū)動電路
主控模塊實(shí)物圖如圖7所示。
圖7 主控模塊實(shí)物圖
采用結(jié)構(gòu)化思想,將程序模塊化進(jìn)行編程,以便于后續(xù)維護(hù)和調(diào)試。主程序流程圖如圖8所示。系統(tǒng)程序主要包括主程序入口、各模塊初始化程序、中斷程序、脈寬調(diào)制程序等。
圖8 主程序設(shè)計(jì)流程圖
微波傳感器硬件電路與微控制器接口以中斷方式實(shí)現(xiàn),在其正常模式下,該引腳輸出并保持高電平直至物體移動引起傳感器產(chǎn)生外部中斷,出現(xiàn)下降沿時,向微控制器發(fā)出中斷請求。外部中斷0的優(yōu)先級默認(rèn)為系統(tǒng)最高級,當(dāng)微控制器響應(yīng)中斷后,CPU當(dāng)即放下手頭上正在執(zhí)行的其他程序(除中斷子程序之外),轉(zhuǎn)而進(jìn)入外部中斷0的中斷服務(wù)程序中去。在外部中斷0中斷服務(wù)子程序中,先令其向液晶寫入新的工作狀態(tài)提示符,并啟動數(shù)字光強(qiáng)度傳感器采集數(shù)據(jù)。相應(yīng)外部中斷服務(wù)程序如下:
void MicroWaveInterrupt()interrupt 0//微波中斷函數(shù)
{
uint8 count,Buf[N],Tip[16]={"Mode :Working"};
w_string(0x80,Tip);//更改液晶顯示的工作狀態(tài)
for(count=0;count<N;count++)
Buf[count]=ReadSensorValue();
CountDutyFactor(filter_valve(Buf));//計(jì)算占空比【實(shí)參為傳感器數(shù)值】
}
IAP15F2K61S2單片機(jī)未集成硬件IIC通信接口,本文采用普通I/O口模擬IIC通信時序,進(jìn)行數(shù)據(jù)讀寫。BH1750FVI通信時序圖如圖9所示。
圖9 BH1750FVI通信時序圖
讀取光強(qiáng)度傳感器的數(shù)據(jù)程序如下:
uint16 ReadSensorValue()
{
intdis_data;//變量
float SensValue;
Single_Write_BH1750(0x01); //power on
Single_Write_BH1750(0x10); //H-resolution mode
delay_nms(180);//延時 180ms
Multiple_Read_BH1750();//連續(xù)讀出數(shù)據(jù),存儲在BUF中
dis_data=BUF[0];
dis_data=( dis_data << 8)+BUF[1];//合成數(shù)據(jù)
SensValue=(float)dis_data/1.2;
conversion(SensValue);//計(jì)算數(shù)據(jù)和顯示
w_string(0xC0,word);
return SensValue;
}
本文采用增量式PID控制算法,其簡化示意圖如圖10所示。
圖10 增量式PID控制算法簡化示意圖
在PWM驅(qū)動LED應(yīng)用中,根據(jù)原先的PWM脈沖寬度值,求出當(dāng)前的誤差增量,經(jīng)過計(jì)算后,可以得出當(dāng)前PWM脈寬,以動態(tài)調(diào)節(jié)PWM,使LED亮度穩(wěn)定[7]。根據(jù)PID算數(shù)特性,定義以下結(jié)構(gòu)體:
typedef struct PID{//結(jié)構(gòu)體定義
int SetPoint//設(shè)定值
int Proportion;//Proportion比例系數(shù)
int Integral;//Integral積分系數(shù)
int Derivative;//Derivative 微分系數(shù)
int LastError;//Error[-1]前一拍誤差
int PreError;//Error[-2]前兩拍誤差
}PID;
增量PID算法函數(shù)如下:
/*PID算法函數(shù),返回誤差增量*/
unsigned int PIDcal(PID*pp,int thisError)
{
unsigned int pError,dError,iError;
unsigned int templ;
pError=thisError-pp->lasterror;
iError=thisError;
dError=thisError-2*(pp->lasterror)+pp->preerror;
/*增量計(jì)算*/
templ=pp->proportion*pError+pp->integral*iError+pp->derivative*dError;
pp->preerror=pp->lasterror; /* 存放誤差用于下次運(yùn)算*/
pp->lasterror=thisError;
return((int)(templ>>8));
}
設(shè)定PWM頻率為10 kHz.定時器初始化時設(shè)置TMOD寄存器,使其定時器1工作于16位定時器功能狀態(tài),并且開啟定時器中斷和全局中斷。當(dāng)外部產(chǎn)生中斷信號時,CPU響應(yīng)中斷并載入初值,之后調(diào)用PWM算法程序,對LED亮度進(jìn)行調(diào)控,程序如下:
void Timer1_Init(void)/*PWM使用定時器1*/
{
TMOD=0x10;
ET1=1;
TR1=1;
TL1=(uint8)(( 65535-SYS_MCLK/Freq)+18);
TH1=(uint8)(((65535-SYS_MCLK/Freq)+18)>> 8);
}
void Timer1_ISR()interrupt 3/*中斷服務(wù)子程序*/
{
TL1= (uint8)((65535-SYS_MCLK/Freq)+18);//載入定時初值
TH1= (uint8)(((65535-SYS_MCLK/Freq)+18)>> 8); //載入定時初值
LightModulation( TimeScale);
//光線調(diào)制
}
本系統(tǒng)設(shè)計(jì)了以微波感應(yīng)為基礎(chǔ)的地下車庫節(jié)能照明系統(tǒng),該系統(tǒng)采用STC公司的IAP15F2K61S2作為整個系統(tǒng)的核心控制模塊,配合以微波傳感器與光強(qiáng)度傳感器對LED燈進(jìn)行脈沖寬度調(diào)制,使其發(fā)出不同等級的光亮,適合于地下車庫等公共場所使用。LED燈可以在微波傳感器的干預(yù)下,從其靜態(tài)時保持百分之十的亮度轉(zhuǎn)變?yōu)榕c外界光亮強(qiáng)度相關(guān)的不同等級層次的亮度級別。此外,本文設(shè)計(jì)的有物體移動與無物體移動所對應(yīng)的兩個LED燈亮度是固定,下一步考慮采用無線通信控制方式,并設(shè)計(jì)一個上位機(jī),由值班室人員根據(jù)實(shí)際情況設(shè)定LED燈亮度值。