13,005
回編集
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> | ||