【導(dǎo)讀】我們在第一部分中通過實際使用案例介紹了電容式感應(yīng)型UI應(yīng)用中所采用的不同LED照明技術(shù)。下面我們將了解一下實現(xiàn)脈沖寬度調(diào)制(PWM,面向LED控制應(yīng)用的關(guān)鍵技術(shù))的各種不同方法。
PWM有兩大屬性:
頻率:用PWM信號快速開關(guān)LED,由于開關(guān)頻率會產(chǎn)生LED閃爍,因此PWM頻率應(yīng)大于100 Hz,確保人眼不會感覺到閃爍。
占空比:PWM通過改變占空比、保持負載電流恒 定以控制LED的亮度。LED的平均電流取決于占空比。平均電流會隨占空比的提升而升高,進而提高亮度。占空比在0%和100%之間的步長數(shù)量應(yīng)滿足應(yīng)用 中需要調(diào)節(jié)的不同亮度級數(shù)量要求。舉例來說,如果應(yīng)用在完全關(guān)閉(0%)到完全開啟(100%)之間需要20個亮度級,那么就應(yīng)支持5%的步長(除完全關(guān) 閉之外包含20個步長)。
用微控制器實現(xiàn)PWM有兩種方法。我們可用簡單的定時器/計數(shù)器在固件中實現(xiàn)整個PWM邏輯,也可以選擇集成硬件PWM功能的高級控制器來實現(xiàn)。
基于固件的PWM實現(xiàn)方案
簡單的固件實現(xiàn)方案需要定時器和中斷服務(wù)子程序(ISR)。定時器在與占空比每個步長大小的相同時間內(nèi)創(chuàng)造中斷。舉例來說,如果PWM周期為 10ms(100Hz)而步長大小為1ms(10%的占空比),那么定時器就要每1ms對CPU發(fā)出中斷,即:定時器周期 = 脈沖寬度/步長大小。
圖1給出了ISR中的邏輯。PULSE_WIDTH和ON_TIME 代表PWM步長數(shù)量的脈沖寬度和開啟時間。舉例來說,PULSE_WIDTH = 5即滿足5個亮度級的要求,而ON_TIME = 2則滿足40%的占空比要求。ISR變量isrVar控制輸出何時切換開/關(guān)。該邏輯可方便地進行擴展,從而支持多個LED引腳,而每個LED都有不同的 占空比。
圖1:固件PWM ISR邏輯
基于硬件的PWM實現(xiàn)方案
高級控制器有驅(qū)動PWM的專用硬件塊。舉例來說,賽普拉斯的PSoC4 有一個TCPWM硬件塊,能實現(xiàn)基于硬件的PWM驅(qū)動。通常說來,我們用帶有比較功能的定時器來實現(xiàn)它,邏輯類似于上面討論的固件邏輯。定時器將采用比較 寄存器和周期寄存器。周期寄存器載入的值等于脈沖寬度,而比較寄存器載入的值等于開啟時間。只要比較值大于tick值,定時器輸出就會走高,反之就會走 低。此外,tick值達到最大(16位定時器為65535)時,會自動回滾為零。當(dāng)輸出布線到端口引腳,從而能用硬件塊直接驅(qū)動LED。
表1總結(jié)了基于固件和基于硬件的PWM實現(xiàn)方案之間的差別。
表1:基于固件和基于硬件的PWM實現(xiàn)方案