概要

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

積載重量2kg / 4輪駆動小型DCモータ メカナムホイールロボット台車・カーシャーシの組み立てマニュアル
積載重量2kg / 4輪駆動小型DCモータ メカナムホイールロボット台車・カーシャーシの組み立てマニュアル
概要 積載重量2kg / 4輪駆動小型DCモータ メカナムホイールロボット台車・カーシャーシの組み立て方について解説をします。 商品リンクは下記になります。 https://rb-station.com/products/%E7%A9...
Read More
温度・湿度センサーDHT11を使ってArduinoで温度と湿度を計測する
温度・湿度センサーDHT11を使ってArduinoで温度と湿度を計測する
概要 温度と湿度を計測することができるDHT11というセンサーを用いて、Arduinoで温度と湿度を計測する方法について解説をします。 DHT11について   DHT11は、温度と湿度を同時に計測することができるセンサーです。上記はモ...
Read More
Arduino IDEのインストール方法と使い方
Arduino IDEのインストール方法と使い方
概要 Arduinoは入出力ポートを備えたマイコンボードで、ソースコードを書くことで、さまざまなハードウェアを制御することができます。 ソースコードを開発・ボードに書き込むためには開発環境であるArduino IDEのインストールが必...
Read More