1

絶縁ブースト コンバーターを実装しています。下の図に示すスイッチの PWM 信号を生成する必要があります。パターンを理解するのが難しい。PWM パターンは次のとおりです。図に示すように、最初は 4 つのスイッチすべてがオンに維持され、次にスイッチ 1 と 4 がオンに維持され、スイッチ 2 と 3 が閉じられます。この問題を始めるのを手伝ってください。このタイプの PWM を生成するにはどうすればよいですか? その後、Q2、Q3 のデューティ サイクル時間で PWM をシフトする必要があります。私は混乱しています。遅延を追加したり、PWM をシフトするにはどうすればよいですか? pic18f45k22 マイクロ コントローラを使用しており、プログラミング ツールは MikroC です。

絶縁型昇圧コンバーター

スイッチ用PWM

4

1 に答える 1

1

「オフ」時間の長さが重要かどうかはわかりませんが、タイミング図で示唆されているように、マーク/スペースの比率が 1:3 であるとします。

Q1,Q4   1011101110111
Q2,Q3   1110111011101

必要なサイクル期間の 4 分の 1 で中断するようにフリーラン タイマーを構成します。割り込みごとに、次の疑似コードのように、4 つのタスクのいずれかを順番に実行します。

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

この場合、タイマー レートはサイクルの 8 分の 1 である必要がありますが、すべての割り込みにアクションがあるわけではありません。

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 に答える