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