1

我正在实现一个隔离升压转换器。我必须为下图中给出的开关生成一个 PWM 信号。我很难理解这种模式。PWM 模式如下:开始时所有四个开关都保持打开,然后开关 1、4 保持打开,而开关 2、3 关闭,如图所示。请帮助我开始解决这个问题。如何生成这种类型的 PWM?然后,在稍后的时间,PWM 应该以 Q2、Q3 的一些占空比时间移动。我很困惑。如何添加一些延迟或偏移 PWM?我用的是pic18f45k22微控制器,编程工具是MikroC。

隔离升压转换器

用于开关的 PWM

4

1 回答 1

1

我不知道“关闭”时间的长度是否很关键,但假设标记/空间比为 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]

于 2015-12-27T12:42:36.040 回答