趣味のマイコンいじり

安価なマイコンを利用して作成したアプリの紹介です。

バイポーラのステップモータをArduinoで動かしました

ユニポーラのステップモータに関しては既に動作方法を確認していたのですが
バイポーラでも同様に動くかの確認が必要でした。中国製で120円位で
バイポーラのステップモータのドライブ基板として使えそうなものが有った
のですが、年末で税関が混んでいる為か、来る気配が無いので、久しぶりに
秋葉原の「秋月電子」さんのお世話になり、バイポーラ駆動用のドライブ基板を
自作して見ました。その時に購入したものと自作の結果は以下の様でした。
結果としては、予定通りに動作し、また、購入したバイポーラのステップモータ
には減速ギアが無く、中国製のドライブ基板が利用できれば先のユニポーラの
ものよりも利用価値が高いと思いました。

<ステップモーターの概要>
   購入したステップモーターは次の様なものでした。
   イメージ 1

      1..型名 : MDP-35A
      2.バイポーラ型ステッピングモータ
      3.電源電圧12V
      4.ステップ角度 7.5°(1相、2相) 3.75°(1-2相)

  バイポーラ型のステッピングモータはモータの構造は簡単になりますが
  ドライブの方法は少し難しくなり安価なものが無かった為、ドライバを
  自作しました。自作したドライバの基板は次の様なものでした。

<自作ステップモータードライブ基板>
 購入ターゲットのステップモータが12V駆動であったためドライバ用のチップ
   等は次の様にしました。
 [完成状態]
    イメージ 2

 [結線図]
    イメージ 3

 [必要部品一覧]
    イメージ 4

 [ドライバチップ仕様]
      1..型名 : TA7291P
      2.モータ用電源 0~20V
      3.出力電流 1A(平均)、(ピーク 2A)

<関連資料>
  ステップモータのデータシートは次のURLから入手可能
       URL : http://akizukidenshi.com/download/ta7291p.pdf

  ステップモータのデータシートは次のURLから入手可能
       URL : http://akizukidenshi.com/download/ds/sanyos/MDP-35A_a.pdf

<テスト内容>
 バイポーラのステップモータもユニポーラステップモータと同様に
   左右180度の回転を繰り返し行う処理を実行させる事にしました。

 

 [目的と結果]
    テストの確認目標は次のものでした。
         1.バイポーラのステップモータでの動作の確認
         2.自作のドライブ基板の結線と動作の確認
         3.ユニポーラステップモータ用のライブラリが同様に使える事の
               確認

   結果としては、ドライブ基板が目標通りに動作し、また、ユニポーラ
       用のライブラリがそのまま修正無しに使える事が確認できました。


 [テストでの機器の接続]
    イメージ 5

    イメージ 6

 [テストコード]
    ライブラリのダウンロードはここをクリック(exsamplesフォルダ内に
  下記のコード有り)

         /*
           <ステップモータ動作確認プログラム>
        
          このプログラムの動作には、同時に作成した「Stepper_modbis」のライブラリが必要です。
          これを解凍してシステムのライブラリに追加して下さい。
          解凍後のフォルダの追加先 : C:\Program Files (x86)\arduino\libraries
                      (デホルトでのインストール時)
          なお、Stepper_modbisはStepperと同じ関数を有し、違いは次の2点のみです。
            1.4線式のもののみをサポートする(バイポーラとユニポーラ)
            2.励磁方式は1相、2相、1-2相をサポートし、指定は最初のピン割り付け時
               (指定しないと2相)
         そのため、Stepper_modbisの関数の説明はArduinoの標準のStepperが参考にできます。
        
         */
        
         // 追加のステップモータ用ライブラリ
         #include <Stepper_modbis.h>
        
         // 設定定義 (値は MDP-35A)
         #define STEPS 48              // 使用するモータのステップ数(1-2相励磁では倍)
         #define REDUR  1              // 減速比
        
         // グローバル変数
         int rpm = 60;                 // 回転速度(回転数/分)
         int rangle = 180;             // 回転角度(一回転360度)
         int phase_mode = TWOPHASE ;   // 励磁方式をセット(ONEPAHSE, TWOPHASE, ONETWOPHASE)
         int steps = (phase_mode != ONETWOPHASE) ? STEPS : STEPS * 2 ; // ステップ数を換算
        
         // ピン番号を指定して、stepperクラスのインスタンスを生成
         Stepper_modbis stepper(steps, 8, 9, 10, 11, phase_mode);
        
         // 初期設定
         void setup() {
           stepper.setSpeed(REDUR * rpm);  // 回転速度の設定(PRM)
         }
        
         // ループ処理
         void loop() {
             long rstep = *1;       // 逆回転(rangle分)
             delay(500) ;
         }

  動作状況の確認はこちらからDropboxへのリンク)

*1:steps * REDUR * (long)rangle) + 180) / 360;  // ステップ数の計算
             stepper.step(rstep);          // 正回転(rangle分)
             delay(500);
             stepper.step(-(rstep