模型用モーター制御キットの作り方

模型用モーターの回転制御キットです。

・負荷が変動しても設定した回転数で回り続けようとします。
・1回転毎にセンサーで回転数を検知して目標回転数に近づけるように制御します
 回転数は目標回転数付近で変動します。
 モーターの慣性が大きいと±10rpm程度に収まりますが、慣性が小さいと±50rpm程度は変動します。
・ロータリーエンコーダを回すと回転数を増減できます。
 モーター開店中でも停止中でも変更可能です。
・モーターを制御するプログラムはUSB経由で書き込みます。
 バグがあった場合は当ページに修正版を掲載するのでプログラムをダウンロードして更新して下さい。
・回路図、ソフトは全て公開されています。
 C言語でプログラムが作れる人は自由に改造できます。
・電源、回路制御用とモーター用の2つ必要です。
 回路制御用の電源はUSBから供給することも出来ます。
・モーター用の電源は12Vまで対応しています。
・流せる電流は最大4A程度です。この制約は基板配線のパターン幅による物です。
・モーターの定格電圧が5V以下の場合(FA-130モーターなど)は5Vのモーター用電源を使用して下さい。
 RS-380より小さいモーターは最大でも1A程度しか流れないので5V-2A程度のAC-DCアダプターで十分です。
・センサーを取り付ける必要があるのでモーターシャフトが両側から出ている物が理想です。
 方軸の物では RS-380、RE-280 が比較的軸が長くセンサーを付ける余裕があります。
 RE-280より小さいモーターは軸が短いので軸延長などセンサー取付に工夫が必要です。

以下の物は別売です
 ・電線
 ・モーター、ギヤボックス
 ・電源
 ・USBケーブル
 ・センサー
  いろいろなセンサーが使用できるのであえて別売にしました
  動作が確実なので遮光式のフォトインタラプタがおすすめです


2012-02-08

完成するとこうなります。

・組み立ては、部品表の部品番号と基板のシルク印刷の部品番号を合わせるように半田付けして下さい。
 順番を間違えると取り付けられなくなってしまう部品はありません、好きな順番で半田付けして下さい。
 背の低い部品から取り付けるのが定石です。
・取付向きのある部品に注意して下さい。足の数が多い部品は間違えると取れなくなります。
 間違えた場合は足を切断して取り除いて下さい。
・半田付けはフラックスを使用しないで下さい。
 基板は半田メッキしてあるのでフラックスを付けても半田付けは容易になりません。
・使用可能なセンサー
遮光式センサー基板EE-SX1131
遮光式センサー基板SG206
反射式センサー基板 3mm砲弾型センサー
反射式センサー基板 薄型

R0013752.jpg

組み立て時はこれも参考にして下さい

brd.PNG

・JP1,JP2,JP3には何も取り付けません。
・▼マークのある6ピンコネクターはPICKit2等でプログラムを書き込むための物です。USB経由でプログラムを書き込む通常の使い方では端子を半田付けしなくてもかまいません。
・DC3に取り付ける部品はキットに含まれていません。この端子はモーター電源端子です。DC2を使用しないときに使います。
・DC1は制御回路用電源ジャックですUSBケーブルでPCと接続しているときには使用しないで下さい。

R0013489.jpg
部品表
ファイル ファイルタイプ 添付ファイルの解説
partslist.pdf PDF 部品表

液晶表示裏側の配線。赤黒の電線は液晶のバックライト用です。この液晶はバックライトが無いと文字が見えません。液晶のコントラストは水色のVRを回して調整して下さい。調整はUSB経由でプログラムを書き込んだ後になります。プログラムを書き込まないと文字が表示されないためです。

R0013759.jpg

液晶基板とモーター制御基板を電線で繋がない方法もあります。液晶表示装置を使い慣れている人はこの方法でバックライトを点灯させることも出来ます。部品表には入っていませんが100Ωの抵抗はキットに付属しています。

R0013792.jpg

モーターの配線です。赤線がプラス、黒線がマイナスです。モーターの極性が解らないときは好きなように配線して下さい。モーターの回転方向はプログラムの設定で簡単に変更出来ます。

R0013760.jpg

センサーの配線です。
 赤線-センサープラス
 黒線-マイナス
 オレンジ-信号線
 緑-信号線(これは未使用 今後の拡張性のためにある)
