博客專欄

        EEPW首頁 > 博客 > 新手黨看這篇!Air724UG軟件指南:PWM示例

        新手黨看這篇!Air724UG軟件指南:PWM示例

        發布人:13673998452 時間:2025-01-26 來源:工程師 發布文章

        一、簡介


        1.1 pwm是什么

        脈沖寬度調制(PWM),是英文“Pulse Width Modulation”的縮寫,簡稱脈寬調制,是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量、通信到功率控制與變換的許多領域中。


        PWM 的相關參數:

        1、PWM 的頻率: 是指 1 秒鐘內信號從高電平到低電平再回到高電平的次數(一個周期),也就是說一秒鐘 PWM 有多少個周期 單位:Hz/

        2、PWM 的周期: T=1/f 周期=1/頻率 例:如果頻率為 50Hz ,也就是說一個周期是 20ms,那么一秒鐘就有 50 次 PWM 周期

        3、PWM 的占空比: 是一個脈沖周期內,高電平的時間占整個周期時間的比例 單位: % (0%-100%) 例:一個周期 10ms,高電平占 8ms,那么此占空比就是 8/10=80%


        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. 

        image.png


        注意上圖中藍線,代表著輸出的模擬電壓,占空比越大,則模擬電壓也越大。


        1.3 Air724UG pwm 說明

        查閱 Air724UG 模塊硬件設計手冊:

        https://docs.openluat.com/air724ug/product/

        image.png


        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 功能。

        功能定義:

        1. 使用 PWM 引腳輸出脈寬調制信號

        2. 驅動開發板指示燈,呼吸燈演示


        三、準備硬件環境


        3.1 開發板準備

        使用 EVB_Air724 開發板,如下圖所示:


        image.png3.2 數據通信線

        USB 數據線一根(micro USB)。


        3.3 PC 電腦

        WIN7 以及以上版本的 WINDOWS 系統。


        3.4 組裝硬件環境

        USB 數據線插入 USB 口,另一端與電腦相連,撥碼開關全部撥到 ON,串口切換開關選擇 UART1,USB 供電的 4V 對應開關撥至 ON 檔,如下圖所示。


        image.png


        四、準備軟件環境


        4.1 下載調試工具

        使用說明參考:

        Luatools 下載和詳細使用

        https://docs.openluat.com/Luatools/


        4.2 源碼及固件


        1、底層 core 下載

        下載底層固件,并解壓

        鏈接:

        https://docs.openluat.com/air724ug/luatos/firmware/

        如下圖所示,紅框的是我們要使用到的

        image.png

        2、 本教程使用的 demo 見附件:

        https://gitee.com/openLuat/LuatOS-Air724UG/tree/master/script_LuaTask/demo/pwm呼吸燈


        4.3 下載固件和腳本到開發板中

        打開 Luatools,開發板上電開機,如開機成功 Luatools 會打印如下信息。

        image.png


        點擊項目管理測試選項。

        image.png


        進入管理界面,如下圖所示。

        image.png



        點擊選擇文件,選擇底層固件,我的文件放在 D:\luatOS\Air724 路徑中

        image.png


        點擊增加腳本或資源文件,選擇之前下載的程序源碼,如下圖所示。

        image.png


        點擊下載底層和腳本,下載完成如下圖所示。

        image.png



        五、代碼示例介紹


        5.1 PWM 接口說明

        本例使用 Air724 的 49 管腳,即 PWM_PWT_OUT GPIO_5 pwm 通道 id=0,控制開發板上的紅色電源指示燈。

        開啟 pwm 通道的 pwm 輸出,設置不同的占空比,小燈會有不同的亮度,原理圖如圖所示。

        image.png


        5.2 breathingLight.lua 代碼

        打開并且配置 PWM 函數 misc.openPwm(0, 512, y) 說明

        --0:gpio5, 1:gpio13

        --p1 周期 0-1024

        --p2 占空比 0-512


        image.png

        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)。


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。




        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 梧州市| 全椒县| 洮南市| 曲麻莱县| 平定县| 桑日县| 保定市| 泰顺县| 陆川县| 霍城县| 长岭县| 双城市| 汉川市| 汉源县| 旬阳县| 霍城县| 丁青县| 金阳县| 舞阳县| 井冈山市| 吉林省| 丰宁| 岳阳县| 菏泽市| 琼中| 贺州市| 郎溪县| 英超| 大足县| 铁岭县| 万州区| 深州市| 平乐县| 寿阳县| 霍山县| 平阴县| 德州市| 南川市| 兴安县| 全州县| 确山县|