概要

TB6600はステッピングモータを制御することができる、ステッピングモータコントローラです。TB6600を用いることで、ステッピングモータの回転速度や回転の粒度、方向などをマイコンから制御できるようになります。本記事ではTB6600を使ってステッピングモータをArduino経由で制御する方法について解説します。

https://rb-station.com/products/%E9%A7%86%E5%8B%95%E9%9B%BB%E5%9C%A79v-40v-%E9%A7%86%E5%8B%95%E9%9B%BB%E6%B5%81-4a-%E3%82%B9%E3%83%86%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0%E3%83%A2%E3%83%BC%E3%82%BF%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9-tb6600

分解能について

分解能とは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配線

  • 電源: TB6600は電圧9V-40Vが駆動電圧ですので、それにあったDC電源を用意します。VCCにプラス、GNDにマイナスを接続しましょう。電圧はステッピングモータの仕様に合わせて決定をします。
  • ステッピングモータ:A-、A+、B-、B+それぞれにステッピングモータのリード線を接続しましょう。この時、ステッピングモータの相に合うように接続をしましょう。

ステッピングモータの接続については、データシート次第ですが、例えば、データシート上で下記のように記載されていたとすると、A- 緑、A+ 黒、B- 青、B+ 赤のように接続します。

ステッピングモータ仕様

Arduinoとの接続

 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を使わないと、モータが動いていない時もモータコントローラが起動し回転停止のために電力が使われてしまうため、この例では回転させるときだけモータコントローラを有効にすることで無駄な消費電力を抑えています。

動作の様子

 

Arduinoステッピングモータモータコントロール

Related Posts

DCモータ制御で配線が複雑になる場合はDCモータコントローラシールドMD04を使うと便利!
DCモータ制御で配線が複雑になる場合はDCモータコントローラシールドMD04を使うと便利!
概要 DCモータを動作させる際は、モータコントローラを用いると便利ですが、それでも複数のモータを動作させようとしたときには配線がごちゃごちゃになってしまいがちです。そのような時は、シールドタイプのDCモータコントローラを使えば、マイコ...
Read More
Arduino Nano互換ボードで書き込めない時はプロセッサを確認
Arduino Nano互換ボードで書き込めない時はプロセッサを確認
概要 安価なArduino Nano互換ボードを使っていると、Arduino IDEで書き込みができずにエラーになってしまうことがあります。本記事ではその対処法について解説をします。 対処法 書き込み時にエラーが出る原因はさまざまな...
Read More
ブレッドボードに5V/3.3Vの電源をMB102で供給する
ブレッドボードに5V/3.3Vの電源をMB102で供給する
概要 ブレッドボードには電源を流すことに主に用いられる、両脇の赤と青のラインがあります。Arduinoなどのマイコンから5Vや3.3Vの電源を供給することもできますが、色々な用途に使っていると電流が足りなくなってしまったりするので、別...
Read More