ステッピングモーター制御キットの作り方

==============================
 主な機能
==============================
 
・スイッチを押すと設定した速度、回転方向、回転数(ステップ数を指定)だけ回転します
・スイッチ毎に設定したステップ数だけ回ってから停止します
・スイッチは放してから0.1秒間は押しても反応しません
・回転中にスイッチが押された場合、回転は中断され押されたスイッチの動作が実行されます
・回転中は他のスイッチの動作を抑止したいという場合には優先順位をスイッチに設定します
・モーターを回さずに「所定の時間だけ待つ」という動作もできます
・シーケンス動作も可能です
 例えば、SW1に設定した動作が完了したらSW2に設定した動作を自動的に実行することができます
 これは設定項目の「次のスイッチID[NEXT]」で設定します
・シーケンス動作の繰り返しも可能です
 シーケンス動作とはピタゴラスイッチ的動作のことです
・基板外にマイクロスイッチやプッシュスイッチを最大5個増設できます
 これらはリミットスイッチとして使用することができます。もちろん普通のスイッチとしても利用可能です

==============================
 このキット以外に必要な物
==============================
・ロジック回路電源
・モーター電源
  ステッピングモーターは定格電圧(たいてい数ボルト)より高い電源電圧で動かします
  電流を制限してモーターが焼けないようにします
  12Vや24Vが一般的です
・バイポーラステッピングモーター
  ユニポーラステッピングモーターは使えません。このキットはバイポーラ専用です
・放熱器(流す電流が大きい場合は必要です) 0.5A程度ならなくても大丈夫です
 発熱するのはIC2です
 必要な場合はアルミ板などを使用して放熱して下さい
・USBケーブル(プログラムにバグがあった場合、USB経由で更新できます)
 対応OS WindowsXP,Windows7,Windows8 全て32bit

==============================
 主な電気的仕様
==============================
・制御できるモーターは1台
・最大電流は3.5A/相
・モーター電源 5V以上 25V以下(へなちょこパワーのモーターならAC-DCアダプターでも回ります)
・ロジック回路電源 電圧5V 200mA以上 実測60mA(AC-DCアダプターを使うのが一番安上がりです)

==============================
 設定可能な項目
==============================
全体で一つしか設定できない項目
 ・モーター駆動方式(2相、1-2相、マイクロステップ)
 ・回転停止中に電源を切るか否か
スイッチ毎に設定できる項目
 ・ステップ数
 ・回転方向
 ・1ステップ動かすのに要する時間
 ・トルク(流す電流を4段階に設定できる)
 ・繰り返し回数
 ・優先順位

==============================
 出来ないこと
==============================
必要性が無いとみて実現していない機能です
要望があれば必要性を判断してソフトを開発します

・スイッチを放したことは動作のきっかけにはなりません
 スイッチは押したときだけに意味があります
 このため「スイッチを押している間だけモーターを回す」という動作はこのバージョンのプログラムでは実行できません
・繰り返し動作がさらに繰り返し動作を含むこと
 詳しくは「次のスイッチID」についての説明を参照
・設定値に「無限」はありません。無限は必要以上に大きな値を設定することで実現できます
・外部スイッチEX1~EX5は押してONになる物が使えます
 通常時がONで押すとOFFになる物は使えません
 マイクロスイッチを使用する場合は動作時にONになる方の端子を使用して下さい


2012-06-19

キットが完成するとこうなります。大きなモーターも回せます。但し放熱器が必要になります。この写真に写っている物の内、キットに付属している物は基板に直接実装されている部品だけです。電線や電源は付属していません。

R0014850.jpg

基板表面。
・SIGNAL,GNDはマイクロスイッチを取り付ける穴です。
 スイッチは最大5個取り付けられます。
 チャタリングのあるスイッチも使用可能です
 マイクロスイッチを使用する場合は押したときONになる端子を使用して下さい。
・スイッチの代わりにセンサーも使用可能です。センサーを使うときは
  -センサー動作時に出力がLOW(0V)になる物を使う
  -端子の隣にある抵抗(プルアップ抵抗)を取り付けない
  -センサー用電源は抵抗取付用の穴VCCから取り出す
・使用可能なセンサー
   磁石式センサー基板
   遮光式センサー基板EE-SX1131
   遮光式センサー基板SG206
   反射式センサー基板 3mm砲弾型センサー

R0014866.jpg

液晶ディスプレイを取り外したところ。6ピンのピンヘッダはPICKIT2でプログラムを書き込むための物なのでキットに付属していません。プログラムはUSBコネクター経由で書き込み可能です。

