增强型PWM波形发生器能够组合输出比较复杂的波形,满足特殊场合的实际应用,在解决死区控制和相位延迟控制等方面应用广泛。
【例10-7】 利用增强型PWM波形发生器产生一个如图10-11所示的重复的PWM波形:波形由PWM通道4输出,周期为20个PWM时钟,占空比为1/3,有4个PWM时钟的相位延时。
图10-11 重复输出的PWM波形
依据题意,使用PWM4输出周期性波形。由于增强型PWM的控制寄存器大多是16位地址,分布在扩展XSFR区域,需要使用DPTR指针间接寻址访问这些寄存器。程序设计步骤如下:
1)设置访问扩展XSFR区,需要对P_SW2寄存器的EAXSFR位置1。
2)配置PWM4初始输出状态为低电平。
3)配置PWM时钟,选择SELT2=0,PWM时钟=系统时钟/(PS[3:0]+1)。
4)设置PWM计数器从00开始计数,最大计数到0019。
5)设置PWM4第1次翻转计数器为0003,第2次翻转计数器为0016。
6)设置PWM4生成的波形从P2.2引脚输出,禁止PWM4中断。
7)关闭扩展的XSFR区,启动PWM开始计数,PWM4开始输出波形。
程序设计如下:
【10-8】 利用增强型PWM波形发生器产生如图10-12所示的2路互补对称输出的PWM波形:波形由PWM通道4和通道5输出,周期为20个PWM时钟,通道5的有效低电平为10个PWM时钟,通道4和通道5前端死区为2个PWM时钟,末端死区为1个PWM时钟。
图10-12 互补对称输出的PWM波形
依据题意,使用PWM4和PWM5输出互补对称周期性波形。增强型PWM的控制寄存器分布在扩展XSFR区域,需要使用DPTR指针间接寻址访问这些寄存器。程序设计步骤如下:
1)设置访问扩展XSFR区,需要对P_SW2寄存器的EAXSFR位置1。
2)配置PWM4初始输出状态为低电平,PWM5初始输出状态为高电平。
3)配置PWM时钟,选择SELT2=0,PWM时钟=系统时钟/(PS[3:0]+1)。
4)设置PWM计数器从00开始计数,最大计数到0019。
5)设置PWM4第1次翻转计数器为0003,第2次翻转计数器为0016。
6)设置PWM5第1次翻转计数器为0003,第2次翻转计数器为0015。(www.xing528.com)
7)设置PWM4生成的波形从P2.2引脚输出,禁止PWM4中断。
8)设置PWM5生成的波形从P2.3引脚输出,禁止PWM5中断。
9)关闭扩展的XSFR区,启动PWM开始计数,PWM4、PWM5开始输出波形。
程序设计如下:
SPWM是使用PWM来获得正弦波输出效果的一种技术,SPWM是一门专门的学科,在交流驱动或变频器设计领域应用广泛。
STC15W4K32S4单片机内带的6通道PWM,每路的结构相同,都包含一个15位的、对I/O口输出信号进行翻转的计数寄存器PWMnT1和PWMnT2(n=2~7);各路PWM频率相同,输出的占空比独立可调节,并且输出始终保持同步,输出相位可任意设置。这些特性使得STC15单片机能够很方便地设计输出SPWM波形,而且可方便调节死区时间。对于桥式驱动电路,死区时间非常重要,只是STC15单片机现在还没有专门的死区控制寄存器,只能通过设置PWM占空比参数来实现死区控制。
【例10-9】 利用增强型PWM波形发生器产生如图10-13所示的2路互补SPWM波形输出:波形由PWM通道3和通道4输出单相SPWM,用于驱动由MOSFET构成的半桥式电路,两路PWM的翻转时刻相差12个时钟,以便解决桥式或半桥式死区驱动问题。
依据题意:假设系统时钟fsys=24MHz,PWM周期为2400,正弦表幅度为2300,往上偏移60个时钟,方便过0中断重新装载数据,正弦采样200点,则输出正弦波频率=24MHz/(2400×200)。
1)SPWM实现原理:使用PWM3和PWM4输出互补SPWM波形,对应的翻转寄存器是PWM3T1、PWM3T2和PWM4T1、PWM4T2。当内部计数器的值与某个翻转寄存器的值相等时,就对相应的输出I/O口取反。本例中,PWM3从P2.1输出,初始状态为低电平,PWM4从P2.2输出,初始状态为高电平。翻转寄存器的初值设置为PWM3T1=65,PWM3T2=800,PWM4T1=53,PWM4T2=812。当内部计数器计数等于PWM4T1=53时,P2.2由高输出低,再计数到等于PWM3T1=65时,P2.1由低输出高,再计数到等于PWM3T2=800时,P2.1由高输出低,再计数到等于PWM4T2=812时,P2.2由低输出高。
图10-13 互补输出的SPWM波形
2)死区时间说明:如图10-14所示。P2.2输出低电平后,经过12个时钟,P2.1输出高电平。P2.1输出低电平后,经过12个时钟,P2.2输出高电平。若fsys=24MHz,12个时钟对应0.5μs,这12个时钟就是死区时间。假设P2.1驱动半桥电路的下臂,P2.2驱动上臂,则当P2.2输出低电平后,上臂开始关闭,经过0.5μs,等待上臂完全关闭后,才让P2.1输出高电平、打开下臂。当P2.1输出低电平后,下臂开始关闭,经过0.5μs,等待下臂完全关闭后,才让P2.2输出高电平、打开上臂。这样,死区时间的设置,可以避免上臂、下臂同时打开造成MOSFET管烧毁。因为MOSFET管打开很快,关闭时很慢,需要一段时间才能关闭,所以要设置调节好死区时间。死区时间一般设置在6~24个时钟。
图10-14 输出PWM波形死区说明
如果使用示波器观察P2.1、P2.2输出的波形时,需要经过RC低通滤波后再接到示波器,才能看到2个反相的正弦波。
3)归零中断触发:内部15位的PWM计数器一旦启动计数,就会从0开始在每个PWM时钟到来时加1,其值线性上升。当计数器计到与15位的周期设置寄存器(PWMCH、PWMCL)相等时,对应图10-13中的斜线A到B,内部PWM计数器归零,并产生中断,称为归零中断。本例中周期为2400,即内部计数器计到2399时,再计一个时钟就归零。以下是参考程序设计:
以上是使用2路PWM产生互补单相SPWM的演示程序,输出频率固定,用PWM3从P2.1引脚输出正相脉冲,用PWM4从P2.4引脚输出反相互补脉冲,读者可以通过上面的计算方法修改PWM周期、正弦波的点数和幅度值。如果需要同相输出,则在初始化时对PWMCFG寄存器的PWM4的输出口设置初始电平为0或1。如果需要三相SPWM,则用相同方法设置另外4路PWM,相位差120°。如果需要变频,请自行设计变频方案。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。