- 最終更新日
- 記事公開日
モータードライバって必要?ラズパイで制御するから不要では?
ラズパイとモーター関連の記事を見ていると、「PCA9685」や「TA7291P」といったモータードライバを使用している例が良くあります。
I2C接続16チャンネル サーボ&PWM駆動キット(秋月電子)
「なぜ、モータードライバを使うのか?」軽く調べてみましたが、
- モータードライバを使うとプログラムが簡単 → ラズパイの標準ライブラリで簡単に制御できる
- ラズパイではモーターを動かす電流を出せないから(トランジスタの増幅回路でも電流が足りない) → USBハブを使って、直接モーターに電流を供給すれば良い
- ハードウェアPWMで正確なパルスを出せる → 元々、ラズパイにPWMを出せるGPIOが用意されている
といった感じで、腑に落ちる答えがありませんでした。
結論を言えば、モータードライバが必要なのは、
- たくさんのサーボモーターを制御する必要があるとき
- ステッピングモーターを使うとき(ステッピングモーターには、サーボモーターのような電源入力端子が存在しないから)
ですね。
ラズパイだけで制御できるモーターの数は2つ
ラズパイに用意されているPWMのPinは、「PWM0」と「PWM1」の2つだけ。
- PWM0 ・・・ GPIO12、GPIO18
- PWM1 ・・・ GPIO13、GPIO19
3個以上のモーターをハードウェアPWMで制御しようとする場合には、モータードライバが必要になります。
もし、ソフトウェアPWMを使うなら、余ってるピンの数だけモーターに割り当てられますが・・・
「ハードウェアPWM」と「ソフトウェアPWM」の違い
モーターを制御するためにパルス幅を変えた信号を送る必要があるのですが、その方法には、「ハードウェアPWM」と「ソフトウェアPWM」というものがあります。
どちらも同じような信号を出せるのですが、その信号の作り方に違いがあり、ソフトウェアPWMの方はやや信号の質が悪いです。
よって、ソフトウェアPWMで作られた信号でモーターを制御しようとすると、モーターが勝手にプルプル動いたり、指定した位置とはズレて停止してしまうような不具合が起きることがあります。
対して、「ハードウェアPWM」の信号は非常に正確で、質の良い信号を作ることができます。