R0014863.jpg

裏面にも取り付ける部品があります。ダイオード4つだけです。面実装品ですが大きいので半田付けは容易です

R0014858.jpg

半田付け時の参考にして下さい LEDは上から見たときに欠けている方がマイナスで足が短くなっています

brdlayout.PNG

・ロータリーエンコーダは小さい物に変更しました
・タクトスイッチは黒に変更しました
・積層セラミックコンデンサは茶色い部品が入っていることもあります
・ディップスイッチは赤に変更しました
・液晶は普通の黒文字タイプに変更しました
 旧バージョンはバックライトを点灯させないと文字が読めませんでしたがこれはバックライトを消しても文字が読めます
 電池駆動する場合はバックライトを消灯して消費電力を小さく出来ます
・液晶の変更に伴いR1は0Ωの抵抗に変更しました
・LEDは消灯時白、点灯時赤の物に変更します

R0023625.jpg
R0024008.jpg
R0024012.jpg
R0027439.jpg
R0026745.jpg
R0027732.jpg

部品表
積層セラミックコンデンサは色違いの部品が入っていることがあります
22pF,330pF,1μFはどんな販売ロットでも青い物が入っています
0.1μFは青い物から茶色い物に変更しました
47μF電解コンデンサは耐圧35V、50Vのどちらかが入っています

buhinhyoRev2.png
旧部品表
ファイル ファイルタイプ 添付ファイルの解説
partslist.PNG PNG 旧販売ロット部品表(2015/11/01以前販売分の部品表)

電流制限抵抗は半田付けする本数で電流を調整します。キットには1Ωの抵抗が14本入っています。
 電流[A]=0.5[V]/抵抗値[Ω]
となります
 抵抗値[Ω]=1[Ω]/取り付ける本数
です。電流は3.5A/相以下になるようにして下さい。A相、B相それぞれ3.5Aが最大です
R18の並びがA相用、R12がB相用です。A相、B相は同じ抵抗値にする必要があります。

R0014787.jpg

電流制限抵抗

R0014785.jpg

このダイオードを一番先に取り付けて下さい。ターミナルを半田付けしてしまうとダイオードの半田付けが困難になります。

取り付ける抵抗の本数とモーターに流す電流の対応表

ar.png

【旧販売ロットの説明です】液晶ディスプレイの裏側には100Ωの抵抗を取り付けます。R9は抵抗のリード線を切った物でショートさせます。

R0014873.jpg

新販売ロットは液晶ディスプレイが16ピンの物に変更されています。R1を取り付けるとバックライト点灯、取り付けないと消灯です

R0027441.jpg
プログラム/参考資料
ファイル ファイルタイプ 添付ファイルの解説
schimg.PNG PNG 回路図
TB6560picUSB4550eagle.zip EAGLE プリント基板CAD EAGLE V4.16 回路図&基板レイアウト
microsw.wmv MOVIE マイクロスイッチをリミットスイッチとして使った例。目玉クリップで挟んであるのがマイクロスイッチです。

モーターを回すためには設定が必要です。メニュー階層はこのようになっています

menu.png

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

多機能なので以下の説明をざっと読んでから、いじってみて下さい。
動かしながら機能を確認する方が楽です。
機能について不明な点があればネットショップの特定商取引法のページに有るメールアドレスに連絡下さい。

・[ ]内は液晶表示を表します
・設定は5V電源だけが必要です
 モーター電源およびモーターは接続不要です。(接続しても問題ありません)
・VR1を回して液晶ディスプレイの輝度調整をしないと文字が見えません
 電源電圧が0.2V程度変わると調整が必要になります
・スイッチの動作割り当ては以下のようになっています
 -SW5を「SETUP」にして電源を入れると設定モードになります
  設定モードから抜けるためにはSW5を「RUN」にして電源を入れ直します
  モーターを回すときは「RUN」にします。
 -ロータリーエンコーダを回して項目や設定値を変更
 -SW3がENTER
 -SW2がカーソル移動
  カーソルが表示されているときだけ有効です
 -SW1がキャンセルまたは元に戻る
