单片机PWM技术详解
1、什么是PWM
PWM(Pulse Width Modulation),即脉冲宽度调制,是一种模拟电路数字控制技术。它通过改变脉冲信号的占空比(即脉冲宽度与周期的比值)来等效地获得所需的模拟量(电压或电流)输出。
2、PWM用在什么地方
1. 电机控制
2. 电源管理
3. LED照明
4. 音频处理
5. 其他应用
综上所述,PWM技术以其高效性、灵活性、稳定性和简单性等特点,在电机控制、电源管理、LED照明、音频处理以及多个其他领域得到了广泛应用。
3、PWM相关参数
周期
高低电平变化所需要的时间,单位:ms
T=1/f T是周期,f是频率。
频率
在1秒钟内,信号从高电平到低电平再回到高电平的次数,也就是说一秒钟PWM有多少个周期,单位Hz。
例如:如果频率为50Hz ,也就是说一个周期是20ms,那么一秒钟就有50次PWM周期。
占空比
在一个脉冲周期内,高电平的时间占整个周期时间的比例,单位是% (0%-100%)。
4、PWM原理
PWM的工作原理基于对脉冲的宽度和周期进行调制。下面是PWM的基本工作原理:
- 设定目标数值:首先,确定需要控制的目标数值,例如调节电机的速度或LED的亮度。这个目标数值通常以一个百分比或占空比的形式表示。
- 确定频率:选择PWM信号的频率,即脉冲的周期。频率决定了脉冲的重复速率,通常以赫兹(Hz)表示。常见的频率范围是几百赫兹到几十千赫兹。
- 计算占空比:根据目标数值和所选频率,计算所需的占空比。占空比表示高电平时间占周期的比例。例如,如果目标是50%的亮度或速度,则占空比为50%。
- 生成PWM信号:使用计时器和计数器来生成PWM信号。计时器根据所选频率生成一个固定周期的计时事件,并从0开始计数。计数器在每个计时事件中递增,当计数值小于占空比所对应的计数阈值时,输出为高电平;否则,输出为低电平。
- 输出控制:根据计数器的值,控制输出引脚的电平状态。在计数值小于阈值时,输出为高电平;在计数值大于等于阈值时,输出为低电平。这样就形成了一系列固定周期、宽度可变的脉冲信号。
通过调整占空比,可以控制输出信号的平均电压或功率。占空比越高,输出信号的平均电压或功率就越高,而占空比越低,输出信号的平均电压或功率就越低。
使用PWM,可以实现精确的控制,例如精确调节电机的速度或改变LED的亮度级别。PWM技术的优点包括高效率、精度高以及对输出设备影响小等。
5、PWM实现
软件实现:
通常利用定时器中断来翻转GPIO(通用输入输出)引脚的电平,从而模拟出PWM波形。在指定计时周期内,通过调整高电平和低电平的时间比例,即占空比,来控制PWM信号。
灵活但是不精确。
硬件实现:
在硬件层面,通过配置特定的寄存器来设置PWM的参数,如频率、占空比等。一旦配置完成,硬件电路将自动产生PWM信号,无需CPU的实时干预。
相关函数:HAL_TIM_PWM_Start,开始PWM波输出
__HAL_TIM_SET_PRESCALER,设置STM32定时器的预分频器值
__HAL_TIM_SET_CLOCKDIVISION,设置定时器(TIM)的时钟分频
__HAL_TIM_SET_AUTORELOAD,设置自动重载值
__HAL_TIM_SET_COMPARE,设置比较寄存器的值
HAL_TIM_PWM_Stop,关闭
\0、关于定时器通道
在STM32微控制器中,定时器通道(Timer Channels)是定时器功能的一个重要组成部分,它们允许定时器执行多种任务,如生成PWM(脉冲宽度调制)信号、测量输入信号的频率或时间、以及触发中断或DMA请求等。
每个定时器通道都关联着一个捕获/比较寄存器(Capture/Compare Register, CCR),这些寄存器用于存储与通道相关的值,这些值可以是用于PWM生成的占空比、用于输入捕获的时间戳、或者是用于输出比较的比较值。
STM32的定时器通常具有多个通道,具体数量取决于定时器的类型。例如,高级定时器(如TIM1和TIM8在某些STM32系列中)通常具有四个捕获/比较通道(CC1、CC2、CC3、CC4),而通用定时器(如TIM2至TIM5)也通常具有四个通道,但某些基本定时器可能只有两个或更少的通道。
定时器通道的主要功能包括:
-
PWM生成:通过将定时器配置为PWM模式,并使用捕获/比较寄存器设置PWM信号的占空比,可以生成具有可变宽度的脉冲信号。这对于控制电机速度、LED亮度等应用非常有用。
-
输入捕获:定时器通道还可以配置为输入捕获模式,以测量外部信号的频率或时间。当外部信号达到特定条件(如上升沿、下降沿或两者)时,定时器会捕获当前的时间戳,并将其存储在捕获/比较寄存器中。
-
输出比较:在输出比较模式下,定时器通道会将捕获/比较寄存器的值与定时器的计数值进行比较。当两者相等时,可以触发中断、DMA请求或改变定时器的输出状态(如翻转输出引脚的状态)。
-
单脉冲模式:某些定时器还支持单脉冲模式,该模式允许定时器生成一个宽度可调的单个脉冲信号。这通常通过配置定时器的自动重载寄存器(ARR)和捕获/比较寄存器(CCR)来实现。
-
触发功能:定时器通道还可以用作其他定时器的触发源,或者用于触发外部设备(如ADC转换器)的采样操作。
在使用定时器通道时,你需要通过STM32的HAL库或寄存器直接操作来配置定时器的模式和通道的参数。这包括选择定时器的工作模式(如PWM模式、输入捕获模式等)、设置捕获/比较寄存器的值、配置中断和DMA请求等。
作者:细水长流煮红豆{