ステッピングモータ

ステッピングモータは外部からの磁界の制御で回転するモータです。パワーを加えれば自動的に回転するモーターではなく、外部からの制御で1ステップ回転します。

  1. ステッピングモータの構造

     ステッピングモータは、中央の回転軸に取付けられた磁石(回転子)と周囲の電極に巻かれた固定された電磁石で構成されています。電磁石に電流を流して磁化し、回転軸の磁石を引きつけることで回転します。
     図で X(赤) と ^X(青) のコイルは同じ極に両方のコイルが巻かれており、巻き線方向が逆になっています。この二つのコイルは左右に配置され同時に電流を流します。左右の磁極の向きは逆なので、X に電流を流すと右は S,左は N に磁化されます。どうように、Y と ^Y のコイルが上下に巻かれています。
     

  2. 動作原理

     上左図では右電極の X(赤)と下の電極 Y(赤)に電流を流しています。この状態で右と下の電極は磁石のSに磁化され、回転子のN極は右と下の二つのS極の中間に引きよせられます。同時に,左と上はNに磁化されて回転子のSを吸引しています。
     ここで、コイル X の通電を^X(青)に切り替えます(右図)。すると左の電極は S、右の電極は N になりますから、回転子のN極は左と下の電極の中間にひきよせられます。このとき、回転子のS極側は右上にひきよせられます。どうように、Y を ~Y に切り替えると回転子の N は左上に回転し、さらに、^X を X に切り替えると、右上に回転します。
     各コイルの電流の有無を 1/0 で表現すると、下の表のようになります。上から下に、一番下から上に戻せば、回転を続けます。この順を逆にすると、逆回転します。また、変化させないで同じパターンを続ければ、その場で停止します。(ブレーキ状態)。回転速度は、パターンを切り替える時間で定まります。
     X Y ^X ^Y 回転角度 
     1
     0 90 
     0 0 180 
     1 270 
      2相励磁
  3. 励磁方式

      ステッピングモータの励磁の方法には、コイルを1相ずつ励磁する“1相励磁”、2相ずつ励磁する“2相励磁”、1相2相交互にする“1−2相励磁”があります。 先の「動作原理」では2相励磁方式の説明になります。1相励磁より2相励磁の方が動作する電磁石が多い分、大きなトルクを発生します。1−2相励磁は、半分のステップ角で回転するので、振動が少なくなります。競技用ロボットでは、2相励磁がよく利用されています。2相励磁を拡張して、二つのコイルの電流を微調整すれば「マイクロステップ」が可能になります。
     一層励磁の場合、各コイルの電流の有無を 1/0 で表現すると、次のようにコイルを切り替えると正回転します。この順を逆にすると、逆回転します。
     X Y ^X ^Y 回転角度 
     1 0 
     0 90 
     0 0 180 
     0 270 
        一相励磁

  4. 使用するステッピングモーター

     ここでは、ステッピングモータとして SPG20-332を利用します。これはユニポーラ型のステッピングモーターで、端子の配線は A(白),B(赤),AC(黒), BC(青),^A(黄),^B(緑) の順です。各端子は、3本ずつまとめてピンヘッダにはんだ付けしておきます。
     定格は12V、150mAですが、5Vでも回転します。このモータ出力軸にギヤ(歯車)が入っており、回転数を落としています。1ステップで0.75度の回転になります。
      
       SPG20-332

  5. ドライバーIC

     UNO の端子では 直接ステッピングモータに電流を流すことはできません(端子の電流が不足します)。そこで、TD62064(ドライバ用IC) を利用しモータへの電流を供給します。I1 (I2 ,I3 , I4) が入力端子で O1(O2, O3, O4))が出力端子になります。出力端子は 50V、1.5A まで流すことができます。

      TD62064

     UNO の D2,D3,D4,D5 の端子で ステッピングモータのA,^A、B,^B 端子の駆動します。UNO の各端子をドライバーの 3,6,11,14 端子に入力し、出力端子 2,7,9,18 の端子をステッピングモーターの A,(白)^A(黄)、B(赤),^B(緑) に接続します。
     また、ドライバー(TD62064)の GND端子(4,9,13,12)を UNO のグランド(GND)に、TD62064のCOM(1,8ピン) 端子とステッピングモーターの AC(黒), BC(青) 端子を 電源5V に接続します。

      配線図

     電流は、モーターの端子 AC,BC から流れ込み、ドライバーの出力端子から GND に流れ込みます。このときドライバーの入力端子は H になっている必要があります。ドライバーの素子は 入力が HIGH のとき出力が LOW となり、出力端子からの電流を吸い取ります(シンク:sink 電流)。ドライバーにもモーター用の電源が接続されますがこれは逆電圧吸収用のダイオードに接続されています。ドライバーからモーターに直接電力を供給することはありません。


      配線画像

  6. ステッピングモーター制御プログラム

     cw[4] = {0xC, 0x6, 0x3, 0x9} を記録しておきます。0xC, 0x6, 0x3, 0x9 の順に励磁パターンを送れば正回転、逆方向に送れば、逆回転します。loop() で pt を増しながら digitalWriteA() をすれば正回転、減らしながらdigitalWriteA()すれば逆回転します。励磁パターンをチェックするため、シリアルモニターにパターンを送ります。
     (pat & 0x8)>>3 で & は論理AND演算、>> は右シフト演算です。この場合、pat & 0x8 で pat の右から第3bitを取り出し(一番右が第0)、右に3bitシフトします。

    //STEPPING MOTOR Control
    //DRIVER TD62064
    //Motor SPG 20
    //ユニポーラ、2相励磁
    
    //モータ端子 AC,BC はセンタータップ
    // A(白),B,AC(黒),BC(青),^A,^B(緑)
    
    //ドライバ TD62064
    //50V 1.5A
    //i1:3 o2:2 i2:6 o2:7 i3:11 o3:9 i4:14 o4:16
    //gnd:4,5,13,12 com:1,8(ダイオード)
    
    
    //接続
    //VBB:モータ用電源1.5V*3
    //Ard.D2>Td.i1 Ard.D3>Td.i2 Ard.D4>Td.i3 Ard.D55>Td.i4
    //Td.o1>SPG.A Td.o2>SPG.B Td.o3>SPG.^A Td.o4>SPG.^B
    //SPG.AC>SPG.BC>SPG.COM>VCC
    
    int SA=2;
    int SB=3;
    int NA=4;
    int NB=5;
    //励磁パターン
    byte cw[4] = {0xC, 0x6, 0x3, 0x9};
    int pt;
    int dir;
    int count;
    
    void setup() {             
      // initialize the digital pin
      pinMode(SA, OUTPUT);
      pinMode(SB, OUTPUT);
      pinMode(NA, OUTPUT);
      pinMode(NB, OUTPUT);
      digitalWrite(SA, LOW);
      digitalWrite(SB, LOW);
      digitalWrite(NA, LOW);
      digitalWrite(NB, LOW);
      pt=0;
      dir=0;
      count=0;
      Serial.begin(9600);
    }
    
    void loop() {
      digitalWriteA(cw[pt]);  //
      delay(8); //4以下だと回転しない
      if(dir) pt++;
      else pt--;//回転方向の制御
      if(pt==4) pt=0;  //
      if(pt<0) pt=3;
      count++;
      if(count==600) {//反転
        if(dir) dir=0;else dir=1;
        count=0;
      }
    }
    
    void digitalWriteA(byte pat){
      Serial.print(pat,HEX);//チェック用
      Serial.println();
    //パターンとともに変更が必要
      digitalWrite(NB,(pat & 0x1));//^B
      digitalWrite(NA,(pat & 0x2)>>1);//^A
      digitalWrite(SB,(pat & 0x4)>>2);//B
      digitalWrite(SA,(pat & 0x8)>>3);//A
    }

    実行すると、モーターが回転し、600ステップ回転すると逆転します。

  7. 発展

     
    1. モーターの巻き線方式が違うのですが?

      モーターの巻き線には、 「バイファイラー巻き」と「ユニファイラー巻き」があります。ステッピングモーターを回転させるには、磁力の向きを変化させるため電流の向きを変更する必要があります。
       今回利用したステッピングモーターは右の「バイファイラー巻き」で、電流の方向を切り替えるには、A または ^A の端子を切り替えることで対応できます。ただし、一時には一方のコイルしか利用しません。
       左の「ユニファイラー巻」の場合、「Hブリッジ」(DCモーターの節を参照))回路で、電流の向きを切り替える必要があります。


         ユニファイラー巻き           バイファイラー巻き

    2. マイクロステップ制御とは何ですか?

       ステッピングモーターでは細かい回転制御が求められます。相を切り替えるとき、単に X から Y の切り替えでなく、少しずつ切り替えます。まず、Xの最大を 255 x 、Yの最大を 255y としたとき 、まず、X を 254x、Y を 1y とします。次ぎに、X を 253x、Y を 2y とします。このようにすると、 X > Y のステップを 255 分割できます。この制御をマイクロステップ制御と呼びます。

    3. 台形制御とはなんですか?

       スッテッピングモーターはゆっくり回るときの方が回転力が強くなります。回転開始時にいきなり高速回転をかけると、磁界にモーターの回転子がついていけない「脱調」現象を引き起こしやすくなります。逆に停止する場合も、いきなり停止(急に回転を落とす)をすると、回転子が回りすぎてしまいます。そこで、下記のように加速、減速を行う方式を台形制御と呼んでいます。高度な制御モジュールには、台形制御、マイクロステップ、バイファイラー対応が組み込まれています。


    4. 高度な制御を行うモジュールはありませんか?

      L6470(ストローベリーリナックス扱い)は、SPI制御でユニポーラーのステッピングモーターに対し、マイクロステップ、台形制御などの高度な制御が可能です。