・液晶ディスプレイ上段の意味
  [SYS MODE] システムモード システム全体で1つしか設定できない項目
  [DRV MODE] 駆動モード 2相駆動、マイクロステップ駆動など
  [OFF MODE] モーター回転停止時に電源をOFFするか否か
  [SW1 nnn] ~ [SW3 nnn] 基板上のオンボードスイッチSW1~SW3を押したときの動作 nnnは次のスイッチID(解説は下の方にあります)があるとき
  [EX1 nnn] ~ [EX5 nnn] 外部スイッチEX1~EX5を押したときの動作
  [SF1 nnn] ~ [SF7 nnn] ソフトウエアスイッチSF1~SF7を押したときの動作
  [DIRC xxx] モーターの回転方向 xxxはスイッチID
  [UNIT xxx] 1ステップだけ回すのに要する時間の単位
  [ITVL xxx] 1ステップだけ回すのに要する時間
  [STEP xxx] 回転ステップ数
  [PRI xxx] スイッチの優先順位(優先順位の高いスイッチしか反応しない)
  [TORQ xxx] モーターの回転トルク
  [NEXT xxx] 次のスイッチID
  [REPT xxx] 繰り返し回数
・設定値の変更が可能になっているときはLED3が点灯します
・USB経由でプログラムを上書きすると初期出荷時の状態に戻ります
 キー操作で初期出荷時の状態に戻す方法はありません

※ソフトウエアスイッチについて:
 物理的に存在しないので押すことができません。シーケンス動作専用です。

************************
 システムモードの設定
************************

「駆動モード[DRV MODE]」と「回転停止時に電源ON/OFF[OFF MODE]」を設定できます

********************************
 駆動モードの設定 [DRV MODE]
********************************

モーターの駆動モードを設定します

設定可能な値
 [x1 ] 2相駆動
 [x2 ] 1-2相駆動
 [x8 ] 3ビットマイクロステップ
 [x16 ] 4ビットマイクロステップ

4ビットマイクロステップは1ステップ角1.8度(200ステップで1回転)のステッピングモーターだと
200×16=3200ステップで1回転します

**************************************************
 回転停止時に電源ON/OFFの設定 [OFF MODE]
**************************************************

モーター回転停止時にモーターへの電源供給をOFFするか否か設定します
回転停止時に保持トルクが必要ない場合電源をOFFにしてください
電源をOFFするとモーターの発熱が抑えられます

設定可能な値
 [PowerOFF] 停止時に電源OFF
 [PowerON ] 停止時に電源ON


*****************************************************************************
           スイッチに割り当てる動作の設定
*****************************************************************************

step1.スイッチ番号の切り替えはロータリーエンコーダを回す。
      SW3を押してそのスイッチの設定を変更モードに入る
step2.ロータリーエンコーダを回して設定したい項目を選び
      SW3を押してその項目の変更モードに入る
step3.ロータリーエンコーダを回して設定したい項目の値を変更する
      SW3を押して保存

*********************************************************
 モーターの回転方向 [DIRC]
*********************************************************

モーターを回転させない待ち時間を入れたい場合は回転方向を HALT にします

設定可能な値
 [CCW ] 反時計回り
 [CW ] 時計回り
 [HALT ] 回転停止

※ステッピングモーターは結線を変更すると逆回転します


*********************************************************
 1ステップだけ回すのに要する時間の単位 [UNIT]
*********************************************************

モーターを1ステップだけ回転させるのに要する時間の「単位」を設定します

設定可能な値
 [MicroSec] マイクロ秒
 [MilliSec] ミリ秒
 [Second ] 秒

*********************************************************
 1ステップだけ回すのに要する時間 [ITVL]
*********************************************************

モーターを1ステップだけ回転させるのに要する時間を設定します
上記単位によって設定できる値は異なります
回転方向がHALTの場合、待ち時間を意味します
大きな値を入力するときはSW2を押してカーソルを移動させて下さい

設定可能な値
 120~16,000マイクロ秒
 1~99,999,999ミリ秒
 1~99,999,999秒

モータードライバーの能力を超えるため120マイクロ秒以下にはできません
4ビットマイクロステップ駆動の場合、この値を16分の1にしないと2相駆動と同じ速度で回転しません
以下の2つの設定例は同じ速度で回転します

[UNIT SW1] : MicroSec
[ITVL SW1] : 10000

[UNIT SW2] : Millisec
[ITVL SW2] : 10

*********************************************************
 回転ステップ数 [STEP]
*********************************************************

回転させるステップ数を指定します
回転方向がHALTの場合、待ち時間を意味します
大きな値を入力するときはSW2を押してカーソルを移動させて下さい

設定可能な値
 1~99,999,999ステップ

4ビットマイクロステップ駆動の場合、この値を16倍しないと2相駆動と同じ角度だけ回転しません

