林方盛 江 磊 劉木清
(復旦大學電光源研究所,上海 200433)
隨著經濟的發展,節能減排和低碳經濟已成為當今全球關注的熱點。而在照明領域,LED作為第四代照明光源,以其高效節能長壽命等諸多優點脫穎而出。近幾年在道路照明領域中LED的應用越來越多。在路燈應用上,大部分城市在零點之后道路幾乎空無一人,此時在低交通流量的道路上保持高亮度顯然沒有必要[1]。因此對路燈亮度進行調節尤為重要,對節能減排也十分關鍵。
目前在LED路燈控制中,主要還是采用定時控制。這種方式,按照定時器設定固定的時間對LED路燈實現定時自動開關和分時PWM調光控制,既節省了人力成本,又達到節能減排的目的。目前的市場上的定時器方案良莠不齊,大部分隨著使用時間的增長,同步性變差。而好的經緯度定時器則價格昂貴,不太適合在路燈上大規模使用。
本文設計了一款基于DS1302和Attiny13的LED定時器來改進這些問題。本文主要介紹了定時器的軟硬件設計以及和上位機通訊的時間燒寫模塊的軟硬件設計。
整個定時器系統結構如圖1所示,主要包括上位機 (PC),與PC通過串口連接的實時時鐘燒寫模塊,與燒寫模塊通過SPI口連接的定時器以及帶PWM調光驅動的LED路燈。

圖1 LED路燈定時控制系統結構圖Fig.1 LED streetlight timer control system structure
用戶通過操作PC界面上的程序將時間寫入時間燒寫模塊,保存好。然后用戶操作時間燒寫模塊通過SPI接口將時間寫入定時器中DS1302,這樣就完成定時器的設置。定時器中Attiny13不斷讀取DS1302的時間,定時動作,發出PWM信號控制LED驅動,實現定時控制。
本設計主要關注定時器和時間燒寫模塊的軟硬件設計。
定時器主要由實時時鐘部分和MCU電路組成。實時時鐘部分采用的芯片是DS1302。DS1302是美國DALLAS公司推出的一款高性能、低功耗、帶RAM的低功耗實時時鐘芯片,它可以對年、月、日、周、時、分和秒進行計時,并能夠對每月的天數和閏年的天數進行自動調整[2]。時鐘既可以采用24小時制,也可以采用12時制。DS1302功耗很低,保持數據和時鐘信息時功率小于1mW,在沒有主電源的情況下,采用副電源3V鋰電池供電可以工作長達10年。
MCU采用的是AVR系列8位單片機Attiny13。Attiny13是一款高性能、低功耗的8位AVR微處理器,其結構簡單,引腳少,價格便宜,適合在路燈控制系統中大批量使用,以節約成本。
如圖2所示,整個定時模塊采用外部和LED驅動一樣的48V DC供電,利用齊納二極管和電容組成的穩壓電路將電壓穩定在4.7V,作為DS1302的主電源和Attiny13的電源,DS1302備份電源由3V的鋰紐扣電池供電。
實時時鐘芯片DS1302靠32.768kHz的晶振提供計時脈沖,實現時分秒的計時。通過SPI三線接口與MCU進行同步通信,分別為CE引腳、SCLK串行時鐘引腳、I O串行數據引腳3線。

圖2 定時器電路原理圖Fig.2 Timer electrical principle
Attiny13以其功能簡單,低價等優勢成為定時器的MCU,利用3個IO口讀取DS1302的時間。內部T C0是通用8位定時器 計數器模塊,有兩個獨立的輸出比較單元,且支持PWM功能。它提供精確的執行時序與波形產生,在PB0上產生PWM信號實現調光[3]。
在軟件上的設計主要是Attiny13單片機上的程序編寫,在AVR Studio 4環境下編寫調試。流程圖如圖3所示,程序工作流程如下:
1)宏定義,如自定義定時調光時間和調光占空比;
2)端口初始化,包括IO口的輸入輸出配置,看門狗配置和定時器Timer0配置為快速PWM模式;
3)針對DS1302初始化函數,定義1個字節讀寫函數和時分秒讀寫函數;
4)主函數,循環調用DS1302時間讀取函數獲取DS1302上的實時時間,判斷是否開關燈,調節調光占空比,實現定時控制。

圖3 定時器程序流程圖Fig.3 Timer process graph
在程序中用戶可根據實際情況對程序進行改造,添加不同占空比和不同的調光時間節點,自主地實現靈活的定時控制。
考慮到實際使用中,在LED路燈系統里定時器是批量使用,為了保證調光的同步性一致,因此實際生產過程中每個定時器各自的初始時間必須各不相同,但和實時時間必須保持一致。
整個模塊實現的功能是將PC的當前時間保存到燒寫模塊中并可實現走時,顯示到LCD屏幕上,按下按鈕,可將當前動態時間發送給定時器,并反饋到LCD屏幕上。
時間燒寫模塊的結構圖如圖4所示。

圖4 時間燒寫模塊結構圖Fig.4 Timer module structure
其中核心MCU為8位AVR單片機Atmega16,Atmega16通過串口和PC通訊,和DS1302通過3線SPI連接。用戶通過操作PC上的界面,將PC當前的時間通過Atmega16賦予內部DS1302并保存于其中,用戶可以通過LCD屏幕看到內部DS1302的時間正常。至此時間燒寫模塊已將實時時間保存至其中。
接下來用戶只需操作時間燒寫模塊即可實現功能。通過按鍵,用戶可將當前時間發送給定時器,同時將定時器時間顯示在LCD上。這樣保證每個定時器之間時間的同步性,均與PC的系統時間保持一致。
在軟件上的設計主要是Atmega16單片機上的程序編寫,在ICCAVR環境下編寫調試。整個程序完成的工作是流程圖如圖5所示。
程序工作流程如下:
1)整個程序采用模塊化編程思路,編寫4個頭文件:延時函數,LCD12864操作函數,DS1302讀寫函數,UART串口讀寫函數;
2)主程序,Atmega13端口配置函數,串行接收中斷服務函數,外部中斷服務函數;
3)功能1:實現通過串口將時間數據寫入內部DS1302,顯示在LCD上;
4)功能2:通過按鍵將內部DS1302時間數據發送給外部定時器中的DS1302,顯示在LCD上。

圖5 時間燒寫模塊程序流程圖Fig.5 Timer module process
如圖6所示,是使用VB編寫的PC端系統人機界面程序。

圖6 時間燒寫模塊人機界面圖Fig.6 Timer module interface diagram
1)采用Timer控件讀取系統時間,將時分秒數據取出顯示在對應的Hour,Minute,Second框內;
2)采用MSComm控件實現串口通訊,設置端口、波特率等項目,以十六進制形式發送時分秒數據,并將返回值顯示在Returned Time框內。
用戶可在上面看到PC系統時鐘,選擇合適的串口參數,點擊“Open Port”,顯示“OK”說明成功打開串口。點擊“Send Time”發送,這樣就將PC的當前時間成功寫入時間燒寫模塊。
實驗室中按照圖1連接,實物圖如圖7所示。

圖7 實驗室測試實物圖Fig.7 Testing object in the experiment
設計一個調光方案進行實地調試。在定時器軟件設計中,在程序的宏定義中定制3個時間點為18∶00、0∶00 和 6∶00,調光占空比為 50%。在主函數的if語句中僅僅對小時位進行判斷并動作。對應的調光時間段:6∶00~18∶00 關燈,18∶00 ~0∶00 開燈 (100%),0∶00~6∶00開燈 (50%)。
先將編寫好的程序寫入定時器中,再將計算機的系統時間寫入時間燒寫模塊并能實現自主走時,最后通過時間燒寫模塊將實時時間寫入定時器。
經過1個月的觀察,LED燈每天傍晚18∶00開燈,到午夜0∶00PWM調光50%占空比,凌晨6∶00關燈,能夠完全實現該功能,時間誤差在1s以內。
目前已將定時器集成進LED驅動電源中,在路燈上進行實地使用中,觀測下來目前效果良好。
整套定時器系統通過將PC的當前時間賦給DS1302,解決了批量生產定時器過程中對其初始時間的賦值誤差問題,并能夠在以后的使用中修正時間,使得傳統定時器使用過程中引起的不同步問題得到解決,使LED路燈定時控制保持同步。另外其較低的成本也在路燈大批量使用中具有一定的優勢。
對于LED而言,由于其極易調光的特性,使得我們可以對LED路燈進行靈活的調光。例如在每天固定時間開關路燈,在車流量大的時段提高光輸出,深夜車流量小的時段可以降低光輸出。這樣既節省了人力資源的浪費,又達到節約能源的目的在實際使用中,用戶可根據不同的情況,對定時器的內部程序進行靈活自由的修改,如添加不同的調光時間節點和PWM調光不同的占空比,甚至可以加入光敏元件檢測外界光照度實現實時自動調光等等,均具有較高的實用價值。
[1]李旭亮,鄧國強.基于Zigbee+GPRS智能控制的LED路燈綠色照明低碳經濟新技術 [J].照明工程學報,2010,21(z1):78~81.
[2]金春林,邱慧芳,張皆喜.AVR系列單片機C語言編程與應用實例[M].北京:清華大學出版社,2003:277~283.
[3]丁化成,耿德根,李君凱.AVR單片機應用設計[M].北京:北京航空航天大學出版社,2002:131~132.