呼吸燈就是指電子產品上的led燈的亮度隨著時間由暗到亮逐漸增強,再由亮到暗逐漸衰減,有節奏感地一起一伏,就像是在呼吸一樣,因而被廣泛應用於手機、電腦等電子裝置的指示燈中。在使用mcu開發相關的應用產品中也可以加入呼吸燈功能,增強使用者的體驗感,本篇文章將介紹如何使用mm32l0系列產品晶元做呼吸燈功能。
在平時應用中可以知道,mcu的gpio輸出高低電平變化可以實現led燈的亮、滅兩個過程,如果gpio的電平一直維持高電平或者低電平,led燈就處於長亮或長滅的狀態,呼吸燈就是通過較高頻率的電平變化來實現亮滅的切換,由於人的視覺暫留效應,肉眼無法迅速捕捉快速亮滅變化的過程,所以在視覺中一直出現一直亮或者滅的狀態,通過調整占空比可以控制led燈的亮度,給人視覺上一種燈光由暗到亮逐漸增強,然後又由亮到暗逐漸衰減。
正常的成年人的吸氣呼氣時間整個過程持續大約3秒時間,即吸氣時間(led燈亮度逐漸變亮)時間為1.5s,吸、呼氣時間(led燈亮度逐漸變暗)時間為1.5s。
亮度隨著時間逐漸變強再衰減,可以用兩種算數方式實現:半週期的正弦函式曲線和指數上公升曲線及對稱的下降沿曲線。
指數方式曲線圖
要控制led燈達到呼吸燈的效果,實際上就是要控制led燈的亮度擬合呼吸特性曲線,在本次實驗將採用指數上公升曲線及對稱的下降沿曲線方式,使用者如果對正弦方式感興趣也可以進行嘗試。在本次實驗中,我們使用mm32l0輸出較高頻率的pwm訊號,通過調製訊號的占空比,控制led燈的亮度。
生成指數方式的曲線圖主要因素:
timperiod:定時器的計數週期,它的值必須與pwm表中的極大值相等(應用中賦值需要減1),而pwm表的極大值決定了控制的解析度。例如極大值為10時,pwm占空比只有10個等級精確到0.1,當極大值為1000時,pwm占空比1000個等級精確到0.001。在本次實驗中設定定時器的計數週期值為255+1,即pwm表中的極大值也是256。
tim_prescaler:定時器時鐘分頻因子,它控制定時器計數器cnt計數加1所需要的時間,它的值太大會導致輸出的單個pwm波週期過長,影響控制的動態特性。如控制led燈時,該值太大會導致led燈開關時間變長,閃爍明顯。一般來說該值越小越好。在本次實驗中設定定時器時鐘分頻因子為1757+1,即對時鐘1758分頻。
pwm表的點數:pwm表的點數即對擬合曲線的取樣點數,即把led燈的亮度分為0-255個等級,取樣點越多,能更好地還原擬合曲線,取樣點太少,可能會導致失真。在本次實驗中設定pwm表的點數為40。
period_class:週期倍數,即pwm表中每個元素的迴圈次數,它影響擬合曲線的週期。在本次實驗中設定設定週期倍數為8。
本次實驗程式直接從mm32l073的定時器pwm輸出的例程的基礎上修改得來,tim3配置成向上計數,pwm通道輸出也被配置成當計數器cnt的值小於輸出比較寄存ccr1的值時,pwm通道輸出低電平點亮led燈。在函式的最後還使能了定時器中斷,每當定時器的乙個計數週期完成時產生中斷,配合中斷服務函式,即可切換ccr1比較暫存器的值。
使用mm32l0系列mcu上述兩種方式都可以實現呼吸燈功能,兩種方法gpio分別是pb4和pb5,download到miniboard中,可以對比測試兩種實現方法的差異性,選擇合適的呼吸燈實現方式。
靈動微電子MM32L0系列晶元做呼吸燈功能
呼吸燈就是指電子產品上的led燈的亮度隨著時間由暗到亮逐漸增強,再由亮到暗逐漸衰減,有節奏感地一起一伏,就像是在呼吸一樣,因而被廣泛應用於手機 電腦等電子裝置的指示燈中。在使用mcu開發相關的應用產品中也可以加入呼吸燈功能,增強使用者的體驗感,本篇文章靈動微電子一級 英尚微將介紹如何使用mm32l0...
靈動MM32F0130規格資料
mm32f0130 mm32f0130開發套件 mm32f0130軟體 提供可配置的暫存器級和lib級驅動軟體 支援主流編譯器和ide mm32f0130主要特性 72mhz cpu can 2.0b with 20 group of filters usb 2.0 certificate pass...
分享靈動微國產32位MCU全新MM32F系列
全新mm32系列是靈動微電子於2020年推出的新一代通用mcu平台,旨在為客戶提供更高效能 更低功耗 更高可靠性 穩定性和健壯性的微控制器。全新mm32硬體上與經典mm32全相容,保留了2.0 5.5v寬壓供電設計。mm32f系列是靈動微電子新一代mm32系列中率先公升級推出的通用高效能mcu平台。...