*********************************************************
 優先順位 [PRI]
*********************************************************

スイッチには優先順位を割り当てられます
優先順位の高いスイッチの動作を実行中はそれより低い優先順位のスイッチの操作は無効です

設定可能な値
 [LOW ] 一番低い優先順位
 [2 ]
 [3 ]
 [4 ]
 [HIGH ] 最も高い優先順位

緊急停止スイッチが必要であれば一番高い優先順位を割り当てる必要があります

*********************************************************
 トルク [TORQ]
*********************************************************

モーターに流す電流を制御してトルクを変更します
トルクを高くするとモーターの発熱も大きくなります

設定可能な値
 [25% ] トルク 25%
 [50% ] トルク 50%
 [75% ] トルク 75%
 [100% ] トルク100%

以下のようにするとSW1の動作が完了した後には保持トルクを25%に落としてモーターの発熱を小さくできます
次にスイッチが押されるまでモーターは止まったままです

 [STEP SW1] : 200
 [DIRC SW1] : CW
 [TORQ SW1] : 100%
 [NEXT SW1] : SF1
 [UNIT SF1] : Second
 [ITVL SF1] : 99999999 <-実質的な無限
 [STEP SF1] : 99999999 <-実質的な無限
 [DIRC SF1] : HALT
 [TORQ SW1] : 25%
 [NEXT SF1] : nothing

*********************************************************
 次のスイッチID [NEXT]
*********************************************************

これを設定しておくとスイッチを押さなくても動作を実行することができます
これにより一連の動作を実行するシーケンス動作が可能です

設定可能な値
 すべてのスイッチID もしくは なし[nothing]

SW1を押したら時計回りに200ステップ回転、その後反時計回りに200ステップ回転させたければ以下のように設定します
全項目例を挙げると目障りなので以下は主要な項目のみ

 [STEP SW1] : 200
 [DIRC SW1] : CW
 [NEXT SW1] : SF1
 [STEP SF1] : 200
 [DIRC SF1] : CCW
 [NEXT SF1] : nothing

反時計回りの動作には物理的スイッチは不要なのでSF1~SF7を使います(SF1~SF7以外のスイッチを使ってもかまいません)

*********************************************************
 繰り返し回数 [REPT]
*********************************************************

一連の動作を繰り返したい場合、繰り返し回数を設定します
シーケンス動作を実行したい場合、先頭のシーケンスだけに繰り返し回数を設定します

設定可能な値
 0~60000

SW1を押したら時計回りに200ステップ回転、その後反時計回りに200ステップ回転を10回繰り返したければ以下のように設定します
全項目例を挙げると目障りなので以下は主要な項目のみ

 [STEP SW1] : 200
 [DIRC SW1] : CW
 [NEXT SW1] : SF1
 [REPT SW1] : 10 <-繰り返し回数はシーケンス動作の先頭にだけ設定する
 [STEP SF1] : 200
 [DIRC SF1] : CCW
 [NEXT SF1] : nothing
 [REPT SF1] : 0

繰り返し処理がさらに繰り返し処理を含むような動作はできません

*********************************************************
 点灯させるLED [LED] 2015-04-06追加機能
********************************************************

モーターを回している間に好きなLEDを点灯させることが出来ます
LEDだけ点灯させたいときは回転方向を[HALT]にして下さい

設定可能な値
 [LED OFF] : LED全部OFF
 [LED1 ON] : LED1だけON
 [LED2 ON] : LED2だけON
 [LED3 ON] : LED3だけON

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

・モーターを接続しモーター電源と5V電源を入れてください
 電源を入れる順番はどちらが先でも問題ありません
 理想的には5V電源が先です
・スイッチを押すと設定通りに動きます
・スイッチを押したまま他のスイッチを押すと後から押したスイッチに反応します
 動作範囲を制限するリミットスイッチのように次の操作が実行されるまで
 押されたままになる可能性のあるスイッチに対応するためです
・SW1~SW3を押すと、その動作中はLED1~LED3が点灯します <-プログラムV2.00(2015-04-06開発)からは点灯させるLEDを設定できるように変更しました
・液晶ディスプレイに表示される値の意味
   [XXXnnnnn] <- XXX:スイッチID nnnn:繰り返し回数
   [mmmmmmmm] <- ステップ数 停止中はゼロ表示 回転中は減少していきます
