林方盛 江 磊 劉木清
(復(fù)旦大學(xué)電光源研究所,上海 200433)
隨著經(jīng)濟(jì)的發(fā)展,節(jié)能減排和低碳經(jīng)濟(jì)已成為當(dāng)今全球關(guān)注的熱點。而在照明領(lǐng)域,LED作為第四代照明光源,以其高效節(jié)能長壽命等諸多優(yōu)點脫穎而出。近幾年在道路照明領(lǐng)域中LED的應(yīng)用越來越多。在路燈應(yīng)用上,大部分城市在零點之后道路幾乎空無一人,此時在低交通流量的道路上保持高亮度顯然沒有必要[1]。因此對路燈亮度進(jìn)行調(diào)節(jié)尤為重要,對節(jié)能減排也十分關(guān)鍵。
目前在LED路燈控制中,主要還是采用定時控制。這種方式,按照定時器設(shè)定固定的時間對LED路燈實現(xiàn)定時自動開關(guān)和分時PWM調(diào)光控制,既節(jié)省了人力成本,又達(dá)到節(jié)能減排的目的。目前的市場上的定時器方案良莠不齊,大部分隨著使用時間的增長,同步性變差。而好的經(jīng)緯度定時器則價格昂貴,不太適合在路燈上大規(guī)模使用。
本文設(shè)計了一款基于DS1302和Attiny13的LED定時器來改進(jìn)這些問題。本文主要介紹了定時器的軟硬件設(shè)計以及和上位機(jī)通訊的時間燒寫模塊的軟硬件設(shè)計。
整個定時器系統(tǒng)結(jié)構(gòu)如圖1所示,主要包括上位機(jī) (PC),與PC通過串口連接的實時時鐘燒寫模塊,與燒寫模塊通過SPI口連接的定時器以及帶PWM調(diào)光驅(qū)動的LED路燈。
圖1 LED路燈定時控制系統(tǒng)結(jié)構(gòu)圖Fig.1 LED streetlight timer control system structure
用戶通過操作PC界面上的程序?qū)r間寫入時間燒寫模塊,保存好。然后用戶操作時間燒寫模塊通過SPI接口將時間寫入定時器中DS1302,這樣就完成定時器的設(shè)置。定時器中Attiny13不斷讀取DS1302的時間,定時動作,發(fā)出PWM信號控制LED驅(qū)動,實現(xiàn)定時控制。
本設(shè)計主要關(guān)注定時器和時間燒寫模塊的軟硬件設(shè)計。
定時器主要由實時時鐘部分和MCU電路組成。實時時鐘部分采用的芯片是DS1302。DS1302是美國DALLAS公司推出的一款高性能、低功耗、帶RAM的低功耗實時時鐘芯片,它可以對年、月、日、周、時、分和秒進(jìn)行計時,并能夠?qū)γ吭碌奶鞌?shù)和閏年的天數(shù)進(jìn)行自動調(diào)整[2]。時鐘既可以采用24小時制,也可以采用12時制。DS1302功耗很低,保持?jǐn)?shù)據(jù)和時鐘信息時功率小于1mW,在沒有主電源的情況下,采用副電源3V鋰電池供電可以工作長達(dá)10年。
MCU采用的是AVR系列8位單片機(jī)Attiny13。Attiny13是一款高性能、低功耗的8位AVR微處理器,其結(jié)構(gòu)簡單,引腳少,價格便宜,適合在路燈控制系統(tǒng)中大批量使用,以節(jié)約成本。
如圖2所示,整個定時模塊采用外部和LED驅(qū)動一樣的48V DC供電,利用齊納二極管和電容組成的穩(wěn)壓電路將電壓穩(wěn)定在4.7V,作為DS1302的主電源和Attiny13的電源,DS1302備份電源由3V的鋰紐扣電池供電。
實時時鐘芯片DS1302靠32.768kHz的晶振提供計時脈沖,實現(xiàn)時分秒的計時。通過SPI三線接口與MCU進(jìn)行同步通信,分別為CE引腳、SCLK串行時鐘引腳、I O串行數(shù)據(jù)引腳3線。
圖2 定時器電路原理圖Fig.2 Timer electrical principle
Attiny13以其功能簡單,低價等優(yōu)勢成為定時器的MCU,利用3個IO口讀取DS1302的時間。內(nèi)部T C0是通用8位定時器 計數(shù)器模塊,有兩個獨(dú)立的輸出比較單元,且支持PWM功能。它提供精確的執(zhí)行時序與波形產(chǎn)生,在PB0上產(chǎn)生PWM信號實現(xiàn)調(diào)光[3]。
在軟件上的設(shè)計主要是Attiny13單片機(jī)上的程序編寫,在AVR Studio 4環(huán)境下編寫調(diào)試。流程圖如圖3所示,程序工作流程如下:
1)宏定義,如自定義定時調(diào)光時間和調(diào)光占空比;
2)端口初始化,包括IO口的輸入輸出配置,看門狗配置和定時器Timer0配置為快速PWM模式;
3)針對DS1302初始化函數(shù),定義1個字節(jié)讀寫函數(shù)和時分秒讀寫函數(shù);
4)主函數(shù),循環(huán)調(diào)用DS1302時間讀取函數(shù)獲取DS1302上的實時時間,判斷是否開關(guān)燈,調(diào)節(jié)調(diào)光占空比,實現(xiàn)定時控制。
圖3 定時器程序流程圖Fig.3 Timer process graph
在程序中用戶可根據(jù)實際情況對程序進(jìn)行改造,添加不同占空比和不同的調(diào)光時間節(jié)點,自主地實現(xiàn)靈活的定時控制。
考慮到實際使用中,在LED路燈系統(tǒng)里定時器是批量使用,為了保證調(diào)光的同步性一致,因此實際生產(chǎn)過程中每個定時器各自的初始時間必須各不相同,但和實時時間必須保持一致。
整個模塊實現(xiàn)的功能是將PC的當(dāng)前時間保存到燒寫模塊中并可實現(xiàn)走時,顯示到LCD屏幕上,按下按鈕,可將當(dāng)前動態(tài)時間發(fā)送給定時器,并反饋到LCD屏幕上。
時間燒寫模塊的結(jié)構(gòu)圖如圖4所示。
圖4 時間燒寫模塊結(jié)構(gòu)圖Fig.4 Timer module structure
其中核心MCU為8位AVR單片機(jī)Atmega16,Atmega16通過串口和PC通訊,和DS1302通過3線SPI連接。用戶通過操作PC上的界面,將PC當(dāng)前的時間通過Atmega16賦予內(nèi)部DS1302并保存于其中,用戶可以通過LCD屏幕看到內(nèi)部DS1302的時間正常。至此時間燒寫模塊已將實時時間保存至其中。
接下來用戶只需操作時間燒寫模塊即可實現(xiàn)功能。通過按鍵,用戶可將當(dāng)前時間發(fā)送給定時器,同時將定時器時間顯示在LCD上。這樣保證每個定時器之間時間的同步性,均與PC的系統(tǒng)時間保持一致。
在軟件上的設(shè)計主要是Atmega16單片機(jī)上的程序編寫,在ICCAVR環(huán)境下編寫調(diào)試。整個程序完成的工作是流程圖如圖5所示。
程序工作流程如下:
1)整個程序采用模塊化編程思路,編寫4個頭文件:延時函數(shù),LCD12864操作函數(shù),DS1302讀寫函數(shù),UART串口讀寫函數(shù);
2)主程序,Atmega13端口配置函數(shù),串行接收中斷服務(wù)函數(shù),外部中斷服務(wù)函數(shù);
3)功能1:實現(xiàn)通過串口將時間數(shù)據(jù)寫入內(nèi)部DS1302,顯示在LCD上;
4)功能2:通過按鍵將內(nèi)部DS1302時間數(shù)據(jù)發(fā)送給外部定時器中的DS1302,顯示在LCD上。
圖5 時間燒寫模塊程序流程圖Fig.5 Timer module process
如圖6所示,是使用VB編寫的PC端系統(tǒng)人機(jī)界面程序。
圖6 時間燒寫模塊人機(jī)界面圖Fig.6 Timer module interface diagram
1)采用Timer控件讀取系統(tǒng)時間,將時分秒數(shù)據(jù)取出顯示在對應(yīng)的Hour,Minute,Second框內(nèi);
2)采用MSComm控件實現(xiàn)串口通訊,設(shè)置端口、波特率等項目,以十六進(jìn)制形式發(fā)送時分秒數(shù)據(jù),并將返回值顯示在Returned Time框內(nèi)。
用戶可在上面看到PC系統(tǒng)時鐘,選擇合適的串口參數(shù),點擊“Open Port”,顯示“OK”說明成功打開串口。點擊“Send Time”發(fā)送,這樣就將PC的當(dāng)前時間成功寫入時間燒寫模塊。
實驗室中按照圖1連接,實物圖如圖7所示。
圖7 實驗室測試實物圖Fig.7 Testing object in the experiment
設(shè)計一個調(diào)光方案進(jìn)行實地調(diào)試。在定時器軟件設(shè)計中,在程序的宏定義中定制3個時間點為18∶00、0∶00 和 6∶00,調(diào)光占空比為 50%。在主函數(shù)的if語句中僅僅對小時位進(jìn)行判斷并動作。對應(yīng)的調(diào)光時間段:6∶00~18∶00 關(guān)燈,18∶00 ~0∶00 開燈 (100%),0∶00~6∶00開燈 (50%)。
先將編寫好的程序?qū)懭攵〞r器中,再將計算機(jī)的系統(tǒng)時間寫入時間燒寫模塊并能實現(xiàn)自主走時,最后通過時間燒寫模塊將實時時間寫入定時器。
經(jīng)過1個月的觀察,LED燈每天傍晚18∶00開燈,到午夜0∶00PWM調(diào)光50%占空比,凌晨6∶00關(guān)燈,能夠完全實現(xiàn)該功能,時間誤差在1s以內(nèi)。
目前已將定時器集成進(jìn)LED驅(qū)動電源中,在路燈上進(jìn)行實地使用中,觀測下來目前效果良好。
整套定時器系統(tǒng)通過將PC的當(dāng)前時間賦給DS1302,解決了批量生產(chǎn)定時器過程中對其初始時間的賦值誤差問題,并能夠在以后的使用中修正時間,使得傳統(tǒng)定時器使用過程中引起的不同步問題得到解決,使LED路燈定時控制保持同步。另外其較低的成本也在路燈大批量使用中具有一定的優(yōu)勢。
對于LED而言,由于其極易調(diào)光的特性,使得我們可以對LED路燈進(jìn)行靈活的調(diào)光。例如在每天固定時間開關(guān)路燈,在車流量大的時段提高光輸出,深夜車流量小的時段可以降低光輸出。這樣既節(jié)省了人力資源的浪費(fèi),又達(dá)到節(jié)約能源的目的在實際使用中,用戶可根據(jù)不同的情況,對定時器的內(nèi)部程序進(jìn)行靈活自由的修改,如添加不同的調(diào)光時間節(jié)點和PWM調(diào)光不同的占空比,甚至可以加入光敏元件檢測外界光照度實現(xiàn)實時自動調(diào)光等等,均具有較高的實用價值。
[1]李旭亮,鄧國強(qiáng).基于Zigbee+GPRS智能控制的LED路燈綠色照明低碳經(jīng)濟(jì)新技術(shù) [J].照明工程學(xué)報,2010,21(z1):78~81.
[2]金春林,邱慧芳,張皆喜.AVR系列單片機(jī)C語言編程與應(yīng)用實例[M].北京:清華大學(xué)出版社,2003:277~283.
[3]丁化成,耿德根,李君凱.AVR單片機(jī)應(yīng)用設(shè)計[M].北京:北京航空航天大學(xué)出版社,2002:131~132.