まなびサイエンス

RaspberryPi で模型用 DC モーターを回す

  • 公開 2016/02/14
  • 更新 2017/02/07
カバーイメージ

 RaspberryPi の GPIO 端子を利用すれば、プログラムから入出力を簡単に制御できます。LED を点灯させたり、ブザーを鳴動させたりするだけでも十分に面白いのですが、DC モーターやサーボ モーターなんかを駆動できるようになると、工作や活用の幅が格段に広がります。今回、RaspberryPi を利用して模型用の DC モーターを制御できるよう電子工作にチャレンジしてみました。

設計

 RaspberryPi の GPIO 端子からの出力は、電圧が 3.3V、GPIO 1 本あたりの最大電流は 16mA、複数の GPIO を使用する場合には合計で 50mAと、モーターを直接駆動するにはパワーが全く足りません*1。また、モーターをただオン/オフするだけでなく、正転/逆転/停止/ブレーキのための制御回路も必要です。これらを自前で組んでもいいのですが、過熱保護や逆起電力吸収用ダイオードを内蔵した モーター制御に便利なドライバ IC があるので、これを利用するのがオススメです。次のような設計方針で部品を選定するとして、TA7291P がピッタリな感じです*2

  • 入手しやすく、工作キットなどでも使われるマブチ FA-130 模型用モーターを 3V、最大 500mA くらいで使う。
  • 今後、他に流用することも考えて、ロジック回路は 5V で設計しておきたい。
  • 大きなノイズの発生源であるモーターと、RaspberryPi の信号線のラインを分離できるよう、制御信号はフォトカプラ経由で入力する。
  • TA7291P の Vref 端子を使えば出力電圧を簡単に制限できるが、series regulator 動作のため電圧降下分は熱として捨てられる。Vs=Vref として、Vs に目的の電圧を直接与えた方が効率は良さそう。
  • 電源容量を稼ぐため、電池セルを直列でガンガン増やせるようにして、必要な電圧は DC-DC コンバータで生成する。
  • 電源装置は、モーター×左右 2ch を制御したいので、500mA×2ch=1A が供給できればよい。

回路図


Fig.1 [ce3 データ] [mb3 データ]

  • 制御入力 CTRL-IN を RaspebrryPi の GPIO に接続。モーター 1ch あたり GPIO 2本で正転/逆転/停止/ブレーキの制御が可能。
  • 電源 V-IN を電池ボックスに接続。エネループ 6 本であれば 7.2V×1900mAh。電源容量を上げたい場合、電池を直列につないで電圧を上げればよい*3TA7291P の耐圧 25V まではイケる予定。
  • DC-DC Step-Down コンバータでは、MC84063A を利用。100均で買ったシガー USB アダプタの回路そのままに、出力電圧 Vs-OUTを 5.17V に変更。
  • TA7891P のデータシートから、飽和電圧が Vs-Out 間で 1.0V@0.4A、Out-GND 間で 0.9V@0.4A くらいあるので、この分を見越して Vs-OUT は高め。

ギャラリ

 秋月の両面基盤にかなり無理やりに実装できました。上にある 3P から制御信号を入力、左右上半分がモーター駆動回路それぞれのチャンネル分です。黒い■はフォトカプラ。下半分がモーター電源を生成する Step-Down DC-DC コンバータ。

 TA7291P は、なぜか基盤の裏側に生えていますが、理由はまた後日ギアボックスと組み合わせるとピッタリなのです。

 裏面にもフォトカプラなどの部品が幾つか。万能基盤でさえここまでコンパクトに実装できるので、専用基盤を起こせればかなりスマートにユニット化できそうですね。

余談

 調べものの最中、Arduino と TA7291P でモーターを回している記事の幾つかで、6V の電源と、Vref 端子に 5V の PWM をつないでいる回路をよく目にしました。パッと見、最大電圧 3V のモーターに 6V の電源を繋いで大丈夫なの? とも思ったんですが、PWM 制御(=出力 5V)を目的でつないだ Vref のお蔭(?)で知らないうちに 5V の電圧制限がかかっていて、更にこれまた知らないうちに、出力端子の電圧降下分でちょうど 3V くらいの出力になっているようです。結果、オーライ。ただ、この点を理解した上で、電源 6V に対して 3V のモーターで大丈夫、という考察をしている記事がほとんどなかったのが気になったところです。モーターの電池を別にした途端に動かなくなるパターン?

  1. *1 10mA 程度で LED を点灯するだけでも端子電圧がガッツリ下がってしまいます
  2. *2 手元にあった TA8428K は、Vcc が 7V と高くて使えませんでした。しかも英語版のデータシートには書いてなくって、半日無駄にハマってしまった罠
  3. *3 電流容量の大きな電池セルは高価なので、入手が容易で安価なエネループを流用したい。また、電源への制限がほとんどないので、ラジコン用 NiCd バッテリパックなどの適当なバッテリを流用しやすい

カテゴリー

過去ログ