回路は2出力のセンサーに対応していますがソフトが現時点対応していません。そのため緑線が繋がっている「B」端子は未使用になります。シールド線を使用しなくても大丈夫です。シールド線を使用できるようにマイナス側の穴が大きくなっています。
売店で販売されているセンサーの使い方解説は回転計用のシールド線が使用されていますが、赤線がプラス、シールドがマイナス、白線が信号線です。

R0013762.jpg

ミニ四駆用のモーターを使うときはこれを購入して下さい。タミヤからギヤプーラーも販売されています。

R0013756.jpg

モーターにはノイズキラーコンデンサを取り付けて下さい。モーターの両端子間に1個もしくはモーターカンを経由して2個取り付けます。モーターカンに半田付けするときは熱が逃げるので60W程度の半田ごてが必要です。

R0013784.jpg

半田付けが完了したらプログラムを書き込みます

*******************************************************************************
 プログラムの書き込み方
*******************************************************************************

このページの一番下のほうに添付してある HIDbootloader.zip を解凍し、HIDbootloader.exe を実行します。プログラムはこんな画面です。このプログラムの実行には.netフレームワークとC++のランタイムが必要です。.netフレームワークはすでにインストールされている可能性が高いのでHIDbootloader.exeが動かなかったらC++のランタイムをインストールしそれでもダメなら.netフレームワークをインストールするという順番が良い。
Microsoft .NET Framework
Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ

bootldr1.PNG

スイッチ2「SW2」を押したままUSBケーブルを差し込みます。LED3が点滅してプログラムの書き込み準備が出来たことを知らせてきます。センサーやモータは繋がった状態でも書き込めます。モーターの電源はOFFにしておいて下さい。

R0013765.jpg

起動した HIDbootloader.exe がそれを検知してボタンが押せるようになります。
このページの一番下に添付してあるプログラムをダウンロードし、その中に含まれる拡張子がhexのファイルを読み込みます。「Open Hex File」というボタンがhexファイルの読み込みボタンです。

bootldr2.PNG

こんなふうに読み込むHEXファイルを選択します

bootloader3.PNG

「Program/Verify」ボタンを押してプログラムを書き込みます。書き込みは2~3秒で完了します。書き込み中はLEDの点滅が止まります。書き込みが終わるとまた点滅状態に戻ります。書き込み終わったらUSBケーブルを抜きます。電源を入れると書き込んだプログラムが動き出します。プログラムは何度でも上書きできます。

bootldr4.PNG

モーターを回してみる前に設定が必要です

************************************
設定方法
************************************

1.スライドスイッチをUSBコネクタ側にスライドさせる
2.制御回路の電源を入れる(DC1ジャックに5V電源投入)
3.ロータリーエンコーダを回して設定項目を選ぶ
4.SW1(赤ボタン)を押して変更モードに入る。
  変更モードになるとLED3(赤LED)が点灯する。
5.ロータリーエンコーダを回して設定値を変更する。
  桁数の大きな項目はカーソルが表示される。
  SW2(白ボタン)を押してカーソルの移動が出来る
6.SW1を押すと設定値が保存される


************
 設定項目
