概要
TB6600はステッピングモータを制御することができる、ステッピングモータコントローラです。TB6600を用いることで、ステッピングモータの回転速度や回転の粒度、方向などをマイコンから制御できるようになります。本記事ではTB6600を使ってステッピングモータをArduino経由で制御する方法について解説します。
分解能について
分解能とは1回のパルス波で何度回転するか、といった指標になります。
これは、ステッピングモータ自身が持っているパラメータで、「基本ステップ角度」と呼びます。モータごとに分解能は変わりますが、2相ステッピングモータで1.8°、5相ステッピングモータで0.72°の基本ステップ角をもつものが多くなっています。
基本ステップ角は、使用するステッピングモータの仕様を見て確認しましょう。
分解能と電流の設定
筐体の側面にこのような赤い領域に6個の爪がついています。この爪は上に上げるとOFF、下に下げるとOFFを示します。
それぞれの爪には1〜6の数字がついていますが、これらのON/OFFの組み合わせで分解能や電流の設定ができます。組み合わせの表は筐体の全面に記載されています。
S1〜S6と書かれているのが、側面の爪の1〜6に対応しています。例えば、S1 ON、S2 ON、S3 OFF、S4 ON、S5 OFF、S6 ONとすると、分解能は2行目の1(200 pulse/rev)になり、電流は2行目の1.0A(ピーク電流1.2A)となります。
ステッピングモータの刻みを細かくしたい場合は分解能を上げていきます。電流を増やしたい時、つまりトルクを強くしたい時は電流を上げていきます。電流を上げると力が強くなるので、より強い力に耐えられるようになりますが、その分、電力消費も激しくなるので注意が必要です。
配線
電源とステッピングモータの接続
- 電源: TB6600は電圧9V-40Vが駆動電圧ですので、それにあったDC電源を用意します。VCCにプラス、GNDにマイナスを接続しましょう。電圧はステッピングモータの仕様に合わせて決定をします。
- ステッピングモータ:A-、A+、B-、B+それぞれにステッピングモータのリード線を接続しましょう。この時、ステッピングモータの相に合うように接続をしましょう。
ステッピングモータの接続については、データシート次第ですが、例えば、データシート上で下記のように記載されていたとすると、A- 緑、A+ 黒、B- 青、B+ 赤のように接続します。
Arduinoとの接続
続いてArduinoを接続していきます。
- ENA+、DIR+、PUL+:こちらはArduinoの5Vに繋ぎます。
- ENA-:モータコントローラのON/OFFを制御する端子に繋ぎます。ENAを用いると、モータを動作させていないときにOFFにすることで電力消費を抑えることができます。逆にONにすることで、モータを動かしたり、停止状態で保持することなどができます。今回は11ピンに繋ぎます。
- DIR-: モータの回転方向を制御する端子に繋ぎます。今回は12ピンに繋ぎます。
- PUL-: パルスを送る端子に繋ぎます。パルスの間隔や回数によってモータの回転速度や時間が決まります。今回は13ピンに繋ぎます。
コード例
Arduinoで制御するコード例です。
int step_pin = 13; int dir_pin = 12; int relay_pin = 11; void setup() { pinMode(step_pin, OUTPUT); pinMode(dir_pin, OUTPUT); pinMode(relay_pin, OUTPUT); digitalWrite(dir_pin, HIGH); digitalWrite(relay_pin, LOW); Serial.begin( 9600 ); } void loop() { spinMotor(0,500); delay(3000); spinMotor(1,500); delay(3000); } void spinMotor(int direction, int num){ digitalWrite(relay_pin, HIGH); if(direction == 0){ digitalWrite(dir_pin, LOW); }else{ digitalWrite(dir_pin, HIGH); } for(int i=0;i<num;i++) { digitalWrite(step_pin, HIGH); delayMicroseconds(1000); digitalWrite(step_pin, LOW); delayMicroseconds(1000); } digitalWrite(relay_pin, LOW); }
上記例では、一定量回転した後に逆方向に回転させるという動作をします。
spinMotorが実際にモータを回転させる関数で、PUL-につながっているstep_pinのHIGH/LOWを繰り返すことによってモータが回転します。このstep_pinのHIGH/LOWの繰り返し回数がモータの回転時間に影響します。
また、dir_pinはDIR-に繋げたピンで、HIGH/LOWを切り替えることで、回転の方向を切り替えることができます。
relay_pinはENA-と繋がっており、spinMotorでモータを回転させるときだけHIGHにして、回転が終了後にLOWにしています。ENAを使わないと、モータが動いていない時もモータコントローラが起動し回転停止のために電力が使われてしまうため、この例では回転させるときだけモータコントローラを有効にすることで無駄な消費電力を抑えています。
動作の様子