PWM脉宽调制技术在控制领域中是非常常用的技术,电机控制、电源控制等都是通过PWM进行驱动IGBT或MOSFET等开关器件进行相关控制的。
目前所在公司的项目中需要用到PWM驱动功率放大电路,用以控制电流输出,同时也是通过EPWM触发ADC进行采样电流,故此进行学习总结。
本次总结主要有以下内容:
1、PWM波的产生过程;
2、如何触发ADC?
本次总结的内容比较简单,主要是总结一下之前简单使用的内容,还有一些比如占空比的PID控制,动作事件的优先级,为什么要产生死区,TZ模块的具体应用等后续有时间可以进行补充。
EPWM模块的时钟特地去看了一下,因为之前写过一篇文章:关于使用DSP28335的ADC模块采样电流出现无法采样数据的问题,触发ADC的时候查找问题就查到时钟这里。
时钟原理图如下Figure5所示.时基模块工作需要时钟信号,对系统时钟的分频得到时基时钟(红圈1)进行设置,主要是通过时基控制寄存器(TBCTL)的高速时基时钟分频位 HSPCLKDIV[9:7] 和时基时钟分频位 CLKDIV[12:10] 进行分频设置,通常设置为1分频,即时基时钟为系统时钟。
TBCLK = SYSCLKOUT / (HSPCLKDIV * CLKDIV)
// 设置TBCLK
EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0x0U;
EPwm1Regs.TBCTL.bit.CLKDIV = 0x0U;
TBCLK时基时钟是否使能,EPWM模块时钟是否使能(如下图Figure1),对TBCLK时基时钟以及使用的EPWM1模块时钟进行使能,在程序中(DSP2833x_SysCtrl.c中)置1,具体程序如下所示:
SysCtrlRegs.PCLKCR1.bit.EPWM1ENCLK = 1; // ePWM1
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; // Enable TBCLK within the ePWM
DSP28335共有18路PWM,6组 * 2 EPWM(A、B)+ 6路APWM ,每组EPWM包括7个模块,时基模块TB、比较计数模块CC、动作模块AQ、死区模块DB、斩波模块DC、事件触发模块ET、错误联防模块TZ。具体如下图Figure2所示:
各模块作用如下所示:
PWM产生的三种模式分别为:up模式、down模式、up-down模式
PWM产生的本质是信号通过与载波比较,根据设置输出高低电平,占空比由一个周期内高电平的时间决定。在实际实现上,载波通过计数器计数得到,其周期值TBPRD即为载波计数最大值(峰值),信号是根据具体需求经过PI控制器输出得到,与载波进行比较后产生相应占空比。比如up-down模式如下图1-2-1所示。
1、up和down模式是向上计数和向下计数,其周期和频率的计算公式一致,为:
Tpwm = (TBPRD+1)* t_TBCLK,Fpwm= 1 / Tpwm
2、up-down模式是先向上计数后向下计数,其周期和频率的计算公式为:
Tpwm = 2 * TBPRD*t_TBCLK,Fpwm= 1 / Tpwm
在实际开发中,一般选用up-down模式,较前两种模式优势在于增长平滑,无较大突变,更适合实际应用。
实际设置PWM的频率为10KHz,TBCLK为150MHz,则可计算出周期为:
PRD = 150 000 000 / (10 000 * 2)= 7500
计数比较模块主要是通过时基计数的值与比较寄存器CMPA、CMPB进行比较,比如图1-2-1的值3900设置为CMPA的值,根据设置,当计数值大于或小于CMPA的值,AQ进行相应动作(置高或置低),就能得到相应占空比的PWM波。
比较主要有四种情况:
1、TBCTR = CMPA,PWM根据AQ动作;
2、TBCTR = CMPB,PWM根据AQ动作;
3、TBCTR = PRD,PWM根据AQ动作;
4、TBCTR = 0,PWM根据AQ动作;
注意:up或down模式只比较一次,而up-down模式比较两次。
实际过程中,比较的这个值时不断变化的,根据具体需求(参考值)通过PID控制器在不断调整,输出不同占空比的PWM,达到控制的目的。
动作模块AQ根据动作模块寄存器AQCTLA、AQCTLB的设置对比较事件进行动作,主要有四种动作模式:
1、不动作
2、置低
3、置高
4、翻转
动作模块事件优先级
不同模式下的动作事件是有优先级的,up-down模式在向上计数和向下计数的过程中,事件优先级不一样。所有模式下,软件强制事件的优先级最高。
至此,PWM的产生基本得到解答。具体是:
1、设置TBCLK时钟以及模块时钟使能;
2、选择up-down模式,确定频率,得到周期值;
3、确定比较事件以及动作模式,决定PWM的占空比,即可得到PWM波。
触发ADC的事件主要涉及到PWM模块的事件触发模块ET,根据时基模块和计数比较模块输入的比较事件以及CTR_Dir时基计数方向产生相应事件,设置事件触发选择寄存器ETSEL,选择触发ADC启动转换或进行中断请求。
ADC启动转换触发信号为EPWMxSOCA和EPWMxSOCB,根据ADC的设置选择某个信号或两个信号。
触发ADC启动转换的具体设置为:
1、设置哪种触发事件,
TBCTR = CMPA
TBCTR = CMPB
TBCTR = PRD
TBCTR = 0
2、什么事件模式下情况触发
每个事件、每2个事件、每3个事件,一般是设置为每个事件触发ADC启动转换。
1、PID控制输出比较值
2、死区模块
3、TZ模块
4、斩波模块
简单总结了两个问题,其他问题待后续再进行补充。