产生三相任意相位差和任意相同占空比的PWM波形

本文详细阐述了如何利用两个定时器和小循环周期机制来控制PWM波形,包括相位差对定时器周期的影响,以及占空比如何决定输出比较值。通过英飞凌TLE9871和CCU6的具体实例,展示了错误设置和纠正过程。最后提出一个问题:如何处理非整数相位差情况。
摘要由CSDN通过智能技术生成

整体思路

将整个PWM周期分为若干个小循环周期。划分的目的就是在任意小循环周期中,任何一相都不会发生0 --> 1 --> 0或1 --> 0 --> 1   电平变化超过两次的情况。

至少需要两个定时器,一个通用/高级定时器具有输出比较功能,另一个基本定时器负责在固定的时间(每个小循环周期结束后)修改输出比较值和极性。

具体实现过程

波形相位差决定输出比较定时器和另一个定时器的计时周期。两个周期时间要设置一致。

一般相位差的倍数N是360度。

定时器的周期就是 相位差 / 360 * 整个PWM周期    分为倍数N个小循环周期

占空比决定输出比较通道各个循环周期的比较值和极性。

在N个小循环周期中,不改极性(极性可设为低于比较值输出1,高于比较值输出0),设置特定的比较值(或者改变极性,设置特定的比较值)。

改变比较值/极性一般是影子寄存器起作用,改完后要保证比较值和极性可以生效。

占空比的时间如果小于小循环周期时间

例如有3个小循环周期(极性如上)

         CCR1     CCR2     CCR3

CH1:    X            0            0

CH2:    0            X            0

CH3:    0            0            X

占空比时间大于小循环周期时间(特别计算)

例如有3个小循环周期(极性如上)

         CCR1     CCR2     CCR3

CH1:    X1          X2         X3

CH2:    X3          X1         X2

CH3:    X2          X3         X1

实例

用英飞凌TLE9871产生频率为10kHz,相位差为120度,频率为1Hz,占空比为10%的波形。(使用CCU6产生波形) 

错误方案

由于前期也没画图,想当然的写了一下程序,后面感觉不对,又改了一下,又整理了解决这类问题的思路。

英飞凌插件设置

GPT1_timer3中断处理函数

纠正方案

GPT1_timer3中断处理函数 

给大家留个问题:如果相位差 * 整数不等于360度,产生三相任意相位差和任意相同占空比的PWM波形,应该怎么得到呢?

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值