DIY創(chuàng)意家庭:實現(xiàn)LED臺燈的智能化,提供軟硬件解決方案的設(shè)計細節(jié)
一、設(shè)計摘要
按需照明一直是照明科技領(lǐng)域最求的最佳形式。在臺燈為千萬人的生活帶來便利的同時,相應問題也一一出現(xiàn),如不離開時忘記關(guān)燈、燈光亮度不可調(diào)等,這些都導致了嚴重的電能浪費。而此時,LED綠色照明理念正以一種前所未有的趨勢席卷全球。在這種背景下,基于微控制器和環(huán)境光線傳感器的全自動控制LED照明臺燈應運而生。本臺燈以CYPRESS PSoC3為控制核心,輸出PWM信號控制LED驅(qū)動器控制和調(diào)節(jié)LED臺燈,通過光線傳感器采集的環(huán)境光線強度和利用超聲波測得的用戶使用距離綜合決定PWM波的占空比,從而實現(xiàn)了智能控制LED臺燈的亮度以及臺燈開啟熄滅的功能。
本設(shè)計最終實現(xiàn)了人走燈滅和智能LED照明亮度調(diào)節(jié)兩大功能,從而實現(xiàn)了按需照明的理念,達到經(jīng)濟節(jié)能、環(huán)保綠色無污染的目的。本設(shè)計最終完成的作品完全到達市場應用需求,必將有助于推動當前所全球倡導的“綠色、低碳、智能生活”理念。
二、創(chuàng)新點
人走燈滅
作為本設(shè)計的智能控制之一,實現(xiàn)了“人走燈滅”的功能,這是本設(shè)計的兩大創(chuàng)新點之一。這就為那些擁有不良使用臺燈習慣的用戶解決了一個很大的問題。即使他們離開時忘記關(guān)燈,本臺燈也會智能識別,然后自動將LED亮度調(diào)到最低,進入睡眠低功耗模式,達到了節(jié)能的目的。
根據(jù)環(huán)境光線強弱自動調(diào)節(jié)LED亮度
能夠在維持用戶視野內(nèi)光線強度穩(wěn)定的基礎(chǔ)上,根據(jù)環(huán)境的光線強弱來智能的改變LED自身的發(fā)光強度:當外界環(huán)境光線強時,減弱LED亮度,達到進一步節(jié)能的目的;當外界環(huán)境光線弱時,自動增加LED發(fā)光強度,保持用戶使用視野的光強恒定,保障用戶正常學習工作。這又是本設(shè)計的另一個重大創(chuàng)新點。
另外,本臺燈的用戶使用視野光強和自動開啟/關(guān)閉距離均可通過按鍵進行設(shè)置,設(shè)置的具體光強和臺燈使用距離均在1602的LCD屏上實時顯示,從而使本臺燈的設(shè)計和使用更加人性化。
三、系統(tǒng)框圖
整個設(shè)計由220V交流市電提供電源,經(jīng)AC/DC電源轉(zhuǎn)換器轉(zhuǎn)換后得到5V/2A的LED臺燈供電和控制系統(tǒng)電壓,分別給LED驅(qū)動電路和PSoC3以及各個傳感器供電。
PSoC3的ADC通過采集環(huán)境光線傳感器輸出得到環(huán)境光線強度,據(jù)此改變輸出的PWM信號占空比,PWM的輸出控制后級的LED驅(qū)動器調(diào)節(jié)LED臺燈亮度;
另一方面,超聲波測距為MCU智能控制LED開啟/關(guān)閉提供可靠依據(jù)(當用戶距臺燈一定距離時,實現(xiàn)臺燈自動開啟/關(guān)閉,以進一步加強節(jié)能效果)。
用戶設(shè)置模塊用于完成用戶對臺燈自動開啟/關(guān)閉距離和照明光強的自定義設(shè)置。
1602液晶顯示模塊用于實時顯示用戶自定義設(shè)置的LED臺燈亮度(光強)和用戶使用距離值,以便于人機交互設(shè)置信息。
整個智能LED臺燈系統(tǒng)框圖設(shè)計如下,詳細流程參見技術(shù)原理和流程圖部分。
圖一、系統(tǒng)框圖
四、技術(shù)原理
4.1、超聲波測距:
本系統(tǒng)中使用的到超聲波收發(fā)模塊URF04如下圖所示:
圖二、超聲波測距模塊實物圖
管腳定義如下:
VCC:工作電壓5V TRIG:控制端口5V ECHO:響應輸出端口5V GND:接地 OUT:不用
工作原理:MCU通過控制口TRIG向URF04輸出一個持續(xù)時間20us以上的高電平,然后模塊自動發(fā)送8個40KHz的方波并自動檢測是否有信號返回。當有信號返回時就通過ECHO輸出一個高電平給MCU,高電平的持續(xù)時間就是超聲波從發(fā)射到接收的時間。這個時間間隔被PSOC3內(nèi)部的16bit定時器中斷捕獲。具體計算距離公式如下:
D=340*t/2(m)
其中t 為定時器計算出的時間。PSoC3內(nèi)部電路設(shè)計如下:
圖三、PSoC3內(nèi)部定時器捕獲電路實現(xiàn)
4.2、光線傳感器測環(huán)境光強:
本系統(tǒng)中使用的光線傳感器模塊(就是光敏傳感集成電路)如下圖所示:
圖四、環(huán)境光線傳感器
其接口如右圖所示。
板上的核心元器件就是一個光敏電阻,可以將環(huán)境光線強度轉(zhuǎn)換成模擬電壓輸出。輸出電壓范圍是0.5V~VCC-0.5V。PSoC3通過內(nèi)部16位精度的模數(shù)轉(zhuǎn)換器(ADC)采集、轉(zhuǎn)換后,得到環(huán)境光線強度所對應的數(shù)字量,此數(shù)值的大小與光線強弱成反比,即,光線越強,AD轉(zhuǎn)換值越小;光線越弱,AD轉(zhuǎn)換值越大。
PSoC3內(nèi)部ADC電路實現(xiàn)如下:
圖五、PSoC3內(nèi)部16-bit ADC實現(xiàn)電路
4.3、PWM波形輸出驅(qū)動LED:
系統(tǒng)中使用到的LED如下圖所示:
其額定工作電壓為3.0V,最大工作電流為36mA,故額定功率就是108mW。利用PWM波的平均輸出功率正比于其占空比,CYPRESS輸出的PWM波如下圖所示:
圖六、PWM輸出波形
一個周期T內(nèi)的有效電平時間為Ton,即V(value)=V*Ton/T)*100%.由功率計算公式:
P=I*U=U(value)2/R
其中R在一定情況下是固定的,所以PWM波輸出功率就與U(value)2成正比。所以改變占空比可以PWM輸出功率,即LED輸入功率,也就可以改變LED的亮度了。
PSoC3內(nèi)部PWM實現(xiàn)電路圖如下:
圖七、PSoC3內(nèi)部PWM電路實現(xiàn)
4.4、按鍵防抖實現(xiàn)
由于按鍵本身的機械特性使得,按鍵使用過程中均存在不同周期的抖動,主要是按鍵按下和按鍵釋放時,為此,在使用按鍵輸入時,都必須對其進行防抖處理,傳統(tǒng)的按鍵防抖包括軟件延遲和硬件中斷+定時器兩種方式,或多或少都會占有一些系統(tǒng)資源。
這里,本設(shè)計充分利用PSoC3內(nèi)部的數(shù)字邏輯器件,利用D觸發(fā)器和與門,實現(xiàn)并行內(nèi)部硬件電路防抖,取得了非常好的防抖效果,保證了用戶設(shè)置的可靠輸入。
具體的PSoC3內(nèi)部按鍵硬件防抖電路如下,串聯(lián)的3個D觸發(fā)器均有同一個200Hz的時鐘觸發(fā),每個按鍵的輸入與三個D觸發(fā)器的輸出一起相與后輸出,可以去除4*5ms=20ms的按鍵抖動,相應的按鍵輸入信號和硬件防抖后的信號對比如圖所示:
圖八、PSoC3內(nèi)部按鍵硬件防抖電路實現(xiàn)
圖九、按鍵防抖效果(邏輯分析儀截圖)
五、系統(tǒng)軟硬件設(shè)計
5.1、硬件設(shè)計
CYPRESS獨特的PSoC器件編程特性以及PSoC Creator 1.0軟件所提供的豐富外設(shè)模擬數(shù)字資源,使得整個智能LED臺燈的設(shè)計和編程變得十分靈活和簡單。
整個智能LED臺燈硬件設(shè)計電路圖如下:
圖十、整個智能LED臺燈硬件設(shè)計電路圖
特別是其關(guān)鍵的隨意分配,極大提高了硬件電路的設(shè)計靈活性和效率。硬件管腳分配如下:
圖十一、硬件管腳分配表
5.2、軟件設(shè)計
1)PWM波形輸出 :流程
環(huán)境光線采集修正PWM控制LED亮度流程圖如下:詳細的軟件代碼參見附錄6.3 的modules.c——函數(shù)SmartAdjust().
2)超聲波 中斷測距 :
超聲波測距離控制LED臺燈開啟/關(guān)斷 流程圖:
詳細的軟件代碼參見附錄6.3 的modules.c——函數(shù)DistanceMeasure().以及CY_ISR(isr_ECHO_Interrupt)
3)光強AD轉(zhuǎn)換
詳細的軟件代碼參見附錄6.3 的modules.c——函數(shù)ADC_LightingSample ().
4|)按鍵中斷流程
詳細的軟件代碼參見附錄6.3 的三個按鍵中斷函數(shù)以及超聲波測距中斷函數(shù)
——CY_ISR(isr_INC_Interrupt)和CY_ISR(isr_DEC_Interrupt)
智能臺燈使用距離/光強用戶自定義+/-按鍵中斷處理流程:
5)整體流程(main主循環(huán)和個按鍵中斷處理流程圖)
詳細的軟件代碼參見附錄6.3 的main.c和三個按鍵中斷函數(shù)以及超聲波測距中斷函數(shù)——CY_ISR(isr_ADJ_Interrupt)
整個智能LED臺燈設(shè)計工程軟件編譯結(jié)果(報告)如下:
segment .xdata is 514 bytes long
segment .bss is 35 bytes long
segment .pdata is 0 bytes long
segment .text is 14558 bytes long
segment .bit is 9 bytes long
segment .sfr is 0 bytes long
Flash used: 14557 of 65536 bytes (22.2 %).
SRAM used: 514 of 8192 bytes (6.3 %).