PWM 介绍

1. 占空比(Duty Cycle or Duty Ratio)

了解PWM调光原理,先得了解一下占空比概念。占空比的解释可以归纳为如下几种:1)在一串理想的脉冲序列中(如方波),正脉冲的持续时间与脉冲总周期的比值。例如:脉冲宽度1μs,信号周期4μs的脉冲序列占空比为0.252)在一段连续工作时间内脉冲占用的时间与总时间的比值。3)在周期型的现象中,现象发生的时间与总时间的比。

其实归纳一下也就是电路释放能量的有效时间与总释放时间的比。

2. 调光比

调光比则是按下面的方法计算:

Foper=工作频率;Fpwm=调光频率;

调光比率 = Foper / Fpwm,(其实也就是调光的最低有效占空比)

比如Foper=100khz;Fpwm=200Hz,则调光比为:100k/200=500;这个指标在很多驱动芯片的规格书里会说明的。

3. PWM调光

脉宽调制(PWM)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换及LED照明等许多领域中。

通过以数字方式控制模拟电路,可以大幅度降低系统的成本和功耗。此外,许多微控制器和DSP已经在芯片上包含了PWM控制器,这使数字控制的实现变得更加容易了。

简而言之,PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。

上图显示了三种不同的PWM信号。图1a是一个占空比为10%PWM输出,即在信号周期中,10%的时间通,其余90%的时间断。图1b和图1c显示的分别是占空比为50%90%PWM输出。这三种PWM输出编码的分别是强度为满度值的10%50%90%的三种不同模拟信号值。例如,假设供电电源为9V,占空比为10%,则对应的是一个幅度为0.9V的模拟信号。

3.1. PWM调光技术

下图是一个可以使用PWM进行驱动的简单电路。图中使用9V电池来给一个白炽灯泡供电。如果将连接电池和灯泡的开关闭合50ms,灯泡在这段时间中将得到9V供电。如果在下一个50ms中将开关断开,灯泡得到的供电将为0V。如果在1秒钟内将此过程重复10次,灯泡将会点亮并象连接到了一个4.5V电池(9V50%)上一样。这种情况下,占空比为50%,调制频率为10Hz

大多数负载(无论是电感性负载还是电容性负载)需要的调制频率高于10Hz。设想一下如果灯泡先接通5秒再断开5秒,然后再接通、再断开……。占空比仍然是50%,但灯泡在头5秒钟内将点亮,在下一个5秒钟内将熄灭。要让灯泡取得4.5V电压的供电效果,通断循环周期与负载对开关状态变化的响应时间相比必须足够短。要想取得调光灯(但保持点亮)的效果,必须提高调制频率。在其他PWM应用场合也有同样的要求。通常调制频率为1kHz200kHz之间。

 

### STM32 PWM功能介绍 PWM (Pulse Width Modulation, 脉冲宽度调制) 是一种用于控制功率传输的技术,在STM32微控制器中得到了广泛应用。通过改变脉冲信号的占空比来调节输出电压的有效值,从而实现对电机速度、LED亮度等多种应用场合下的精确控制[^1]。 STM32内部集成了多个定时器模块,这些定时器可以配置成PWM模式工作。每个定时器都具有独立的通道,能够同时产生多路PWM波形输出。此外,还支持多种高级特性如死区时间插入、互补输出等,适用于逆变电源、伺服控制系统等领域[^2]。 ### 使用方法概述 为了使能并配置STM32上的PWM功能,通常需要经过以下几个方面设置: #### 初始化硬件资源 - 配置GPIO引脚为复用推挽输出模式; - 选择合适的APBx时钟源及时钟分频系数; #### 定义TIMx参数 - 设置自动重装载寄存器ARR(Auto Reload Register),决定周期长度; - 设定捕获/比较寄存器CCR(Capture/Compare Register),定义高电平持续的时间比例即占空比; #### 启动PWM输出 - 开启相应定时器中断或者DMA请求(可选); - 执行启动命令让定时器开始计数进而触发PWM波形生成; 下面是一个简单的初始化代码片段展示如何开启一个基本的PWM输出: ```c // 假设使用 TIM2 CH1 PA0 输出PWM 波形 void MX_TIM2_Init(void) { __HAL_RCC_TIM2_CLK_ENABLE(); // 使能TIM2外设时钟 GPIO_InitTypeDef GPIO_InitStruct = {0}; /* 配置PA0作为TIM2_CH1 */ __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA,&GPIO_InitStruct); TIM_OC_InitTypeDef sConfigOC ={0}; htim2.Instance=TIM2; htim2.Init.Prescaler=8399;//预分频值设定 htim2.Init.CounterMode=TIM_COUNTERMODE_UP; htim2.Init.Period=999 ;// 自动重载值设定 htim2.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1; if(HAL_TIM_PWM_Init(&htim2)!=HAL_OK){ Error_Handler(); } sConfigOC.OCMode=TIM_OCMODE_PWM1; sConfigOC.Pulse=499; // 占空比50% sConfigOC.OCPolarity=TIM_OCPOLARITY_HIGH; if(HAL_TIM_PWM_ConfigChannel(&htim2,&sConfigOC,TIM_CHANNEL_1)!=HAL_OK){ Error_Handler(); } } ``` 上述程序实现了在PA0上输出频率约为1kHz、占空比为50% 的方波信号[^3].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值