RaspberryPi の GPIO 端子を利用すれば、プログラムから入出力を簡単に制御できます。LED を点灯させたり、ブザーを鳴動させたりするだけでも十分に面白いのですが、DC モーターやサーボ モーターなんかを駆動できるようになると、工作や活用の幅が格段に広がります。今回、RaspberryPi を利用して模型用の DC モーターを制御できるよう電子工作にチャレンジしてみました。
RaspberryPi の GPIO 端子からの出力は、電圧が 3.3V、GPIO 1 本あたりの最大電流は 16mA、複数の GPIO を使用する場合には合計で 50mAと、モーターを直接駆動するにはパワーが全く足りません*1。また、モーターをただオン/オフするだけでなく、正転/逆転/停止/ブレーキのための制御回路も必要です。これらを自前で組んでもいいのですが、過熱保護や逆起電力吸収用ダイオードを内蔵した モーター制御に便利なドライバ IC があるので、これを利用するのがオススメです。次のような設計方針で部品を選定するとして、TA7291P がピッタリな感じです*2。
秋月の両面基盤にかなり無理やりに実装できました。上にある 3P から制御信号を入力、左右上半分がモーター駆動回路それぞれのチャンネル分です。黒い■はフォトカプラ。下半分がモーター電源を生成する Step-Down DC-DC コンバータ。
TA7291P は、なぜか基盤の裏側に生えていますが、理由はまた後日ギアボックスと組み合わせるとピッタリなのです。
裏面にもフォトカプラなどの部品が幾つか。万能基盤でさえここまでコンパクトに実装できるので、専用基盤を起こせればかなりスマートにユニット化できそうですね。
調べものの最中、Arduino と TA7291P でモーターを回している記事の幾つかで、6V の電源と、Vref 端子に 5V の PWM をつないでいる回路をよく目にしました。パッと見、最大電圧 3V のモーターに 6V の電源を繋いで大丈夫なの? とも思ったんですが、PWM 制御(=出力 5V)を目的でつないだ Vref のお蔭(?)で知らないうちに 5V の電圧制限がかかっていて、更にこれまた知らないうちに、出力端子の電圧降下分でちょうど 3V くらいの出力になっているようです。結果、オーライ。ただ、この点を理解した上で、電源 6V に対して 3V のモーターで大丈夫、という考察をしている記事がほとんどなかったのが気になったところです。モーターの電池を別にした途端に動かなくなるパターン?