我正在实施一个隔离升压转换器。我必须为下图给出的开关生成PWM信号。我很难理解这种模式。 PWM模式如下:在开始时,所有四个开关保持接通,然后开关1,4保持接通,而开关2,3闭合,如图所示。请帮我解决这个问题。如何生成这种类型的PWM?然后,在稍后的时间,PWM应该以Q2,Q3的一些占空比时间移位。我很迷惑。如何添加延迟或移位PWM?我使用的是pic18f45k22微控制器,编程工具是MikroC。
答案 0 :(得分:1)
我不知道" off"的长度是多少?时间至关重要,但假设时间图中建议的标记/空间比为1:3,
Q1,Q4 1011101110111
Q2,Q3 1110111011101
将自由运行定时器配置为在所需周期的四分之一时间内中断。在每次中断时,它按顺序执行四个任务之一,例如此伪代码
void timer_interrupt() {
static int operation = 0; // is initialised only once
clear_timer_status(); // acknowledge the interrupt
switch (operation) {
case 0: Q14_off();
break;
case 1: Q14_on();
break;
case 2: Q23_off();
break;
case 3: Q23_on();
break;
}
operation = (operation + 1) % 4; // advance to next operation
}
如果您想要更小的标记/空间比,您可以以类似的方式进行。假设您希望比率为1:7,由
表示Q1,Q4 101111111011111110
Q2,Q3 111110111111101111
现在在这种情况下,定时器速率应该是周期的八分之一,但不是每个中断都会有一个动作
void timer_interrupt() {
static int operation = 0; // is initialised only once
clear_timer_status(); // acknowledge the interrupt
switch (operation) {
case 0: Q14_off();
break;
case 1: Q14_on();
break;
case 4: Q23_off();
break;
case 5: Q23_on();
break;
}
operation = (operation + 1) % 8; // advance to next operation
}
还有其他方法可以做到这一点:例如您查找为pattern[operation]
的输出位模式数组