PWM在LED亮度調節和呼吸燈效果實現方面有著廣泛應用。在LuatOS環境中,如何高效運用PWM功能是開發者需要掌握的關鍵。本實戰教程將通過具體案例,引導開發者快速上手,輕松實現LED的精彩燈光效果。
PWM脈沖寬度調制(Pulse Width Modulation,也稱為脈寬調制)——是利用微處理器的數字輸出對模擬電路進行控制的一種非常有效的技術,廣泛應用于測量、通信、功率控制與變換等諸多領域。
日常開發中比較典型的應用場景:
電機控制:通過調節電機供電的PWM信號,控制電機轉速和扭矩。
燈光調光:用于調節LED燈的亮度,改變狀態的快慢來實現不同亮度效果。
音頻信號生成:在音頻電子設備中生成不同的聲音頻率和音量。
加熱控制:在加熱元件中使用PWM來調整輸出功率,從而實現精確的溫度控制。
本文特別分享PWM相關基礎知識,并以Air8000核心板為例,演示LuatOS開發中如何使用PWM功能實現LED亮度控制及呼吸燈效果,幫助開發者快速上手。
一、PWM相關基礎知識
PWM具有高效、控制精度高及實現簡便等優點,但PWM信號可能產生高頻噪聲,需要濾波以減小干擾。另外,某些應用需要特定的硬件支持,如支持PWM輸入的微控制器或電路。
要想使用PWM,還需先了解PWM的相關參數和原理。
1.1 PWM參數
PWM的頻率:是指1秒鐘內信號從高電平到低電平再回到高電平的次數(一個周期),也就是說一秒鐘PWM有多少個周期。 單位:Hz。
PWM的周期:T=1/f周期=1/頻率
例如:如果頻率為50Hz,T=1/50=0.02s,也就是說一個周期是20ms;
1s=1000ms,那么一秒鐘就有50次PWM周期。
PWM的占空比:是一個脈沖周期內,高電平的時間占整個周期時間的比例。單位:% (0%-100%)
例如:一個周期10ms,高電平占8ms,那么此占空比就是8/10=80%。
1.2 PWM原理
單片機的IO引腳輸出的是數字信號,且只能輸出1和0,那如果 TTL電平中,高電平為5V,低電平為0V,但是我們想要輸出不同的模擬電壓,比如輸出3.75V應該怎么操作?
此時要用到PWM,通過改變IO口輸出方波的占空比,得到不同的模擬電壓。
3.75/5=0.75,也就是高電平時間占整個周期的75%,即占空比為75%,可得到模擬電壓3.75V。

注意上圖中藍線,代表著輸出的模擬電壓,占空比越大,則模擬電壓也越大。
二、PWM應用示例
Air8000相關管腳具有復用功能,結合原理圖引腳指示可知板載紅色LED由PIN24 GPIO21控制。本示例demo中已有配置好的pins_Air8000.json文件,測試demo時一并燒錄進Air8000核心板。


Air8000系列應用示例持續更新中,本示例最新資料詳見下方鏈接。
最新示例源碼:https://gitee.com/openLuat/LuatOS/tree/master/module/Air8000/demo/pwm
實操教程詳見:https://docs.openluat.com/air8000/luatos/app/driver/pwm/
2.1 PWM輸出示例
本例使用Air8000核心板上的NetLed(網絡狀態燈),pwm通道id=4,打開pwm4通道的pwm輸出,設置不同的占空比,小燈會有不同的亮度。

示例效果如下:

2.2 PWM呼吸燈
本例使用Air8000核心板上的NetLed(網絡狀態燈),pwm通道id=4來查看呼吸燈效果。呼吸燈效果就是小燈由亮到暗逐漸變化,很有節奏感地一起一伏,好像人在呼吸的感覺。
我們可以通過不斷調高占空比讓小燈一點點亮起,再不斷調低占空比讓小燈一點點熄滅從而達到此效果。

示例效果如下:

今天的內容就分享到這里了~
-
單片機
+關注
關注
6072文章
45304瀏覽量
662384 -
PWM
+關注
關注
116文章
5837瀏覽量
223529 -
呼吸燈
+關注
關注
10文章
116瀏覽量
43774 -
嵌入式硬件
+關注
關注
1文章
981瀏覽量
9030 -
LuatOS
+關注
關注
0文章
134瀏覽量
2541
發布評論請先 登錄

LuatOS中PWM實現LED亮度調節與呼吸燈的實戰教程
評論