pwm

PWM简介

PWM(Pulse Width Modulation,脉冲宽度调制)是一种常用的数字信号调制技术,通过改变脉冲波形的占空比(即高电平时间相对于整个周期的比例)来模拟或控制模拟量输出,如电压、电流、亮度、速度等。在STM32微控制器中,PWM功能通常由定时器模块提供,可以用于电机控制、LED调光、电源管理、音频调制等多种应用场景。以下是关于STM32 PWM的基本概念、工作原理、功能特性、应用示例以及编程配置的详细介绍。

基本概念与工作原理

占空比:PWM信号的占空比定义为其高电平时间与整个周期时间之比。例如,占空比为50%意味着在一个周期内,高电平持续时间为总周期的一半,低电平持续时间也为一半。

频率:PWM信号的频率是指单位时间内脉冲重复的次数,决定了PWM信号的周期长度。对于电机控制等应用,频率的选择应考虑系统的机械共振特性及电磁兼容性等因素。

方波输出:典型的PWM信号是一个矩形波,其波形由一系列等幅的高电平和低电平组成,通过改变高电平的持续时间(占空比)来表示不同的模拟值。

数字到模拟转换:尽管PWM信号本质上是数字的(只有高低两种电平),但当其输出到一个电容或电感负载(如电机绕组、LED灯珠等)时,由于负载的滤波效应,平均电压或电流近似等于占空比乘以电源电压,从而实现了数字信号到模拟信号的转换。

STM32 PWM功能特性

STM32微控制器的PWM功能通常由定时器模块提供,具有以下主要特点:

  • 多种定时器类型:STM32包含通用定时器、高级定时器、基本定时器等,不同类型的定时器支持的PWM通道数量、特性略有差异。

  • 多路输出:每个定时器可生成多个独立的PWM信号,每个通道对应一路PWM输出。

  • 灵活的占空比设置:通过设置定时器的比较寄存器(Capture/Compare Register,CCR)的值,可以精确控制PWM信号的占空比。

  • 可编程频率:通过设置定时器的预分频器(Prescaler)和自动重载值(Auto Reload Register,ARR),可以设定PWM信号的频率。

  • 互补输出:某些定时器通道支持互补输出(例如CH1与CH1N),便于驱动H桥电路等。

  • 死区时间:对于电机控制等应用,可以设置PWM通道间的死区时间,避免上下桥臂直通导致的短路风险。

  • 刹车功能:部分高级定时器支持PWM刹车模式,用于快速停止电机等负载。

应用示例

  • 电机控制:通过改变PWM信号的占空比,控制直流电机、步进电机或无刷电机的速度和方向。
  • LED调光:调节LED灯的亮度,通过改变PWM信号占空比实现亮度的无级调节。
  • 电源管理:用于开关电源、电池充电系统中的电压或电流控制。
  • 音频调制:在某些低成本音响设备中,PWM可用于简单地生成音频信号。
  • 加热、风扇控制:调整加热元件功率或风扇转速,实现恒温控制或风速调节。

编程与配置

在STM32中配置和使用PWM功能,一般涉及以下步骤:

  1. 时钟使能:通过RCC寄存器或库函数开启相关定时器的时钟源。

  2. GPIO配置:将定时器对应的PWM输出引脚配置为复用推挽输出模式,并连接到相应的定时器通道。

  3. 定时器初始化:设置定时器的工作模式为PWM模式,配置预分频器、自动重载值(ARR)以确定PWM频率,选择适当的时钟源。

  4. PWM通道配置:设置比较寄存器(CCR)的初始值以设定初始占空比,配置通道 polarity(极性,高电平有效还是低电平有效)、输出模式(如互补输出、刹车功能等)、死区时间(如有必要)。

  5. 启动PWM:使能定时器和选定的PWM通道,开始产生PWM信号。

  6. 占空比动态调整:在运行过程中,可以通过修改比较寄存器(CCR)的值来动态改变PWM信号的占空比。

注意事项

  • 电气隔离:在某些应用中,如电机控制,可能需要考虑电气隔离以保护MCU免受高电压或电流影响。
  • 散热管理:高占空比或大电流PWM输出可能导致发热,需注意散热设计。
  • 频率选择:PWM频率应考虑负载特性和EMI(电磁干扰)限制,过低可能导致可见闪烁,过高可能增加功耗和电磁干扰。

示例代码