找回密码
 立即注册
查看: 169|回复: 3

怎么可以PWM固定脉宽时间 调整频率

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-05-12 14:02:03
已绑定手机

1

主题

0

回帖

9

积分

新手上路

积分
9
发表于 2025-5-12 14:02:03 | 显示全部楼层 |阅读模式
也就是改变频率的时候 脉宽时间一直不变
回复

使用道具 举报 送花

3

主题

714

回帖

139

积分

等待验证会员

积分
139
发表于 2025-5-12 14:08:00 | 显示全部楼层
在脉冲宽度调制(PWM)控制中,实现频率调整时保持固定脉宽时间(即高电平持续时间不变)是一个典型的技术需求。该问题本质上是要求在改变周期(T)的同时,保持导通时间(Ton)恒定。以下从原理分析、实现方法及注意事项三方面展开专业阐述。

一、原理分析
PWM波形由周期(T)和占空比(D)共同定义,二者满足关系:  
导通时间:Ton = D × T  
关断时间:Toff = T – Ton  

若需在调整频率(f = 1/T)时保持Ton恒定,则需满足:  
Ton = D × T = 常数  
当T变化时,占空比D必须动态调整,使得D与T成反比。例如:  
当频率加倍(T减半),占空比需加倍以维持Ton不变;  
当频率减半(T加倍),占空比需减半以维持Ton不变。  

因此,实现的核心在于动态解耦周期与占空比的耦合关系,通过独立控制二者实现目标。

二、实现方法
1. 基于定时器的硬件方案
大多数微控制器通过定时器生成PWM信号,需配置两个关键寄存器:  
自动重载寄存器(ARR):决定PWM周期(T = (ARR+1) × 定时器时钟周期);  
捕获/比较寄存器(CCR):决定导通时间(Ton = (CCR+1) × 定时器时钟周期)。  

实现步骤:  
1. 固定Ton:根据目标Ton计算CCR值,公式为:  
   \[
   \text{CCR} = \frac{Ton}{T{\text{clk}}}} - 1
   \]  
   其中,\( T{\text{clk}} \)为定时器时钟周期(由预分频器设置)。  

2. 动态调整ARR:根据目标频率计算ARR值,公式为:  
   \[
   \text{ARR} = \frac{1}{f \times T{\text{clk}}}} - 1
   \]  
   需确保ARR ≥ CCR,否则无法输出有效脉宽。  

3. 更新寄存器:在运行时修改ARR以改变频率,同时保持CCR不变。  

代码示例(通用伪代码):  
  1. c
  2. void SetPWMFrequency(float freq) {
  3.     // 计算ARR值
  4.     uint32t arr = (uint32t)(SystemCoreClock / (prescaler  freq)) - 1;
  5.     TIMx->ARR = arr;  // 更新自动重载寄存器
  6.     // 保持CCR值不变(CCR已在初始化时根据Ton设定)
  7.     // TIMx->CCR1 = fixedccr;
  8. }
复制代码

2. 动态占空比补偿算法
若硬件不支持ARR独立调整(如某些简化PWM模块),需通过软件动态计算占空比:  
\[
D = \frac{Ton}{T} = Ton \times f
\]  
每次频率变化时,重新计算D并更新CCR值:  
\[
\text{CCR} = D \times (ARR + 1) - 1
\]  
此方法需保证计算精度,避免因量化误差导致Ton波动。

三、注意事项
1. 定时器分辨率限制  
   定时器时钟频率和预分频器决定了最小时间分辨率。若目标Ton接近定时器分辨率极限,可能导致实际Ton存在误差。需通过公式验证:  
   \[
   \text{最小Ton} = T{\text{clk}} = \frac{\text{定时器时钟源频率}}{\text{预分频系数}}
   \]

2. 频率范围约束  
   频率上限受限于定时器最大计数速度(ARR最小值),下限受ARR寄存器位数限制。例如,16位ARR最大值为65535,若预分频为1且时钟为72MHz,最低频率为:  
   \[
   f{\text{min}} = \frac{72 \times 10^6}{65536} \approx 1098.9 \text{Hz}
   \]

3. 实时性与同步更新  
   修改ARR或CCR时需注意寄存器更新时机。部分定时器支持影子寄存器或缓冲写入,可避免PWM周期内突变更改导致的输出异常。

4. 占空比有效性校验  
   动态调整频率时,需确保CCR ≤ ARR。若目标频率过低(ARR过小),可能导致CCR > ARR,此时应限制频率或提示错误。

四、典型应用场景
1. 电机控制:在转速调节时维持恒定扭矩脉宽;  
2. 电源拓扑:LLC谐振变换器中固定开关管导通时间;  
3. 通信调制:脉宽编码信号(如红外遥控)的频率自适应传输。

总结
通过独立配置定时器的ARR与CCR寄存器,可实现PWM频率调整时脉宽时间恒定。设计时需综合考虑定时器分辨率、频率范围及实时性要求,必要时引入动态补偿算法。此方案适用于多数具备标准定时器外设的微控制器,具有较高的工程实用价值。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:468
  • 最近打卡:2025-06-16 07:06:57
已绑定手机

79

主题

5131

回帖

9128

积分

超级版主

DebugLab

积分
9128
发表于 2025-5-12 14:45:20 | 显示全部楼层
属于PDM(脉冲密度调制)
CCR乘以PWM输入时钟等于脉冲时间
ARR乘以PWM输入时钟等于周期时间
CCR固定,调整ARR即可
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:94
  • 最近打卡:2025-06-16 11:51:06

74

主题

6090

回帖

1万

积分

超级版主

积分
12723
发表于 2025-5-12 15:49:01 | 显示全部楼层
使用STC8H系列的高级PWM,改周期即可改频率,脉冲宽度不变。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-16 23:44 , Processed in 0.112666 second(s), 70 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表