世纪电源网社区logo
社区
Datasheet
标题
返回顶部
未解决

移相DC-DC的移相问题

[复制链接]
查看: 2493 |回复: 7
1
宋小祥
  • 积分:121
  • |
  • 主题:1
  • |
  • 帖子:4
积分:121
LV2
本网技师
  • 2019-7-7 10:52:57
10问答币
希望各位大牛看到能够给我解答一下。研一开题想做双向全桥DC-DC,在做单移相的时候DSP输出的驱动信号正常,虽然期间也有一些硬件问题,但好歹解决了一些,但现在我遇到了问题,改了几天都不行。
在双移相或者三移相的时候,DSP输出的驱动始终对不上,要么就是只移一个,始终无法输出三个相对移相的驱动。下面是程序,也已修改过时基里的参数,就是不行。下面附上驱动程序。
void InitEPwm1Example()
{
   // Setup TBCLK
   EPwm1Regs.TBPRD = 3000;           // Set timer period
   EPwm1Regs.TBPHS.half.TBPHS = 0; // Set Phase register to zero
   EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Symmetrical mode
   EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Master module
   EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
   EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; // Sync down-stream module
   EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
   EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
   EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // load on CTR=Zero
   EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // load on CTR=Zero
   EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // set actions for EPWM1A
   EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;
   EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; // enable Dead-band module
   EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;      // Active Hi complementary
   EPwm1Regs.DBFED = 300;
   EPwm1Regs.DBRED = 300;
   // Interrupt where we will change the Compare Values
   EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;     // Select INT on Zero event
   EPwm1Regs.ETSEL.bit.INTEN = 1;                // Enable INT
   EPwm1Regs.ETPS.bit.INTPRD = ET_1ST;           // Generate INT on 1st event
}
void InitEPwm2Example()
{
   EPwm2Regs.TBPRD = 3000;           // Set timer period
   EPwm2Regs.TBPHS.half.TBPHS = 800; // Phase = 300/900 * 360 = 120 deg
   EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Symmetrical mode
   EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE; // Slave module
   EPwm2Regs.TBCTL.bit.PHSDIR = TB_UP; // Count DOWN on sync (=120 deg)
   EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;
   EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; // sync flow-through
   EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
   EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
   EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // load on CTR=Zero
   EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // load on CTR=Zero
   EPwm2Regs.AQCTLA.bit.CAU = AQ_SET; // set actions for EPWM2A
   EPwm2Regs.AQCTLA.bit.CAD = AQ_CLEAR;
   EPwm2Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; // enable Dead-band module
   EPwm2Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; // Active Hi Complementary
   EPwm2Regs.DBFED = 300;
   EPwm2Regs.DBRED = 300;
   // Interrupt where we will change the Compare Values
   EPwm2Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;        // Select INT on Zero event
   EPwm2Regs.ETSEL.bit.INTEN = 1;                   // Enable INT
   EPwm2Regs.ETPS.bit.INTPRD = ET_1ST;              // Generate INT on 1st event
}
void InitEPwm3Example(void)
{
   // Setup TBCLK
   EPwm3Regs.TBPRD = 3000;           // Set timer period
   EPwm3Regs.TBPHS.half.TBPHS = 300; // Phase = 300/900 * 360 = 120 deg
   EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Symmetrical mode
   EPwm3Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Slave module
   EPwm2Regs.TBCTL.bit.PHSDIR = TB_UP; // Count UP on sync (=240 deg)
   EPwm3Regs.TBCTL.bit.PRDLD = TB_SHADOW;
   EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; // sync flow-through
   EPwm3Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
   EPwm3Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
   EPwm3Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // load on CTR=Zero
   EPwm3Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // load on CTR=Zero
   EPwm3Regs.AQCTLA.bit.CAU = AQ_SET; // set actions for EPWM3Ai
   EPwm3Regs.AQCTLA.bit.CAD = AQ_CLEAR;
   EPwm3Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; // enable Dead-band module
   EPwm3Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; // Active Hi complementary
   EPwm3Regs.DBFED = 300;
   EPwm3Regs.DBRED = 300;
   // Interrupt where we will change the Compare Values
   EPwm3Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;     // Select INT on Zero event
   EPwm3Regs.ETSEL.bit.INTEN = 1;                // Enable INT
   EPwm3Regs.ETPS.bit.INTPRD = ET_1ST;           // Generate INT on 1st event
}

