PWMは「Pulse Width Modulation」の頭文字をとったものです。
PWMは、高速にこの出力をON/OFFすることで、振幅が一定の波形を作り出したり、疑似的なアナログな出力調整を行ったりするための機能です。
PWMは、3.3VをON/OFFすることで作られるため、1.2V、2.4Vのような中間の値はありません。
このPWMによって作り出される波形は、LEDの明るさ調整など、デバイスの動作を微調整する用途に使えます。
LEDの例では、人間には気づかないほどの速さでON/OFFを繰り返すことで、人間には、半分程度の電圧がかかっているように薄暗く見えます。
また、高速にON/OFFされた波形を、フィルター(「ローパスフィルター」と呼ばれます)に通すことで、アナログ的な波形を作ることもできます。
これを利用すれば、ラズパイで音が作り出せます。ただし、あまり良い音ではないため、警報などの単調な音の生成に向いています。
PWMは、汎用的なGPIOピンを、ソフトウェア(プログラム)からON/OFFすることで作ることができます。
ただし、ラズパイに搭載されているOS(Linux)は、裏側でさまざまな処理を同時に実行しているため、正確な周期でのON/OFF切り替えを苦手としています。
そこで、正確な周期の波形を作る機能として、ハードウェアPWMが使われます。
ラズベリーパイではGPIO18(GPIOピンの12番)とGPIO19(GPIOピンの35番)が、ハードウェアPWMとして使用できます。
このピンは、ヘッドフォン端子から音声を出力する用途と併用されています。そのため、音声を出力するアプリケーションの実行中は、このピンをハードウェアPWMとして使用することができません。
|