・LED MO は
  2相励磁          4ステップに1回点灯
  1-2相励磁        8ステップに1回点灯
  3ビットマイクロステップ 32ステップに1回点灯(3ビットマイクロステップは厳密には2W1-2相励磁のこと)
  4ビットマイクロステップ 64ステップに1回点灯(4ビットマイクロステップは厳密には4W1-2相励磁のこと)
・LED PROTECT
 点灯はドライバーICの過熱を意味するのでもっと大きいヒートシンクを取り付けるか流す電流を抑える
・SW4は両方ともOFFにしておく。モーターに流れている電流が計測できる機器が無いと適切な設定に出来ません。殆どの場合OFFが最適値です。

*******************************************************************************
 プログラムの書き込み方
  ・バグがあった場合のみこの操作が必要です
  ・プログラムはすでに書き込まれています
*******************************************************************************

このページの一番下に添付してある HIDbootloader.zip を解凍し、HIDbootloader.exe を実行します。プログラムはこんな画面です。

bootldr1.PNG

SW3を押したままUSBケーブルを差し込みます。LED1とLED2が交互に点滅してプログラムの書き込み準備が出来たことを知らせてきます
書き込みのための電力はUSBから供給されるので電源は接続しないで下さい

R0014872.jpg

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

bootldr2.PNG

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

fname.PNG

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

bootldr4.PNG
現行バージョン 拡張子がHEXの物がプログラムです。ソースファイルも一緒に圧縮してあります。
ファイル ファイルタイプ 添付ファイルの解説
HIDBootLoader.zip OTHER Windows側のプログラム EXEファイルです。解凍して適当なフォルダーにおいて実行して下さい。
STEPPER_MOTOR_V201.zip MPLAB C18 プログラム本体 V2.01 プログラムをUSB経由で書き換えるときに使います
stepper_motor_and_bootloader_v2.01.zip OTHER PIC18F4550に書き込んであるブートローダーとプログラムを合体させたHEXファイル。V2.01
BootloaderStepper.zip MPLAB C18 ブートローダー すでに書き込んであるのでこれもご参考です CHECKSUM 69ED

==============
 バージョン履歴
==============
Ver   解説
---- -----------------------------------------------------------------------------------------------------------------------------------
1.00 初期バージョン
1.01 DRV MODE が使用中にx1~x16以外の値になり表示されなくなる問題の実験的修正
    原因不明のためDRV MODEを書き込んであるEEPROMアドレスを変更してみる
1.02 2つの問題を修正
    1.モーターの電源を切るモードでドライバー(TB6560)をリセットしていた問題を修正
      途中でリセットしてしまうため指定したステップ数だけ正確に回っていなかった
    2.回転->停止->回転 という動作をさせるときに停止時も0.5秒間だけ回転してしまう問題を修正
2.00 LED1~LED3を点灯させる設定項目を追加
2.01 優先順位の低いボタンを押すと高優先順位の動作が停止していた問題を修正
   優先順位の低い動作はそれより高い優先順位の動作を実行中はスイッチを押しても反応しないのが正しい動作
---- -----------------------------------------------------------------------------------------------------------------------------------

旧バージョン
ファイル ファイルタイプ 添付ファイルの解説
STEPPER_MOTOR_V1.00.zip MPLAB C18 プログラム本体 V1.00 すでに書き込んであるのでこれはご参考です。ブートローダーが無いと動きません。
stepper_motor_and_bootloader.zip OTHER PIC18F4550に書き込んであるブートローダーとプログラムを合体させたHEXファイル。V1.00
stepper_motor_and_bootloader_v1.01.zip OTHER PIC18F4550に書き込んであるブートローダーとプログラムを合体させたHEXファイル。V1.01
stepper_motor_and_bootloader_v1.02.zip OTHER PIC18F4550に書き込んであるブートローダーとプログラムを合体させたHEXファイル。V1.02 CHECKSUM F4EB
stepper_motor_and_bootloader_v2.00.zip OTHER PIC18F4550に書き込んであるブートローダーとプログラムを合体させたHEXファイル。V2.00 CHECKSUM D140
STEPPER_MOTOR_V101.zip MPLAB C18 プログラム本体 V1.01 すでに書き込んであるのでこれはご参考です。ブートローダーが無いと動きません。
STEPPER_MOTOR_V102.zip MPLAB C18 プログラム本体 V1.02 すでに書き込んであるのでこれはご参考です。ブートローダーが無いと動きません。
STEPPER_MOTOR_V200.zip MPLAB C18 プログラム本体 V2.00 プログラムをUSB経由で書き換えるときに使います