收藏收藏1
zhoubest
  • 积分:2234
  • |
  • 主题:0
  • |
  • 帖子:28
积分:2234
LV8
副总工程师
  • 2019-7-7 11:01:58
  • 倒数7
 
先看懂硬件实现,再写软件
厚劲薄发
  • 积分:3924
  • |
  • 主题:163
  • |
  • 帖子:947
积分:3924
LV8
副总工程师
  • 2019-7-10 13:20:39
  • 倒数6
 
建议先仿真,你写个代码在这,很少有人有时间帮你去研究。再说,还得看得懂代码才行。
guinan1688
  • 积分:1957
  • |
  • 主题:21
  • |
  • 帖子:498
积分:1957
LV6
高级工程师
  • 2019-7-13 15:47:37
  • 倒数5
 
看不懂
westbrook
  • 积分:8190
  • |
  • 主题:13
  • |
  • 帖子:1304
积分:8190
LV8
副总工程师
  • 2019-8-8 08:51:00
  • 倒数4
 
看这个PWM初始化部分要对着手册一个一个的看,很少有人有这个时间来帮你做这个事情。
电力电子哈哈
  • 积分:121
  • |
  • 主题:0
  • |
  • 帖子:1
积分:121
LV2
本网技师
  • 2021-10-18 17:14:26
  • 倒数3
 
PWM1要设置成不同步,并发出同步脉冲给PWM2 PWM3 这样设置Phase移相才有用。
ruohan
  • ruohan
  • 离线
  • LV8
  • 副总工程师
  • 积分:7543
  • |
  • 主题:21
  • |
  • 帖子:1109
积分:7543
LV8
副总工程师
  • 2021-10-21 17:56:03
  • 倒数2
 
用的哪款DSP啊

flymaco
  • 积分:2688
  • |
  • 主题:4
  • |
  • 帖子:46
积分:2688
LV8
副总工程师
最新回复
  • 2021-11-24 11:05:56
  • 倒数1
 
...
EPwm1Regs.TBPHS.half.TBPHS = 0; // Set Phase register to zero
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Master module
...

...
EPwm2Regs.TBPHS.half.TBPHS = 800; // Phase = 300/900 * 360 = 120 deg
EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE; // Slave module
EPwm2Regs.TBCTL.bit.PHSDIR = TB_UP; // Count DOWN on sync (=120 deg)
...

...
EPwm3Regs.TBPHS.half.TBPHS = 300; // Phase = 300/900 * 360 = 120 deg
   EPwm3Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Slave module(这里应该得配置成跟PWM2一样?,disable就没有相移了(一般基准也就是此处的epwm1可以配置成disable,其他要相对epwm1超前或滞后配置PHSDIR))
   EPwm2Regs.TBCTL.bit.PHSDIR = TB_UP; // Count UP on sync (=240 deg)(这里应该是要改为EPWM3?TB_UP应该是超前基准epwm1的意思)
.....

建议lz好好查看datasheet
热门技术、经典电源设计资源推荐

世纪电源网总部

地 址:天津市南开区黄河道大通大厦8层

电 话:400-022-5587

传 真:(022)27690960

邮 编:300110

E-mail:21dy#21dianyuan.com(#换成@)

世纪电源网分部

广 东:(0755)82437996 /(138 2356 2357)

北 京:(010)69525295 /(15901552591)

上 海:(021)24200688 /(13585599008)

香 港:HK(852)92121212

China(86)15220029145

网站简介 | 网站帮助 | 意见反馈 | 联系我们 | 广告服务 | 法律声明 | 友情链接 | 清除Cookie | 小黑屋 | 不良信息举报 | 网站举报

Copyright 2008-2024 21dianyuan.com All Rights Reserved    备案许可证号为:津ICP备10002348号-2   津公网安备 12010402000296号