workshop/ArduinoBasis/stepper

Steppingモータ

Stepping モータ(ステッパ)は,Servoモータのようにパルスに同期して回転を制御するモータです. Servoモータの場合はパルス幅で絶対角度を制御しますが,Steppingモータの場合はパルスで 相対的な角度を制御します.つまり,

  • サーボモータ:角度をXX度に指定する
  • ステッピングモータ:現在位置から角度をXX度回転する

というわけです.でステッパの利点ですがこれはサーボと異なり自由に何度も回転できる点です. 3Dプリンタや工作機械等では軸移動にほとんどこのステッパを利用しています. このページはあくまでステッピングモータの動作理解と,トルクの弱い事例の紹介になります.トルクの強い事例は L6470を使ってステッピングモータを制御するを参照してください.

Arduinoで動かしてみる

利用するステッパにもよりますが,Arduinoで直接動作させることができます. ただしトルク(回転させる力)が落ちるためその点は注意する必要があります.このページでは 手軽に直接Arduinoから制御しますが,ある程度のトルクやスピードが必要な場合はドライバICを 利用してください.ではまずステッピングモータについてですが,まずはこちらの説明記事の 114.ステッピングモータを動かす,114-1.ステッピングモータの動かし方,114-2.手動で動かして見る, だけで良いので読んで理解してください.

はい,ステッピングモータはこのようにシンプルな構造となっているわけです.記事の中にもありましたが,スイッチを 押して手動で動かすことも可能です.ではこれをArduinoでやってみます.今回利用するステッピングモータですが, コパルステッピングモーター SPG20-1308を 例に話を進めます.2相ユニポーラ型のこのサイズでは小型で一般的なものです.


http://homepage1.nifty.com/rikiya/software/114stepping1.htm より出典

これを参考にし,Arduinoでこれを実現するコードを記述してみます.ステッパの各端子は付属するデータシートに次のように 表記されています.

データシート中の端子記号と解説ページのX,Yの対応は上図のようになっています. $\phi 1 = X, \phi 2 = Y, \overline{\phi 1}=\overline{X}, \overline{\phi 2}=\overline{Y} $ というわけで以上の情報をもとにまずArduinoとステッパを接続してください.今回は $\phi 1, \phi 2, \overline{\phi 1}, \overline{\phi 2} $ をそれぞれ順に4,5,6,7番ピンに接続します. なお $ \phi 1C, \phi 2C $ は電源に接続してください.

int pin[4] = {4,5,6,7};

void setup()
{
  for( int i = 0; i < 4; i++ ){
    pinMode(pin[i], OUTPUT);
  }
}

void loop()
{
  for( int i = 0; i < 4; i++ ){
    digitalWrite(pin[i], HIGH);
    delay(10);
    digitalWrite(pin[i], LOW);
  }
}

ArduinoのStepperライブラリで動かす

サーボと同様にステッパについてもArduinoにてライブラリが提供されています.下のプログラムのとおりです. Stepperのコンストラクタに渡す引数の順番は
$ 何ステップで一回転するか, \phi 1, \overline{\phi 1}, \phi 2, \overline{\phi 2}$
となります.

#include < Stepper.h >
const int stepsPerRevolution = 360;  // change this to fit the number of steps per revolution
Stepper myStepper(stepsPerRevolution, 4,6,  5,7);   

void setup()
{
  myStepper.setSpeed(15);
}

void loop()
{
  myStepper.step(1);
}



Copyright (c) 2015 Tetsuaki BABA all rights reserved.