2012-07-13
モーターを制御している所。この写真のarduinoは互換機です。
*****************************************
使い方
*****************************************
・各ピンの機能については表を参照
・DCジャックVM
モーター電源を接続するためのもの
arduinoから供給される5Vロジック電源以外にモーター用の電源が必要
定格は5~24V
ステッピングモーターは12もしくは24Vで使うことが多い
・モーター用端子
A+:モーターのA相につなぐ
A-: 同上
B+:モーターのB相につなぐ
B-: 同上
ステッピングモーターには2つのコイルが入っていてそれぞれA相、B相と呼ばれる
A+とA-、B+とB-はコイルなのでテスターで計測すると低い抵抗値になる
A相とB相は絶縁されているのでテスターで両相間の抵抗値を計測すると∞Ωになる
・ディップスイッチ
M1、M2でモーターの駆動モードを変更する
M1=OFF,M2=OFF 2相
M1=ON, M2=OFF 1-2相(ステップ角は2相の半分になる)
M1=ON, M2=ON 2W1-2相マイクロステップ(ステップ角は2相の1/4)
M1=OFF,M2=ON 4W1-2相マイクロステップ(ステップ角は2相の1/16)
DCY1,DCY2でモーターに流す電流の制御モードを変更する
通常両方ともOFFにする
オシロスコープがないと設定すべき最適値はわからないのでOFFのまま使う
詳しくはデータシートを参照
・RESETスイッチ
arduinoのリセットスイッチをシールド上に増設した物
・タクトスイッチSW2、SW3
特にモータードライバーとは関係の無い回路
・LED
MO:電源ONで点灯。モーターが回ると点滅
PROTECT:モータードライバー過熱時に点灯
LED3:arduinoのD13ポートのLEDを増設した物
・基板の3mmの穴
ヒートシンクを取り付ける時の補強用
ICのパッケージはかなり頑丈なので小さなヒートシンクなら補強不要
基板表面。この写真一番下側の穴は蛇の目基板ピッチになっています。
基板裏面。裏面に半田付けする部品はダイオード4個とピンヘッダだけです。
部品表
ダイオードの取付向き表面。一番最初に表面のダイオードを半田付けして下さい。モーター用のターミナルを取り付けてしまうと半田付け困難になります。
ダイオードの取付向き裏面
電流制限抵抗は半田付けする本数で電流を調整します。キットには1Ωの抵抗が14本入っています。
電流[A]=0.5[V]/抵抗値[Ω]
となります。
抵抗値[Ω]=1[Ω]/取り付ける本数
です。電流は3.5A/相以下になるようにして下さい。A相、B相それぞれ3.5Aが最大です。
R8,9,10がA相用、R5,6,7がB相用です。A相、B相は同じ抵抗値にする必要があります。
複数ほんの抵抗を半田付けできるように穴はかなり大きくなっています。写真の例では各相6本の抵抗を取り付けて3.0Aの電流に設定しています。
取り付ける抵抗の本数とモーターに流す電流の対応表
・赤丸の部品は取付向きがあります。
・黄色丸側の部品の足が長くなっています。向きが分かり難い電子部品はプラス側の足が長くなっています。黄色丸がプラスです。
回路図
ステッピングモーターシールド 各ピンの機能
0001 /*---------------------------------------------------------------*/
0002 /* arduino stepper motor shield TB6560AHQ 3.5A Ver1.00 */
0003 /*---------------------------------------------------------------*/
0004 #define MOTOR_CLK 5 // D5
0005 #define MOTOR_RESET 3 // D3
0006 #define MOTOR_ENABLE 4 // D4
0007 #define MOTOR_CWCCW 19 // A5
0008 #define MOTOR_TQ1 6 // D6
0009 #define MOTOR_TQ2 7 // D7
0010
0011 #define CCW HIGH
0012 #define CW LOW
0013
0014 void tb6560_stop()
0015 {
0016 digitalWrite( MOTOR_RESET, LOW );
0017 digitalWrite( MOTOR_ENABLE, LOW );
0018 }
0019
0020 void tb6560_start()
0021 {
0022 digitalWrite( MOTOR_RESET, HIGH );
0023 digitalWrite( MOTOR_ENABLE, HIGH );
0024 }
0025
0026 void setup()
0027 {
0028 pinMode(MOTOR_CLK, OUTPUT);
0029 pinMode(MOTOR_RESET, OUTPUT);
0030 pinMode(MOTOR_ENABLE, OUTPUT);
0031 pinMode(MOTOR_CWCCW, OUTPUT);
0032 pinMode(MOTOR_TQ1, OUTPUT);
0033 pinMode(MOTOR_TQ2, OUTPUT);
0034
0035 digitalWrite(MOTOR_TQ1, LOW ); // torque = 100%
0036 digitalWrite(MOTOR_TQ2, LOW ); // torque = 100%
0037 }
0038
0039 void loop()
0040 {
0041 int i;
0042
0043 tb6560_start(); // power on
0044 digitalWrite(MOTOR_CWCCW, CW);
0045 for( i = 0; i < 400 ; i++ ) {
0046 digitalWrite(MOTOR_CLK, HIGH);
0047 delay(1);
0048 digitalWrite(MOTOR_CLK, LOW );
0049 delay(4);
0050 }
0051 tb6560_stop(); // power off
0052
0053 delay(1000);
0054
0055 tb6560_start(); // power on
0056 digitalWrite(MOTOR_CWCCW, CCW);
0057 for( i = 0; i < 400 ; i++ ) {
0058 digitalWrite(MOTOR_CLK, HIGH);
0059 delay(1);
0060 digitalWrite(MOTOR_CLK, LOW );
0061 delay(9);
0062 }
0063 tb6560_stop(); // power off
0064
0065 delay(1000);
0066 }