PWM移相以及占空比可变 |
您所在的位置:网站首页 › 占比如何 › PWM移相以及占空比可变 |
在 PWM移相以及占空比可变(上) 一文中,我讲述了如何实现两路PWM输出相位差在0-180°范围内任意可调的实现逻辑,但是在后续的实验过程中,发现实现逻辑出现错误,导致PWM输出只有在固定占空比的情况下才能实现相位可调。而下文则是对于如何正确实现 PWM移相以及占空比可变 进行讲解。 注意: 本文使用的是STC8h1k08单片机进行实验。本文使用I/O口分别为 P11、P34,其中P11为通道1--CH1,P34为通道2----CH2。本文中,CH1的预装载重装值为 AAR1=2000,CH2的预装载重装值为 ARR2。本文 一、PWM的2种输出方式我们要使用 STC8H 高级定时器的PWM输出模式以及输出比较模式,其中 CH1 为 PWM 模式,CH2 为 输出比较模式。 1.1、PWM模式上图清晰的展示了PWM输出模式下 PWM 输出的基本原理,这里不在赘述,不懂的小伙伴可以自行学习。 1.2、输出比较模式输出比较模式通俗来说 是CNT = CCR时 电平会翻转。例如 你配置了 向上计数,ARR=100, CCR=30,初始电平为高电平,那么 CNT从0计数到30时, CNT =CCR =30,此时高电平就会跳变到低电平,CNT继续在30的基础上计数,直到计数到100并溢出,此时CNT会置0并重新开始计数。 值得注意的是,PWM模式与翻转模式下所输出的波形频率是相差 2倍的,即 PWM输出频率为10HZ,那么输出比较模式下的输出频率只有5HZ。如下图 这是因为 输出比较模式下不关心CNT比 CCR值大还是小,只关心CNT和CCR值什么时候相等,两个值相等时,就翻转输出电平。在PWM模式下,CNT值从0增加到ARR一个周期内输出电平有两次变化(超过CNT=CCR临界值时跳变一次,CNT溢出置零跳变一次),而在输出比较模式下时CNT值从0增加到ARR一个周期内输出电平只有一次变化。所以输出比较模式下,定时器输出方波的频率为PWM模式下定时器输出方波频率的一半。(该段内容源自--生成两路PWM波相位差90°的方法)。 那么如何使输出比较模式下输出的波形频率与PWM输出的波形频率一致呢。其实主要是如何实现在同一个ARR周期下,输出比较与PWM的电平有两次变化。这个将在下文讲解。 二、自动重装值ARR 与 移相角度关系 2.1、PWM模式移相以上图为例,我们先用PWM模式输出实现45°移相,其中ARR为2000,占空比为50%。 那么问题来了,我是如何判断或者我的逻辑是如何让他实现45°移相的呢? 其实很简单,我们把 ARR=2000 与 角度 360°一一对应起来,或者说是360°均分为 ARR 份。那么我们要移相 45°,即A点与B点相差45° ,现在要求的是 A点的CCR 与 B点 的CCR相差多少,已知B点的CCR的值 。通过计算我们很快就可以得出,A点与B点的 CCR的差值为 250,那么我们只需要在配置的时候,把两路PWM的CCR的值相差250,即可实现 45°的移相。 同理我们要实现90°的移相,那么A点与B点的CCR值应该相差多少? 通过计算 可以的到 那么只要确定其中一路的CCR, 那么另外一路CCR便可以确定。 以上是在 ARR=2000 的情况下得到的,那么ARR是其他的值的时候我们该如何求得 A点与B点的 公式如下: 其中, ARR为自动重装值,x取值为(0-180°),为你所需要的角度 。 2.2、输出比较模式移相 2.2.1、输出比较的频率问题输出比较模式相比较与PWM模式有一个需要解决的问题就是频率不一致的问题。我们需要将输出比较模式 输出的波形频率调成与 PWM模式输出的波形频率一致才可以进行下一步的移相工作。 那么我们该如何进行操作呢? 在1.2、输出比较模式 结尾我提到过,主要是如何实现在同一个ARR周期下,输出比较与PWM的电平有两次变化。 我们以 PWM模式输出的波形为基准,其中ARR1=2000,占空比为50%(即CCR1=1000)。 那么 我们假设第一个CCR2为0,即CCR2=0,那么在上电后,输出比较模式 CNT=CRR2=0,电平第一次翻转,由低电平跳变为高电平,那么我们要在 ARR1=2000 的范围内在跳变一次电平,且占空比为50%,那么显而易见,我们下一次跳变的CCR2的值应该为 CCR2=1000。那第三次跳变点应为 CCR2=2000(即0点)。如下图所示。 因此,我们在代码中,在CNT=CRR时,除了电平翻转外,还需要将下一次 电平翻转点的值装入到CCR当中。 在占空比固定位50%的情况下,不同的ARR值中,我们翻转点CCR的值也是不一样的,但是总的来说 ,只要A1、A2 的CCR间隔相差 ARR/2即可。 2.2.2、输出比较移相输出比较的移相以PWM 移相类似,只是输出比较的移相需要考虑两次比较值CCR的位置。 首先,我们仍假设通道CH1为OPWM模式下输出的PWM波形,CH为输出比较模式输出的PWM波形,CH1的ARR1 = 2000,CCR1=1000, CH2的重装载值为ARR2,第一次CCR值为 CCR2_A,第二次CCR的值为CCR2_B。 2.2.2.1、移相90°。 首先,我们要确定我们移相角度;其次,我们要确定CH1与CH2电平翻转点差值 根据公式: 我们得到 那么我们令 CCR2_A = 即得 CCR2_B = 1500。这样就可以得到 占空比为50%,相位差为90°的两路PWM。 根据公式: 则我们令 CCR2_A = 根据公式: 则我们令 CCR2_A = 其实移相就分为以下3步 计算在第二章中讲述了固定占空比情况下如何实现相位差可调,那么本章讲述的是固定相位差的情况下如何正确更改占空比。 3.1、固定相位差90°,更改占空比在2.2.2.1、移相90° 中,我们令 CCR2_A = 而现在我们需要更改占空比时,需要考虑的是 CCR2_A 与 CCR2_B 的差值,即 该值决定了我们占空比大小。 3.1.1、占空比为10%由于我们相位差为90°,因此我们的 CCR2_A = 我们要输出 10% 的占空比 ,则 PWM的高低电平比例为 1:9,由于我们在第二章假设了 CH1的 ARR1为 2000,因此,CH1高低电平时间比值为 200:1800; CH2高低电平时间也为200:1800。 那在 CH2 中 我们CCR2_A 与 CCR2_B 的差为 200,即 CCR2_B= CCR2_A+ PWM的高低电平比例为 2:8,CCR2_A = CCR2_B= CCR2_A+ PWM的高低电平比例为 3:1,CCR2_A = CCR2_B= CCR2_A+ 同 3.1、固定相位差90°,更改占空比 凡凡原理一样,保持 CCR2_A不变,改变CCR2_B的值。 3.3、固定相位差10°同 3.1、固定相位差90°,更改占空比 凡凡原理一样,保持 CCR2_A不变,改变CCR2_B的值。 以上内容即为 相位差在0-180°范围内可调,占空比可变化的实现原理。如有内容补充,将会及时优化,希望该内容可以帮助有需要的朋友。 文中如有错误,请各位指出,我将及时更正。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |