PWM 是 CanMV K210 硬件编程中非常重要的控制方式。LED 亮度渐变、蜂鸣器音调变化、电机速度调节、舵机角度控制等实验,都离不开 PWM 对输出信号的精细控制。
GPIO 只能输出高电平或低电平,适合控制开关状态。PWM 则可以在高低电平之间快速切换,让外部模块获得类似“强弱变化”的效果,这也是硬件控制从简单开关走向连续调节的关键。
文章目录
- 理论基础
- 硬件设施
- 软件代码
- 扩展应用
- 总结
理论基础
实验原理
PWM 的全称是 Pulse Width Modulation,也就是脉宽调制。它不是直接输出真正连续变化的模拟电压,而是在固定周期内快速输出高电平和低电平,通过改变高电平持续时间的比例,让外部模块表现出不同强度。
GPIO 输出只有两种状态,高电平和低电平。高电平可以理解为“打开”,低电平可以理解为“关闭”。这种方式适合控制普通 LED 开关、继电器通断、蜂鸣器简单响停,但不适合表现亮度渐变、速度变化和角度控制。
在 CanMV K210 课程中,PWM 会贯穿多个实验。双色 LED 调光会使用 PWM 改变亮度,蜂鸣器实验会通过频率变化产生不同提示音,直流电机实验会通过占空比调速,舵机实验会使用固定频率下的脉宽变化控制角度。
硬件设施
实验所需硬件
本篇可以使用一颗 LED 或扩展板上的 LED 作为 PWM 输出观察对象。若套件中带有双色 LED、RGB LED、蜂鸣器、电机或舵机模块,也可以在后续实验中继续复用同一套 PWM 控制思路。
若使用外接 LED,需要注意电阻和极性。LED 长脚通常为正极,短脚通常为负极。正极通过限流电阻连接 PWM 输出引脚,负极连接 GND。若使用扩展板上已经集成的 LED 模块,通常只需要确认对应信号引脚即可。
软件代码
实验所需软件环境
本篇实验需要使用 CanMV IDE 编写并运行 MicroPython 程序。运行前需要保证开发板已经完成串口驱动安装、固件烧录和 IDE 连接。若程序无法运行,应先用简单的print()程序确认串口通信正常。
PWM 程序通常需要用到machine.Timer和machine.PWM。Timer 用于创建 PWM 定时器通道,PWM 用于设置输出频率、占空比和引脚。实际使用时,引脚编号需要根据开发板或扩展板接线进行调整。
下面程序用于实现 LED 呼吸灯效果。程序会不断改变 PWM 占空比,让 LED 从暗到亮,再从亮到暗。代码中的pin=12需要根据实际接线修改。
# CanMV K210 PWM 脉宽调制基础实验# 功能:通过 PWM 占空比变化实现 LED 呼吸灯效果importtimefrommachineimportTimerfrommachineimportPWMprint("CanMV K210 PWM breathing LED start")# 创建定时器对象# TIMER0 和 CHANNEL0 用于生成 PWM 信号tim=Timer(Timer.TIMER0,Timer.CHANNEL0,mode=Timer.MODE_PWM)# 创建 PWM 对象# freq 表示 PWM 频率,duty 表示初始占空比,pin 表示 PWM 输出引脚# pin 需要根据实际接线修改pwm_led=PWM(tim,freq=1000,duty=0,pin=12)whileTrue:# LED 逐渐变亮fordutyinrange(0,101,2):pwm_led.duty(duty)print("duty:",duty)time.sleep_ms(20)# LED 逐渐变暗fordutyinrange(100,-1,-2):pwm_led.duty(duty)print("duty:",duty)time.sleep_ms(20)这段程序的核心是使用 PWM 对象不断修改占空比。freq=1000表示 PWM 频率为 1000Hz,duty=0表示初始占空比为 0,LED 起始状态接近熄灭。后面的循环会把 duty 从 0 增加到 100,再从 100 降回 0。
如果要控制电机速度,不能直接把电机接到 K210 的 GPIO 引脚。GPIO 只能输出控制信号,无法直接承担电机工作电流。正确方式是让 PWM 引脚连接电机驱动模块的控制端,再由驱动模块给电机供电。占空比越高,电机获得的平均驱动能力越强,转速通常越快。
扩展应用
常见问题
PWM 实验中,常见问题集中在引脚选择、占空比范围、LED 极性、限流电阻、电机驱动和模块类型。程序没有报错但硬件无反应时,应先检查接线和实际引脚,再检查代码中的pin参数。
扩展实验
PWM 掌握后,可以继续扩展到更多控制场景。LED 呼吸灯是最基础的实验,后续可以把占空比变化与按键、传感器、ADC 采样和 AI 识别结果结合,让硬件反馈不再固定,而是根据输入状态动态变化。
总结
本篇围绕 PWM 脉宽调制完成了基础说明。PWM 通过快速切换高低电平,并改变占空比,让 LED 亮度、电机速度、蜂鸣器提示和舵机角度具备更细致的控制能力。
掌握 PWM 后,CanMV K210 就不再只是控制模块开关,而是可以控制强度、节奏、速度和状态变化。后续双色 LED 调光、蜂鸣器提示、风扇控制和舵机实验都会继续使用这套思路。