「MSP430G2553 - PWM制御」の版間の差分

ナビゲーションに移動 検索に移動
25行目: 25行目:
用途に応じて最適な値を選択することが重要である。<br>
用途に応じて最適な値を選択することが重要である。<br>
<br>
<br>
==== PWMの周波数 ===
==== PWMの周波数 ====
PWMの周波数は、1秒間のパルスの数を表す。 (単位は[Hz])<br>
PWMの周波数は、1秒間のパルスの数を表す。 (単位は[Hz])<br>
<br>
<br>
56行目: 56行目:
* 周波数が高すぎると、スイッチング損失が増加して、効率が低下する場合がある。
* 周波数が高すぎると、スイッチング損失が増加して、効率が低下する場合がある。
* デューティ比が0%や100%に近づくと、制御の分解能が低下する。
* デューティ比が0%や100%に近づくと、制御の分解能が低下する。
<br><br>
== デューティ比の計算 ==
クロックが1.1[MHz]の場合、TA0CCR0レジスタの値を999、TA0CCR1レジスタの値を100に設定することにより、デューティ比を10%に設定することができる。<br>
<math>\mbox{ PWM 周 期 } = \mbox{TA0CCR0} + 1 = 1000</math><br>
<br>
<math>\mbox{ PWM 周 波 数 } = \frac{\mbox{ ク ロ ッ ク 周 波 数 }}{\mbox{ PWM 周 期 }} = \frac{1.1 \mbox{[MHz]}}{1000} = 1.1 \mbox{[kHz]}</math><br>
<br>
<math>\mbox{ デ ュ ー テ ィ 比 } = \frac{\mbox{TA0CCR1}}{\big( \mbox{TA0CCR0} + 1 \big)} = \frac{100}{1000} = 0.1 = 10[%]</math><br>
<br>
ただし、クロックが16[MHz]の場合、TA0CCR0レジスタに15999999を代入することはできない。<br>
MSP430G2553のタイマA0は、16ビットタイマであり、最大値は65535 (0xFFFF) だからである。<br>
<br>
したがって、16[MHz]のクロックを使用する場合、以下に示すようにTA0CCR0レジスタとTA0CCR1レジスタの値を設定することができる。<br>
<syntaxhighlight lang="c">
// タイマA0の設定
TA0CTL  = TASSEL_2 | MC_1 | ID_3;  // SMCLK (16[MHz]), アップモード, 分周 1/8 = 2[MHz]のクロックを生成
TA0CCR0 = 20000 - 1;              // PWM周期を1[mS] (1[kHz]) に設定
TA0CCR1 = 2000;                    // デューティ比を10%に設定
</syntaxhighlight>
<br>
上記の設定では、以下のように計算される。<br>
<math>\mbox{ PWM 周 期 } = (\mbox{TA0CCR0} + 1) \times 8 = 20000 \times 8 = 160000</math><br>
<br>
<math>\mbox{ PWM 周 波 数 } = \frac{\mbox{ ク ロ ッ ク 周 波 数 }}{\mbox{ PWM 周 期 }} = \frac{1.1 \mbox{[MHz]}}{1000} = 1.1 \mbox{[kHz]}</math><br>
<br>
<math>\mbox{ デ ュ ー テ ィ 比 } = \frac{\mbox{TA0CCR1}}{\big( \mbox{TA0CCR0} + 1 \big)} = \frac{100}{1000} = 0.1 = 10[%]</math><br>
<br>
<br><br>
<br><br>


案内メニュー