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