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