回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【花雕动手做】CanMV K230 AI视觉识别模块之使用GPIO接口输出PWM信号 简单

头像 驴友花雕 2025.11.03 2 0

00 (3).jpg

 

什么是 CanMV K230?
CanMV K230是一款高性价比的RISC-V边缘AI平台,凭借低功耗、强视觉处理能力和开放的开发生态,成为嵌入式AI开发的理想选择,尤其适合需要快速部署视觉与AI功能的创客、中小企业及教育场景。CanMV 是一套 AI 视觉开发平台,K230 是其核心芯片。该模块结合了图像采集、AI推理、边缘计算等能力,适合嵌入式视觉应用开发。

CanMV:类似 OpenMV 的图像处理框架,支持 Python 编程,简化视觉识别开发流程。
K230 芯片:嘉楠科技推出的 AIoT SoC,采用 RISC-V 架构,内置第三代 KPU(AI加速单元),算力高达 6 TOPS,性能是 K210 的 13.7 倍。

 

00 (4).jpg

什么是PWM信号
PWM(Pulse-width modulation)是脉冲宽度调制的缩写。脉冲宽度调制是一种模拟信号电平数字编码方法。脉冲宽度调制PWM是通过将有效的电信号分散成离散形式从而来降低电信号所传递的平均功率的一种方式。所以根据面积等效法则,可以通过对改变脉冲的时间宽度,来等效的获得所需要合成的相应幅值和频率的波形。PWM信号是通过调节占空比的变化来调节信号、能量等的变化。

PWM信号的基本概念
PWM信号是一种周期性方波,其特点是在一个周期内,高电平(脉冲宽度)的时间比例可以变化。占空比是高电平时间与整个周期时间的比例,范围为0%到100%。例如,周期为10ms,脉宽时间为8ms,占空比为80%。

PWM信号的工作原理
PWM信号通过改变脉冲的占空比来模拟不同的电压或功率级别。在一个周期内,高电平时间越长,平均电压越高。通过调节占空比,可以实现对输出功率的精确控制。例如,5V电源下,50%占空比对应2.5V平均电压,80%占空比对应4V平均电压。

PWM信号的关键参数
频率:每秒钟内脉冲周期重复的次数,单位为Hz。频率越高,脉冲变化越快,设备响应更平滑。
周期:一个脉冲信号的时间,T=1/f。
占空比:高电平时间占整个周期的百分比。

PWM信号的应用场景
PWM信号广泛应用于电机调速、LED调光、电源控制、信号传输等领域。其高效、精确的控制能力使其在现代电子设备中不可或缺。

PWM信号与模拟控制的比较
PWM信号是一种数字信号,通过高低电平表示,只有两种离散取值。而模拟信号是连续变化的,可以表示为各种波形。PWM信号在抗干扰能力、控制精度和数字化实现方面具有优势。

总结
PWM信号通过调整脉冲宽度来实现对电子设备的精确控制,具有高效、灵活的特点。其在现代电子技术中的广泛应用使其成为一种重要的控制手段。
通过对多个来源的信息分析,可以确认上述关于PWM信号的基本概念和应用的信息是准确且一致的。

 

14.jpg
15.jpg

接线
由于PWM信号无法直观看到,需要借助示波器来查看,请自备示波器。

将示波器的通道1连接IO42,通道2连接IO43,GND接地。

 

16.jpg

项目测试实验代码

代码
#【花雕动手做】CanMV K230 AI视觉识别模块之使用GPIO接口输出PWM信号
# 项目功能:演示如何在K230上使用PWM模块生成脉冲宽度调制信号

# 从machine模块导入PWM类
# PWM类用于生成脉冲宽度调制信号,控制电机、LED亮度等
from machine import PWM

# 导入时间模块,用于延时操作
import time


# 实例化PWM通道0,使用GPIO引脚42
# 参数说明:
# - 42: 使用的GPIO引脚编号
# - freq=1000: 设置PWM频率为1000Hz (1kHz)
# - duty=50: 设置初始占空比为50% (高电平时间占整个周期的50%)
# 注意:实例化后PWM默认开始输出
pwm0 = PWM(42, freq=1000, duty=50)
# 功能:在GPIO 42引脚上生成1kHz频率、50%占空比的方波信号


# 实例化PWM通道1,使用GPIO引脚43
# 参数与通道0相同:频率1000Hz,初始占空比50%
pwm1 = PWM(43, freq=1000, duty=50)

# 立即将通道1的占空比设置为0%(停止输出)
# duty()方法用于动态调整占空比
# 参数0表示0%占空比,输出持续低电平
pwm1.duty(0)
# 应用场景:安全初始化,确保某些设备在初始化时不立即工作


# 调整通道1的频率为1000Hz
# freq()方法用于动态调整PWM频率
# 这里虽然频率与初始化时相同,但演示了如何修改频率
# 频率范围通常取决于硬件平台,常见范围从几Hz到几十MHz
pwm1.freq(1000)

# 调整通道1的占空比为80%
# 将占空比从0%调整为80%,即高电平时间占整个周期的80%
pwm1.duty(80)
# 效果:如果连接LED,亮度会变为较亮状态
# 如果连接电机,转速会达到较高速度


# 创建无限循环,阻止程序退出
# 保持PWM信号持续输出
while True:
    time.sleep(1)  # 每次循环休眠1秒,减少CPU占用
    

# === PWM技术要点说明 ===
# 1. 占空比 (Duty Cycle): 
#    - 0%: 持续低电平
#    - 50%: 高低电平各占一半时间
#    - 100%: 持续高电平
#
# 2. 频率选择考虑:
#    - LED调光: 通常100Hz-1kHz (避免人眼看到闪烁)
#    - 电机控制: 根据电机特性选择,通常几kHz到几十kHz
#    - 舵机控制: 通常50Hz (周期20ms)
#
# 3. 硬件限制:
#    - 不同平台的PWM通道数和精度可能不同
#    - 频率和占空比可能有最小/最大值限制
#
# 4. 应用场景:
#    - LED亮度调节
#    - 直流电机速度控制
#    - 舵机角度控制
#    - 蜂鸣器音调生成
#    - 模拟信号生成(配合滤波电路)

代码执行流程总结:
1. 初始化阶段:
◦ 配置PWM0:引脚42,1kHz,50%占空比
◦ 配置PWM1:引脚43,1kHz,50%占空比 → 立即改为0%占空比
2. 运行阶段:
◦ 调整PWM1频率为1kHz(保持不变)
◦ 调整PWM1占空比为80%
◦ 进入主循环,保持PWM信号输出
3. 信号输出状态:
◦ PWM0:持续输出1kHz、50%占空比的方波
◦ PWM1:持续输出1kHz、80%占空比的方波
硬件连接建议:
• 可连接LED和限流电阻到PWM引脚,观察亮度变化
• 可使用示波器或逻辑分析仪观察实际的PWM波形
• 注意GPIO引脚的驱动能力,大电流设备需要额外驱动电路
这个示例展示了PWM的基本操作方法,包括初始化、参数调整和持续运行控制。


在察示波器上的电平信号。如下图所示:
 

17.jpg

评论

user-avatar
icon 他的勋章
    展开更多