侯志斌,何鯤鵬,嚴(yán)豪,吳磊,劉蘭蘭,郭世偉
(1.湖北中煙工業(yè)有限責(zé)任公司,湖北 武漢 430040;2.湖北中煙廣水卷煙廠,湖北 廣水 432721)
隨著人們生活水平的提高,對照明的需求也變得多樣化。不同的生活條件、工作條件、學(xué)習(xí)條件需要的燈光亮度也不同[1]。LED燈被廣泛應(yīng)用于在當(dāng)代社會(huì)中,但其無法根據(jù)用光條件自動(dòng)調(diào)節(jié)光照強(qiáng)度,牛犇等[2]提出一種基于ATmega2560的智能LED控制器,利用紅外遙感技術(shù)實(shí)現(xiàn)感應(yīng)開關(guān)和控制光源光照強(qiáng)度、色溫的功能;陳恩果等[3]提出了一種實(shí)現(xiàn)多通道實(shí)時(shí)動(dòng)態(tài)規(guī)劃的LED智能照明系統(tǒng),用于提高LED作為光源的高效性、舒適性和環(huán)保性。上述文獻(xiàn)對于提高LED的智能化都有很好的效果,但需要改造或替換原有LED燈具,甚至改造建設(shè)環(huán)境。針對LED照明設(shè)備智能化改造過程中,數(shù)量多、難度大、成本高等問題,設(shè)計(jì)了一種基于單片機(jī)的光敏控制照明系統(tǒng)可直接用于替換現(xiàn)有的傳統(tǒng)控制開關(guān),從而達(dá)到自動(dòng)控制LED調(diào)光。
系統(tǒng)的總體設(shè)計(jì)包括硬件系統(tǒng)設(shè)計(jì)與整體程序設(shè)計(jì)。硬件系統(tǒng)主要分為以下三個(gè)模塊:光檢測模塊、主控模塊及LED顯示模塊,硬件系統(tǒng)設(shè)計(jì)原理如圖1所示;整體程序設(shè)計(jì)主要分為以下兩個(gè)程序設(shè)計(jì):亮度采集程序設(shè)計(jì)、分級發(fā)光程序設(shè)計(jì),整體程序設(shè)計(jì)流程圖如圖2所示。
圖1 硬件系統(tǒng)
圖2 整體程序設(shè)計(jì)
光檢測模塊[4]檢測光的亮度,并且將檢測的數(shù)據(jù)由模擬信號轉(zhuǎn)換為數(shù)字信號,然后發(fā)送給主控模塊。在根據(jù)實(shí)際需求設(shè)計(jì)電子應(yīng)用的時(shí)候,常常需要單片機(jī)來計(jì)算和分析數(shù)據(jù)。而一部分?jǐn)?shù)據(jù)單片機(jī)是無法處理的,那就是模擬信號。因此,要使得單片機(jī)能夠處理這樣的數(shù)據(jù),必須要將模擬信號用AD芯片轉(zhuǎn)換為數(shù)字信號,此處用了TSSOP16的封裝,結(jié)合傳感器設(shè)計(jì)原理圖如圖3電路。
圖3 光檢測模塊原理圖
此芯片是SPI總線與單片機(jī)進(jìn)行通信的,DCLK,CS,DI,DO四個(gè)引腳是和單片機(jī)連接通信的。IOVDD是數(shù)字電路的電源,所以直接接上VCC。VREF引腳是參考電壓的輸入端,在本設(shè)計(jì)中接入5 V穩(wěn)壓即可。此次選用的光敏電阻在較黑暗時(shí)電阻約為20 kΩ,如果分壓電阻較小,則漏電流比較大,功率會(huì)比較大;分壓電阻比較大的話,輸入模擬信號的范圍會(huì)比較小,影響系統(tǒng)的功能。均衡這兩方面,選擇100 kΩ的電阻。VCC腳加一個(gè)0.1 uf的濾波電容,濾除比較高頻的干擾波,防止高的瞬時(shí)電壓對芯片造成傷害,影響電路的耐久性。
主控模塊是光敏控制照明系統(tǒng)的控制核心,采用了STC89C52型號的單片機(jī)。其實(shí)質(zhì)是一個(gè)單片機(jī)的最小系統(tǒng),它能夠保證單片機(jī)正常運(yùn)行,運(yùn)行基本功能,圖4為主控電路原理圖,與其他不同的也就是加了兩個(gè)8P的接口,主要是為了測試的方便。
圖4 主控電路原理圖
作為一個(gè)照明系統(tǒng),LED燈作為光源自然就是整個(gè)設(shè)計(jì)的主體。本次設(shè)計(jì)選用了額定電壓3.3 V的LED燈,一般工作在3 mA~10 mA。因?yàn)橛? V電壓供電,所以串聯(lián)了一個(gè)200 Ω的電阻。由于單片機(jī)的灌電流的最大限制要比拉電流要大,所以用灌電流驅(qū)動(dòng)二極管,這樣能提高電路的穩(wěn)定性,原理如圖5所示。
圖5 led發(fā)光模塊原理圖
根據(jù)以上三個(gè)模塊的電路分析,結(jié)合實(shí)際情況,設(shè)計(jì)整體電路原理圖如圖6所示。根據(jù)整體電路圖用Altium designer15用之前選擇的封裝形式設(shè)計(jì)pcb板[5],按照規(guī)范的pcb設(shè)計(jì)原則,設(shè)計(jì)了如圖7的pcb圖。
圖6 整體電路原理圖
圖7 pcb圖
環(huán)境光亮度采集的基本程序是按照xpt2046的通信時(shí)序編寫,即xpt2046將模擬數(shù)據(jù)轉(zhuǎn)換的數(shù)字?jǐn)?shù)據(jù)發(fā)送并保存到51單片機(jī)中。
xpt2046是使用SPI總線的通信,所以根據(jù)數(shù)據(jù)手冊并參照SPI的時(shí)序進(jìn)行編寫程序。首先要對芯片進(jìn)行使能。單片機(jī)會(huì)向xpt2046發(fā)送一個(gè)字節(jié)的命令數(shù)據(jù),此時(shí)xpt2046會(huì)發(fā)出一個(gè)忙信號,因此,需要另外發(fā)送一個(gè)時(shí)鐘周期清除這個(gè)忙信號。然后xpt2046會(huì)發(fā)出兩個(gè)字節(jié)的AD值。因?yàn)閤pt2046是12位,所以在編寫程序時(shí)需要忽略后四位。詳細(xì)的命令數(shù)據(jù)是根據(jù)寄存器的每個(gè)位的具體作用編寫。具體工作流程如圖8所示。
圖8 亮度采集程序設(shè)計(jì)流程圖
分級發(fā)光程序的核心部分就是量化光亮度的級別,然后用相應(yīng)的pwm波控制LED燈的亮度。由于需要對光的亮度需要量化處理,所以在畫原理圖和制板時(shí)預(yù)留了接口用于接數(shù)碼管。這樣在編寫程序的時(shí)候可以直觀看到輸出的AD值。
為了測定需要打開LED燈的AD值,需要控制環(huán)境的光強(qiáng)屬于燈正好需要開的那個(gè)范圍。然后將主控芯片接收到的AD值用數(shù)碼管顯示出來如圖9所示。
圖9 環(huán)境光需要開燈時(shí)的AD值
光線特別暗的時(shí)候,需要將LED燈的亮度開到最大,所以要設(shè)置一個(gè)下限值。這樣就需要將光線調(diào)節(jié)到比較暗,然后將轉(zhuǎn)換后的AD值用數(shù)碼管顯示出來,AD值如圖10所示。經(jīng)過觀察AD值過后,我選擇在50~200之間進(jìn)行pwm波占空比調(diào)節(jié)。在200以上燈關(guān)閉。根據(jù)LED燈一般工作在3 mA~10 mA,所以占空比設(shè)置為30%~100%。所以需要對AD值改變比例匹配到占空比上,流程圖如圖11所示。
圖10 環(huán)境光需要燈最亮?xí)r的AD值
圖11 分級發(fā)光程序流程圖
將編寫好的程序進(jìn)行編譯,把生成的hex文件燒錄到單片機(jī)里,利用手遮擋光線對光敏電阻周圍的光的強(qiáng)度進(jìn)行調(diào)節(jié),能夠?qū)崿F(xiàn)LED分級發(fā)光,理論上是有70級的分級,但是人眼只能分辨出4級左右。設(shè)計(jì)是基于單片機(jī)的光敏控制照明系統(tǒng),實(shí)現(xiàn)了隨著外部光亮的調(diào)節(jié)從而調(diào)節(jié)LED燈光亮度,達(dá)到節(jié)能的效果。