スピードコントローラMD-1をRaspberryPiから制御する
スピードコントローラMD-1は、RCサーボを制御するときに使用するPWMと同じパルス幅で制御できるモータドライバです。RC向けの受信機や、PWMを出力できるマイコンボードなどからPWMを出力することにより制御することが可能です。MD-1を使用することで、モータドライバを自作する手間を省くことができます。さらに、マイコンボードにRCサーボ用のライブラリが用意されていれば、そのまま使用して回転数、回転方向の指定が簡単にできます。
今回は、RaspberryPiを使用してMD-1を制御する方法をご紹介します。
【関連記事】
Arduinoから制御する方法も公開しています。詳しくは下記のサポート記事をご参照ください。
ArduinoにマルチコントローラーMC-8の受信機MR-8を接続し、無線化する方法を解説しています。
『マルチコントローラーMC-8+MR-8をマイコンボードで使用する』
■MD-1について
¥2,728 (税込)(No.40452)
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種類のモード切り替えはできません。
■必要な製品
・RaspberryPi(作例ではRaspberry Pi 4 Model Bを使用しました)
・130~370サイズのDCモータ
・電源(6~6.6V)(弊社のスイッチ付き電源ユニットがお勧めです)
※RaspberryPiの電源とモータ用の電源は別にご用意ください。
■配線
下記の情報を参考に各端子へ配線してください。
<MD-1端子構成>
<配線図>
GND => RaspberryPiと電源のGNDへ接続
電源 => バッテリー、電池などの電源から配線します
信号線 => RaspberryPiのPWMが出力できる端子へ接続
(例ではGPIO18に接続しました)
※RaspberryPiはPWMを出力できる端子が決まっています。端子については、RaspberryPi、及びpigpioの仕様をご確認ください。
※RaspberryPiのGPIO番号とピン番号は異なります。RaspberryPi 4Bの場合、GPIO18はピン番号ですと12になります。
■制御方法
制御は非常に簡単です。RC用サーボと同じようにMD-1へPWM信号を送ります。PWMのパルス幅によって回転方向と回転数を指定することができます。
1500μsecがニュートラルです。上記の「ニュートラルブレーキ仕様」の場合、ニュートラルの状態ではブレーキがかかった状態になります。パルス幅の指定範囲は下記を参考にしてください。
・信号形式:PWM
・繰り返し周期:5ms以上(例では20ms(50Hz)を入力しています)
・制御パルス幅:1200 ~ 1500 ~ 1800μsec(ニュートラルから±300)
※個体差により値が前後する場合があります。
RaspberryPiの場合は、GPIOの制御用に公開されている「pigpio」ライブラリを利用すると便利です。
set_mode(18, pigpio.OUTPUT)で端子を出力に設定し、set_servo_pulsewidth(18, 1500)で制御パルス幅を指定すれば、指定したGPIOから任意のPWM信号を出力できます。
■pigpio導入方法
インストール時やデーモンの起動には管理者権限で行います。
RaspberryPiのコンソール画面を開き、下記のコマンドでpigpioをインストールします。
1 |
$ sudo apt-get install pigpio |
プログラム内でpigpioを実行するには、pigpioのデーモンを起動する必要があります。同じくコンソール画面で下記のコマンドによりpigpioのデーモンを起動します。
1 |
$ sudo pigpiod |
以上で準備は完了です。
■サンプルプログラム
下記のプログラムはPythonで記述しました。
【バージョン情報】
Python: 3.7.3
pigpio: 1.79
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
from time import sleep import pigpio #GPIO番号 pin1 = 18 pi = pigpio.pi() pi.set_mode(pin1, pigpio.OUTPUT) sleep(1) pi.set_servo_pulsewidth(pin1, 1596) #モータ回転 sleep(1) pi.set_servo_pulsewidth(pin1, 1500) #ブレーキ&停止 pigp.stop() |
このプログラムを実行すると、モータが1秒間回転し、その後停止します。
最初にpigpioを使用できるようにインスタンス化し、pi.set_mode関数でMD-1の信号線を接続したGPIOを出力に設定します。あとはpi.set_servo_pulsewidth(関数で、制御パルス幅を指定すればモータが回転します。
1500を指定するとモータにブレーキがかかり停止します。1500から値を大きくするか、小さくするかで徐々に回転数を上げていくことができます。また、値が1500より大きいか、小さいかで回転方向を指定することができます。
※個体差により、ブレーキがかかるポイントが1500±30の誤差がある場合があります。
■作例
MD-1とRaspberryPiを組み合わせて車輪で移動するロボットを作成しました。旧式ですがWEBカメラを搭載し、赤、緑、青のカードをかざして動作を指定できます。
MD-1用の電源は弊社の電源ユニットを使用しました。RaspberryPiはスマホ用の2A出力ができるモバイルバッテリーを使用しています。
動力用のギヤユニットとしてタミヤ社の『ダブルギヤボックス(左右独立4速タイプ)』を採用しました。130サイズのモータを搭載しています。モータ1つに対して1つのMD-1(ニュートラルブレーキ仕様)を用意しています。RaspberryPiには、それぞれGPIO18、GPIO19に接続しました。モータとMD-1の接続にははんだ付けが必要です。
MD-1(2個)とモータ用電源、RaspberryPiへの接続のため分配機を作成しました。配線は上記と同じ内容で、MD-1が一つ増えただけです。MD-1が2個の場合の配線図は下記のようになります。
解説は以上です。このように簡単にモータを回すことができますので、画像処理など中心的なプログラミングに集中することができます。また、モータドライバのはんだ付け作業が省かれることで単純な手間の解消だけでなく、はんだミスなどによる動作不良も解消されます。車輪型のロボットや、プーリーの回転などモータを使う際は、ぜひMD-1をご利用ください。
※プログラミングに関するお問い合わせは受け付けておりませんのでご了承をお願い致します。
MD-1(ニュートラルブレーキ仕様)の詳細をみる