PWM 使用教程#
什么是 PWM?#
PWM(Pulse Width Modulation,脉宽调制) 是一种通过控制数字信号的**高低电平比例(占空比)**来模拟模拟信号的方法。常用于:
控制 LED 亮度
驱动电机速度
调节音频音量
生成音调/方波等信号
K230 内部集成了两个 PWM 硬件模块,每个模块支持 3 个通道(共计 6 个通道):
通道 0~2 使用同一个时钟源(频率相同,占空比分别设置)
通道 3~5 使用另一个独立时钟源
每个通道均可通过
IOMUX配置到不同的输出引脚
示例概览#
以下示例演示了如何使用 K230 的 PWM 模块完成以下操作:
初始化并启动 PWM 输出
动态调节频率与占空比
释放 PWM 通道资源
1. 导入模块并初始化 PWM#
from machine import PWM, Pin
# 初始化 PWM 通道 0,设置频率为 1kHz,占空比为 50%
pwm0 = PWM(Pin(42), freq=1000, duty=50)
PWM(通道号, 频率Hz, 占空比%)创建指定通道的 PWM 输出,输出 1kHz 方波,占空比为 50%
2. 动态调节频率和占空比#
# 修改通道 0 的输出频率为 2kHz
pwm0.freq(2000)
# 修改占空比为 10%
pwm0.duty(10)
freq(x):设置输出频率(单位:Hz)duty(x):设置占空比(单位:%,范围 0~100)
3. 释放通道资源#
# 完全释放通道 0,关闭输出并释放底层资源
pwm0.deinit()
deinit():关闭通道、释放资源,适用于退出场景或切换功能
4. 示例输出波形说明#
假设我们设置通道 0 输出 1kHz、50% 占空比的 PWM 波形,其波形为:
周期 T = 1ms
高电平时间 = 0.5ms,低电平时间 = 0.5ms
|‾‾‾‾‾ ‾‾‾‾‾ ‾‾‾‾‾
| ‾‾‾‾‾ ‾‾‾‾‾
若将占空比调整为 10%,波形如下:
|‾ ‾ ‾ ‾
|
PWM 通道说明#
通道号 |
所属模块 |
时钟共享组 |
|---|---|---|
0 |
PWM0 |
Group A |
1 |
PWM0 |
Group A |
2 |
PWM0 |
Group A |
3 |
PWM1 |
Group B |
4 |
PWM1 |
Group B |
5 |
PWM1 |
Group B |
⚠ 注意:同一组的通道共用一个频率,但占空比可以独立设置
应用场景#
LED 亮度调节(通过占空比控制亮度)
蜂鸣器发声(通过频率控制音调)
舵机控制(特定占空比控制转角)
直流电机调速(通过 PWM 控制电压平均值)
信号波形发生器(方波、PWM 调制波等)