************

  項目名        意味
 -------- ------------------------------
 Dengen   モーター電源の電圧
          ハードの仕様上5V~12Vで無ければなりません
 Motor    モーターの定格電圧
          通常は電源電圧と同じですが5Vより定格電圧の低いモーターは
          ここで電圧を設定します
          定格電圧以上を指定するとモーターが焼き切れやすくなります
 MAX      最大回転数です
          モーターの回転数はエンコーダーを回すことにより増減できますが
          ここで設定した値以上にはなりません
 MIN      最低回転数です
          模型用モーターは低速回転が苦手です
          低速回転させるときはギヤ比を大きくする必要があります
          多くのも形容モーターでは800rpm以下で制御不安定になります
 Initial    初期回転数
          電源を入れ白ボタンを押すとモーターが回り出します
          そのときの初期回転数です
 STEP     エンコーダーを回したときの回転数の増減値です
          初期値は100rpmになっています
 Mode     FREEとBRAKEがあります
          通常はFREEにして下さい
          BRAKEにすると短い周期で モータ回転->ブレーキ(モーター両端子をショート) を
          繰り返します。
          BRAKEモードの方が低速時の回転制御がうまくいきます
 KAITEN   CWとCCWがあります
          モーターの回転方向です
          回してみて回転方向が逆だった場合、この項目を変更すれば回転方向が変わります
 Kp       PID係数
 Ki       PID係数
 Kd       PID係数

 PID係数は変更しながら最適値を求める必要があります
 最初は以下の値に設定し、回転の状態を見ながら調整します

 モーター種類  PID係数の値
 ------- -------------------------------
 RS-380  Kp=0.0400  Ki=0.0100 Kd=0.0300
 RE-280  Kp=0.0080  Ki=0.0100 Kd=0.0030
 ミニ四駆    Kp=0.0080  Ki=0.0015 Kd=0.0030

 Kp:変更しても余り変化が現れません
    回転数を維持しようとする力を強くします
 Ki:基本的にこの値だけを変更します
    これを大きくすると回転数が目標値からずれたときに目標値に戻そうとする力が強くなります
    強くしすぎると(=大きくしすぎると)回転数が振動してしまいます
 Kd:回転数の変動を2回転前と1回転前の回転数の情報を使って、ほんのちょっとだけ未来予測します
    これもKp同様変更しても余り効いてきません

 PID制御を知っている人へ
  Kpは比例、微分、積分全ての項にかかっていますが手動での調整がやりにくくなるので、
  このプログラムでは比例項にしかかからないようにしてあります。
  PIDの計算は全て割り込み関数 void High_priority_interrupt() で実行しているので詳しくはプログラムを参照して下さい

R0013767.jpg

設定をするときはスイッチをこの位置にしてから電源を入れる

R0013770.jpg

設定値は液晶ディスプレイに表示される。エンコーダーを回して値を設定。

*************
 使い方
*************

・センサーに遮光式のフォトインタラプタを使うときはモーターにこんなスリット付き円盤を取り付けます

R0013776.jpg

=============
 スイッチ
=============
・SW2(白ボタン)を押すとモーターが回り出します
・SW2を再度押すと止まります
・エンコーダーを回すと回転数を変更出来ます
 モーター開店中でも停止中でも回転数は変更可能です
・スライドスイッチを奥(USBコネクタ側)にスライドさせるとプログラムの設定モードになります
 手前にするとモーターを回すモードになります

=============
 LED
=============
・LED1(緑) 割り込み処理中だけ点灯します
         モーターが回っているときはうっすらと点滅しているのが解ります
・LED2(橙) 設定した回転数より60rpm下回ると点灯します
・LED3(赤) 設定した回転数より60rpm上回ると点灯します

=============
 液晶
=============
・上段は 現在回転数を表します
     ロータリエンコーダーを回した直後数秒だけは目標回転数が表示されます
・下段は PWMのデューティーです
     回転数が大きいほど大きくなります最大値は1023最小値は0です
・右下  FREEモードの時「F」、BRAKEモードの時「B」と表示されます

=============
 機能
=============
・モーターが過負荷で5秒間停止すると焼き付き防止のためモータを回すのを止めます。

プログラム これをUSB経由で書き込みます
ファイル ファイルタイプ 添付ファイルの解説
HIDBootLoader.zip ZIP パソコン側で動くプログラムです。解凍して適当なフォルダーにおいて実行して下さい。
DC_MOTOR_H_20120208.zip ZIP モーター制御プログラム Version1.00 この中にある拡張子がhexのファイルだけが必要です。
ご参考
ファイル ファイルタイプ 添付ファイルの解説
Bootloader.zip ZIP PIC18F4550に書き込んであるブートローダー。初期出荷状態ではこれだけが書き込んであります。
DC_Motor_EAGLE.zip EAGLE プリント基板CAD EAGLE V4.16ファイル 基板が大きいので無料版のEAGLEでは修正できません
dcm001.wmv MOVIE 動いているところ。
sch.PNG PNG 回路図

=================================================
 プログラムを自力で修正できる人への情報
=================================================

PICKIT2等の書き込み機を持っている場合はブートローダーがかえって邪魔になります
以下の3カ所を修正して再コンパイルすればブートローダー無しで動くようになります

プログラム本体と

R0013777.jpg

割り込みベクタなどの設定をするCのスタートアップルーチンと

R0013778.jpg

リンカの入力ファイル

R0013779.jpg