MD-1をマイコンボードで使用する

Posted on 2019.08.26 in

 

マイコンボードでDCモータを制御するときにモータドライバなどモータを駆動するための回路必要になります。小型スピードコントローラMD-1を使用すれば、配線するだけで簡単にモータを制御することができます。

この記事では、Arduinoを例にMD-1を制御する方法をご紹介します。

 

■MD-1について

MD-1は小型DCモータ用のスピードコントローラ基板です。最大370サイズのDCモータを制御することができます。小型、軽量でマシンへ搭載しやすいデザインになっています。

また、一般的なRC用サーボと同じ方法、同じPWM信号で制御することができますので、ArduinoなどRCサーボ用のライブラリをそのまま流用することができます。

MD-1側で正転逆転、出力制御をしますので、市販のモータドライバを使用するようなマイコン側で煩わしい電子制御部分を気にせず制御させることができます。

マイコンボードへの配線も信号線、電源、GNDだけですのですっきりと収まります。

最大電流は1.9A(FETスペック:5.3A)です。1.9Aを超えると電流リミットがかかります。電流リミット機能によりモータに負荷がかかりにくく、破損しにくい設計になっています。

制御方法については、下記の「制御方法」をご参照ください。

 

<スペック>

●ブラシモーター専用スピードコンローラー
●サイズ:27.0× 20.5× 4.4mm
●重量:3.0g(本体のみ)
●対応モーター:370以下の小型模型用DCモーター
   (ロック電流4A以下のブラシ付きモーター)
●制御方式:PWM制御
●適正電源電圧:3.0V~6.6V
   (乾電池2~4セル、Ni-Cd&Ni-MH3~5セル、LiFe1~2セル、LiPO1セル)
●ドライブ周波数:約4KHz
●BEC出力:なし(別途電源の供給が必要です)

 

<各部の名称>

 

 

■MD-1の種類

MD-1は2種類あります。

・RCカーESC仕様(一般RCカー向け)

ESCとはElectrical speed controller の略で、RCカーの動力となるモータを制御するための機器として使用します。本製品は、市販のESCと同じように370モータまでのRCカーに使用することが可能です。一般的なRCカーの操作方法は、前進後、バック方向にプロポ(送信機)のスロットル(アクセル)を操作するとブレーキがかかり、一度ニュートラル(中心)に戻してもう一度バック方向に倒すとバックします。「RCカーESC仕様」では、RCカーを操作しやすいように、この操作に対応した操作方法が採用されています。

 

・ニュートラルブレーキ仕様(電子工作、ロボットなど)

ニュートラルブレーキとは、ニュートラル状態の時に同時にショートブレーキがかかる仕様です。前進、または後進後にパルス幅をニュートラルに戻すことで簡単にブレーキをかけることができます。電子工作などで使用する場合はこちらの仕様がお勧めです。

 

※上記2種類のモード切り替えはできません。

 

 

■配線

下記の情報を参考に各端子へ配線してください。

<MD-1端子構成>

GND => ArduinoのGNDへ接続

電源 => バッテリー、電池などの電源から配線します

信号線 => ArduinoのPWM出力端子へ接続

 

※MD-1の信号線は5Vでも通信できますが、動作保証対象外となります。

 

 

■制御方法

制御は非常に簡単です。RC用サーボと同じようにMD-1へPWM信号を送ります。PWMのパルス幅によって回転方向と回転数を指定することができます。

1496μsecがニュートラルです。上記の「ニュートラルブレーキ仕様」の場合、ニュートラルの状態ではブレーキがかかった状態になります。パルス幅の指定範囲は下記を参考にしてください。

 

・信号形式:PWM

・繰り返し周期:5ms以上(例では15ms(66.6Hz)を入力しています)

・制御パルス幅:1196 ~ 1496 ~ 1796μsec(ニュートラルから±300)

 

Arduinoの場合は、標準で用意されている「Servo」ライブラリを利用すると便利です。

servo.attach(pin) で制御する端子を指定し、writeMicroseconds(uS)の引数にパルス幅を指定するだけで簡単に動作します。詳細は、MD-1のサンプルプログラム『MD1forRobot』を参照してください。

 

※ArduinoなどマイコンはPWMを出力できる端子が決まっています。端子については、各マイコンボードの仕様をご確認ください。

 

 

■サンプルプログラム

一般的にArduinoUnoを使われる方が多いと思いますが、信号レベルが3.3Vということもあり、今回はArduino MKR ZEROを用いたサンプルプログラムを紹介します。接続ピンに関しては、サンプル中に記述があります。
モータ用電源とArduino用の電源を同じにする場合、モータ起動時瞬間的な電圧降下があり、Arduinoでリセットがかかる場合がありますのでご注意ください。

 

<Download>

 

・MD-1制御用

『MD1forRC』

『MD1forRobot』

Arduinoの「Servo」ライブラリを利用した使用例のサンプルです。

パルス幅がMINの状態(1196)からMAX(1796)まで徐々に変化するようにプログラムしています。

このサンプルの通りwriteMicroseconds(uS)の引数を変更することで、簡単にMD-1をコントロールすることが可能です。

 

・MR-8連携用

『MR8_onePulseIn』

8チャンネル無線コントローラー「MC-8」とペアで使用する受信機「MR-8」のパルスをシリアルに変更するためのサンプルです。

MR-8は、MC-8からの操作情報をPWMで出力します。このPWMをArduinoのpulseIn()関数で取得することで、ArduinoをMC-8から無線コントロールすることが可能です。

 

『MR8_twoPulseInMKRZREO』

上記と同じくMR-8からパルスを取得するサンプルですが、pluseIn()関数は1chしか使用できないため、割り込みを利用して複数のピンから取得する方法をご紹介しています。

 

・MC-8を利用したタンクの制御サンプル

『MC8_MD1TankModeMKRZERO』

8チャンネル無線コントローラーMC-8とMR-8、MD-1を組み合わせてArduinoを搭載したクローラ型のロボットや対向2輪型ロボットを制御するための方法をご紹介するサンプルです。

 

 

MD-1の基本的な利用方法は以上です。

これまでモータドライバを作成するために手間がかかりましたが、MD-1を使用すれば簡単にDCモータの制御をすることができます。

DCモータを動力にしたオリジナルロボットを作成する場合はぜひご利用ください。