LED驅(qū)動(dòng)器主程序設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1 主程序設(shè)計(jì)
圖5為主程序流程圖。主程序的作用是選擇是否改變PWM頻率及照度上限、無(wú)人模式和有人調(diào)光模式。恒照度算法在定時(shí)中斷處理程序中實(shí)現(xiàn)。
2 調(diào)光算法設(shè)計(jì)
調(diào)光算法主要實(shí)現(xiàn)光照度信號(hào)的采集、數(shù)據(jù)處理運(yùn)算并通過(guò)相應(yīng)的算法實(shí)現(xiàn)實(shí)時(shí)跟蹤補(bǔ)償照度,從而實(shí)現(xiàn)平滑調(diào)光。TSL2561光照度傳感器數(shù)字輸出符合I2C總線標(biāo)準(zhǔn)協(xié)議,實(shí)現(xiàn)光照度采集必須實(shí)現(xiàn)TSL2561通信。I2C總線標(biāo)準(zhǔn)協(xié)議的讀寫方法主要有硬件實(shí)現(xiàn)和軟件模擬,由于PIC16F690控制器沒有自帶的I2C總線接口,故本文采用軟件模擬實(shí)現(xiàn)的方法。
采集進(jìn)來(lái)的數(shù)據(jù)經(jīng)過(guò)TSL2561標(biāo)準(zhǔn)規(guī)定的數(shù)據(jù)計(jì)算后獲得光照度,將采集進(jìn)來(lái)的室內(nèi)光照度與設(shè)定的標(biāo)準(zhǔn)值比較,計(jì)算出LED需要補(bǔ)償?shù)恼斩戎?,并轉(zhuǎn)化為處理器內(nèi)PWM寄存器的值,記為當(dāng)前PWM值。將前PWM寄存器值記為PWM原值。將PWM原值與當(dāng)前PWM值不斷比較遞增或遞減,使PWM輸出以極小的步長(zhǎng)跟蹤當(dāng)前PWM值,從而實(shí)現(xiàn)平滑調(diào)光。此算法還能解決啟動(dòng)跳變問(wèn)題,使系統(tǒng)啟動(dòng)時(shí)PWM由零慢慢變化到當(dāng)前PWM值。調(diào)光算法程序流程圖如圖6所示。
3 運(yùn)動(dòng)控制和按鍵輸入程序設(shè)計(jì)
運(yùn)動(dòng)控制采用紅外熱電釋人體運(yùn)動(dòng)傳感器,能夠檢測(cè)室內(nèi)是否有人,通過(guò)判斷人體的活動(dòng)情況選擇相應(yīng)的照明模式。若有人則選擇調(diào)光模式,若無(wú)人則關(guān)閉LED燈,進(jìn)一步節(jié)能。
按鍵輸入主要有模式切換鍵及增減鍵,模式切換鍵主要用于切換改變頻率或者改變光照度的最大設(shè)定值??紤]到單片機(jī)的硬件資源和合理的調(diào)光需求,時(shí)鐘預(yù)分頻比設(shè)定為4,頻率變化范圍為10~100 kHz,光照度最大設(shè)定值根據(jù)多次測(cè)量各時(shí)間段的光照度選取合適的調(diào)節(jié)范圍,故光照度最大設(shè)定值范圍為350~500。