Up PWM 作成: 2021-05-15
更新: 2021-05-15


  • PWM方式
    • 出力は,12bitデータ
        12bit = 10bit × 4 = 1024 × 4 = 4096
    • <周波数を 4096 で分割したタイミング>の制御を可能にする

  • PWMは,汎用GPIOピンにおいて,<3.3VのON/OFF>で作ることができる。

  • ハードウェアPWM
      Raspberry Pi 3 Model B の 出力ピン:
        GPIO 12 (PWM0) (物理番号 32)
        GPIO 13 (PWM1) (物理番号 33)


    「ラズパイのGPIOを再確認! ‥‥」から引用:
    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として使用することができません。