本文是把我自己收藏的低功耗模組軟體的PWM應用例項分析大家,我是以低功耗4G模組Air724UG為例。
一、簡介
1.1 pwm是什麼
脈衝寬度調製(PWM),是英文“Pulse Width Modulation”的縮寫,簡稱脈寬調製,是利用微處理器的數字輸出來對類比電路進行控制的一種非常有效的技術,廣泛應用在從測量、通訊到功率控制與變換的許多領域中。
PWM 的相關引數:
PWM 的頻率:
是指 1 秒鐘內訊號從高電平到低電平再回到高電平的次數(一個週期),也就是說一秒鐘 PWM 有多少個週期 單位:Hz
PWM 的週期:
T=1/f 週期=1/頻率 例:如果頻率為 50Hz ,也就是說一個週期是 20ms,那麼一秒鐘就有 50 次 PWM 週期 3. 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.
注意上圖中藍線,代表著輸出的模擬電壓,佔空比越大,則模擬電壓也越大。
1.3 Air724UG pwm 說明
查閱 Air724UG 模組硬體設計手冊:
https://docs.openluat.com/air724ug/product/
PWM_PWT_OUT 的時鐘基於 APB 時鐘,主時鐘是 200Mhz,透過配置 pwt 暫存器的 PWT_Period 和PWT_Duty 來控制 pwm 的輸出
PWM_LPG_OUT(Light Pulse Generation)用於低頻率的應用如驅動 LED 閃爍。
下面是頻率和佔空比可以選擇的取值範圍:
週期範圍:
125ms,250ms,500ms,1000ms,1500ms,2000ms,2500ms, 3000ms
選擇對應的時間,輸出的波形週期也與之對應。
高電平時間:
15.6ms, 31.2ms, 46.8ms, 62ms, 78ms, 94ms, 110ms, 125ms, 140ms, 156ms, 172ms, 188ms,
200ms, 218ms, 243ms
選擇對應高電平時間,輸出在當前週期內的高電平。
二、演示功能概述
本教程教你如何使用開發板輸出 PWM 功能。
功能定義:
- 使用 PWM 引腳輸出脈寬調製訊號
- 驅動開發板指示燈,呼吸燈演示
三、準備硬體環境
3.1 開發板準備
使用 EVB_Air724 開發板,如下圖所示:
此開發板的詳細使用說明參考:
https://docs.openluat.com/air724ug/product/
Air724UG 產品手冊 中的《EVB_Air724UG_AXX 開發板使用說明》,寫這篇文章時最新版本的使用說明為:《EVB_Air724UG_A14 開發板使用說明》;開發板使用過程中遇到任何問題,可以直接參考這份使用說明文件。
api文件:
https://doc.openluat.com/wiki/21?wiki_page_id=2068
3.2 資料通訊線
USB 資料線一根(micro USB)。
3.3 PC 電腦
WIN7 以及以上版本的 WINDOWS 系統。
3.4 組裝硬體環境
USB 資料線插入 USB 口,另一端與電腦相連,撥碼開關全部撥到 ON,串列埠切換開關選擇 UART1,USB 供電的 4V 對應開關撥至 ON 檔,如下圖所示。
四、準備軟體環境
4.1 下載除錯工具
使用說明參考:
Luatools 下載和詳細使用
https://docs.openluat.com/Luatools/
4.2 原始碼及韌體
1、底層 core 下載
下載底層韌體,並解壓
連結:
https://docs.openluat.com/air724ug/luatos/firmware/
如下圖所示,紅框的是我們要使用到的
2、 本教程使用的 demo 見附件:
https://gitee.com/openLuat/LuatOS-Air724UG/tree/master/script_LuaTask/demo/pwm呼吸燈
4.3 下載韌體和指令碼到開發板中
開啟 Luatools,開發板上電開機,如開機成功 Luatools 會列印如下資訊。
點選專案管理測試選項。
進入管理介面,如下圖所示。
點選選擇檔案,選擇底層韌體,我的檔案放在 D:\luatOS\Air724 路徑中
點選增加指令碼或資原始檔,選擇之前下載的程式原始碼,如下圖所示。
點選下載底層和指令碼,下載完成如下圖所示。
五、程式碼示例介紹
5.1 PWM 介面說明
本例使用 Air724 的 49 管腳,即 PWM_PWT_OUT GPIO_5 pwm 通道 id=0,控制開發板上的紅色電源指示燈。
開啟 pwm 通道的 pwm 輸出,設定不同的佔空比,小燈會有不同的亮度,原理圖如圖所示。
5.2 breathingLight.lua 程式碼
開啟並且配置 PWM 函式 misc.openPwm(0, 512, y) 說明
--0:gpio5, 1:gpio13
--p1 週期 0-1024
--p2 佔空比 0-512
5.3 main.lua 程式碼
本程式碼為主程式指令碼,系統啟動後首先會對 4G 網路進行配置,然後載入載入功能測試模組。
六、開機展示
連線好硬體並下載韌體後,重啟開發板觀察指示燈的變化,如下圖所示。
七、常見問題
1、為什麼 gpio13 輸出是低頻波形嗎?
gpio13 只能輸出低頻 pwm 波形。
2、為什麼配置後輸出沒波形?
答:看通道是否配置正確,gpio 口是否被佔用。
3、PWM 的訊號的頻率如何選擇?
頻率的選擇通常取決於具體應用,根據自己的專案需要來選擇:
(1)電機控制:常用頻率為 1 kHz 到 20 kHz,以確保足夠的反應速度和控制精度。
(2)LED 調光:頻率通常在 1 kHz 以上,以避免人眼感知到閃爍。
(3)音訊訊號:頻率設定應高於音訊訊號的最高頻率(例如,至少為 20 kHz)。
分享完畢。