例えばモーターの制御などに、PWM制御を使用したい場合があります。
Raspbery Piは内蔵のハードウェアPWMを持っていますが、GPIOの給電能力の影響で直接モーター等を接続するとうまく動作しない場合があり、使いやすいとは言えない感じです。使用できるチャンネル数もそれほど多くありません。
通常のGPIO端子でソフトウェア的にPWM制御を行う場合、OSのリアルタイム性能の影響などで制御時間にズレが生じ、ハードウェアPWMよりも精度がずいぶん落ちるようです。
電源、チャンネル数等の問題をクリアしつつ、Raspberry Piで精度の高いPWM制御を行う方法を記録しておこうと思います。
目次
Raspberry PiのPWM制御基板接続手順
別途、PWM制御基板を使用することで、チャンネル数や精度の問題をクリアできそうです。PWM制御基板はI2C端子でRaspberry Piと接続しますが、信号線はクロックとデータの2本、VCCとGNDと合わせて合計4本済むようです。
12ビット精度、16チャンネルのこちらのPWMコントローラーを採用した制御基板を接続しようと思います。
使用する材料
Raspberry Pi本体
OSはRaspbianを使用したいと思います。どのRaspberry Piの機種でも大丈夫かと思います。PWM制御基板
PCA9685を採用したPWM制御基板は多くの種類が出回っているようです。秋月電子通商さんの製品を使用させて頂きました。こちらは部品実装済みですが、ピンヘッダのはんだ付けが必要です。
電源分岐用microB端子
USB電源を分岐して、Raspberry PiとPWM制御基板に給電することで、モーター等を接続する場合の電力不足を解決しようと思います。秋月電子通商さんのこちらの製品を使用させて頂きました。
そこそこの容量(5V 3A程度)のUSB電源をご用意頂ければ、少数のモーターやLEDを接続しても、電力不足の問題は発生しないかと思います。
※補足致します:Raspberry PiのUSB端子に電力消費が大きいデバイスを接続した場合や、CPUやGPUの負荷が高く本体の発熱量が大きくなる場合、3Aでは不足する場合もあります。3Aより大きい電力が必要な場合、microB端子ではなく、2.1mm標準DCプラグと大容量の電源が必要になるかと思います。
配線図
電源配線
Raspberry Piの電源は、通常のUSB microB端子から給電せずに、GPIO端子から給電します。下記の配線の場合、microB端子に電源を接続する必要はありません。下図のRaspberry PiはUSB microB端子に電源を接続していませんが、GPIO端子による給電で問題なく動作しております。
I2C配線
PWM制御基板の両端にI2C端子がありますが、どちらに配線しても問題ないようです。
RaspbianのI2Cの有効化
配線が終わりましたら、RaspbianのI2Cを有効化することでPWM制御が可能になります。
sudo raspi-config
「5 Interfacing Options」からI2Cを有効にして再起動します。
以上でRaspberry PiにPWM制御基板を配線して、使用できる準備ができた状態です。
電源容量の大きなUSB電源を用意すれば、PWM制御に使用するデバイスの電力を十分に賄えるかと思います。
具体的なPWM制御の事例の記事は下記になります。よろしければ御覧ください。