MD-2をマイコンボードで使用する
MD-2は、2つのモータで前後進、左右旋回をするタンクモデルなどのマシンに最適な小型で使いやすいスピードコントローラです。一般的には無線コントローラとの組み合わせで使用しますが、マイコンボードからPWM信号を入力することにより、モータを制御することも可能です。MD-2を使用することにより、自律ロボットなど作成する際に、モータドライバ回路を用意する手間なく、簡単にマシンを制御することができます。
この記事では、Arduinoを例にマイコンボードからMD-2を制御する方法をご紹介します。
【関連記事】
同じスピードコントローラのラインアップとして、MD-1があります。MD-1は1つのモジュールで1つのモータを制御することが可能です。こちらの制御方法も公開していますのでご参考にしてください。
『スピードコントローラMD-1をRaspberryPiから制御する』
また、ArduinoにマルチコントローラーMC-8の受信機MR-8を接続し、無線化する方法を解説しています。
『マルチコントローラーMC-8+MR-8をマイコンボードで使用する』
■MD-2について
¥3,850 (税込)(No.40454)
MD-2は、1つのユニットで2個のモーターを動かすことができるスピードコントローラです。MD-2の内部では、入力されたPWM信号に対してミキシングをかけていますので、1つのPWM信号を2つのモータ用にPWM出力します。これにより、ツインモータのタンクモデルなどでも1つのPWM信号で前進/後進、もう1つのPWM信号で左右旋回を可能にします。
MD-2搭載例
タミヤ社の工作シリーズを組み合わせて作成しました。動力としまして「ツインモーターギヤーボックス」を使用しています。
搭載例で使用している製品
・MD-2(ツインモーターミキシングESC)
・Arduino MKR ZERO
・電源ユニット
・タミヤ工作シリーズ「ツインモーターギヤーボックス」他
・ピンヘッダ(ピン間の距離:2.54mm)
・ユニバーサル基板
MD-2を使用するメリット
例えば、スティックタイプの無線コントローラの場合、モータそれぞれにMD-1などのスピードコントローラを搭載していると、左右のスティックを同時に上に傾けることで前進動作をします。
対して、MD-2の場合は片方のスティックを倒すだけで前進することができます。
これをマイコンボードからの制御にしますと、前進するときは1つのPWM信号で2つのモータを同時に制御することができ、シンプルなプログラムで前進動作を指示することが可能になります。後進や左右旋回動作も同様です。
MD-2の端子構成
SIG1にPWM信号を入力すると前進、後進動作を指示することができます。SIG2は左右旋回動作です。SIG1とSIG2を組み合わせることで前進しながら右に曲がる、などの制御も可能です。
M1、M2のモータコードに、マシンに搭載した左右のモータをはんだ付けします。
スペック
●ブラシモータ専用ミキシング機能付きスピードコントローラ
●サイズ/27.0× 20.5× 4.4mm
●重量/3.0g(本体のみ)
●対応モーター/280以下の小型模型用DCモーター
(ロック電流4A以下のブラシ付きモーター)
●制御方式/PWM制御
●適正電源電圧/3.0v~6.6v
(乾電池2~4セル、Ni-Cd&Ni-MH3~5セル、LiFe1~2セル、LiPo1セル)
●ドライブ周波数/約4KHz
●BEC出力/なし
最大電流が2Aを超えると電流リミットがかかります。電流リミット機能によりモータに負荷がかかりにくく、破損しにくい設計になっています。
■配線
下記の情報を参考に各端子へ配線してください。
<MD-2 端子構成>
GND => ArduinoのGNDへ接続
電源 => バッテリー、電池などの電源へ配線します
信号線 => ArduinoのPWM出力端子へ接続。前後進用と左右旋回用でPWM信号の出力が可能な端子が2本必要です。
※MD-2の信号線は5Vでも通信できますが、動作保証対象外となります。
※モータとマイコンボードの電源を共通にする場合は、マイコンボードの仕様に合わせて電源との間にレギュレータを挟んでください。また、モータの負荷により電圧降下が発生します。マイコンボードがうまく動作しない場合は、電源を別にするか、コンデンサの追加をご検討ください。
タミヤ社の「ツインモーターギヤーボックス」を上記の搭載例のように搭載する場合は、M1、M2のモータコードを下図のように配線します。ただし、ギヤーボックスの搭載向きにより配線が変わります。お手持ちのマシンに合わせ、下記を参考に配線してください。
↑M1(左側モータ)
↑M2(右側モータ)
※PWM信号を1500μsecより増やすことにより前進しますが、配線違いにより後進してしまう場合は1500μsecより減らすことで前進できますので、プログラム上で解決することができます。ただし、SIG1にマイコンからのPWM信号を入力し、左右に旋回してしまう場合は配線を修正する必要があります。どちらかの赤黒コードを逆に付け直してください。
■制御方法
制御は非常に簡単です。RC用サーボと同じようにMD-2のSIG1、SIG2へPWM信号を送ります。PWM信号のパルス幅によって回転方向と回転数を指定することができます。
1500μsecがニュートラルです。SIG1、SIG2ともにニュートラルのパルスを入力するとモータが停止します。パルス幅の指定範囲は下記を参考にしてください。
・信号形式:PWM
・繰り返し周期:5ms以上(例では20ms(50Hz)を入力しています)
・SIG1に対する制御パルス幅とMD-2の動作:
1200(後進)~ 1500 ~ 1800μsec(前進)(ニュートラルから±300)
・SIG2に対する制御パルス幅とMD-2の動作:
1200(右旋回)~ 1500 ~ 1800μsec(左旋回)(ニュートラルから±300)
※個体差により値が前後する場合があります。
接続確認方法
①SIG1の信号のみを変化、SIG2をニュートラル状態で前進/後進するか確認をする。
=>旋回するようであれば逆に回っているモータの赤黒を入れ替える。
②SIG1をニュートラル状態で、SIG2の信号のみを変化させ、左右の旋回動作があっているか確認をする。
=>左右逆に動くようであればM1とM2の接続を入れ替える。
③ ②で正常に動いた状態で、もう一度①になるかどうか確認をする。
=>①でモータの赤黒を入れ替えて②でM1、M2も入れ替えてしまった場合、前後逆になる場合があります。
※ニュートラル位置でも微量に前後進してしまう場合
通常は1500μsecでモータが停止しますが、もし微量に前進、または後進してしまう場合は、SIG1のニュートラルを1470~1530の範囲で調整し、停止するパラメータを見つけてください。
※前進動作で左右どちらかに寄ってしまう場合
通常は1500μsecが左右バランスの中心ですが、前進動作中に左右どちらかに寄ってしまう場合は、SIG2のニュートラル位置を1460~1540の範囲で調整し直進するパラメータを見つけてください。
【重要】SIG1、SIG2のどちらか片方のみPWM信号を入力した場合は動作しません。必ず両方の端子にPWM信号を入力するようにして下さい。
【重要】プログラムを書き込んだ直後は正常に動作しない場合があります。書き込み時は、MD-2の電源をOFFにし、書き込みが完了してから改めてONにしてください。
Arduinoの場合は、標準で用意されている「Servo」ライブラリを利用すると便利です。
servo.attach(pin) で制御する端子を指定し、writeMicroseconds(uS)の引数にパルス幅を指定するだけで簡単に動作します。詳細は、MD-2のサンプルプログラム『MD2TankModeMKRZERO』を参照してください。
※ArduinoなどマイコンはPWM信号を出力できる端子が決まっています。端子については、各マイコンボードの仕様をご確認ください。
■サンプルプログラム
一般的にArduino Unoを使われる方が多いと思いますが、MD-2の信号レベルが3.3Vということもあり、今回はArduino MKR ZEROを用いたサンプルプログラムを紹介します。接続ピンに関しては、サンプル中に記述があります。
『MD2TankModeMKRZERO』
Arduinoの「Servo」ライブラリを利用した使用例のサンプルです。
MD-2のSIG1(前後進)、SIG2(左右旋回)にPWM信号を入力することでマシンが動作するプログラムです。このサンプルの通りwriteMicroseconds(uS)の引数を変更することで、簡単にMD-2をコントロールすることが可能です。
※モータの搭載向きにより指定するパラメータ(ニュートラル1500±300)の向きが異なります。前後進、左右旋回が逆の動作の場合はパラメータを1500から増減を反対に指定してください。
また、MD-2のSIG1ポートにPWM信号を入力した際に左右に旋回してしまう場合は、モータへのはんだ付けが逆になっている可能性があります。片方のモータのはんだ付けを逆に付け直してください。
MD-2の基本的な利用方法は以上です。
MD-2は省スペースで搭載しやすく、配線するだけで簡単に制御することができますので、開発工数を削減することができます。DCモータを動力にしたオリジナルロボットを作成する場合はぜひご利用ください。
MD-2(ツインモーターミキシングESC)の詳細をみる