趣味のマイコンいじり

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

ステップモータをArduinoで動かしてみました

中国製で、200円位で売られているステップモータを購入して使えるものか
どうか調べて見ました。結果的には、減速ギア比が大きく、回転速度は期待した
程は出ない様ですがその他は期待した通りのものでした。また、ステップモータ
駆動は標準ライブラリでやろうとしたのですが、駆動シーケンスが異なっていた
ため利用できませんでした。その為、標準ライブラリの駆動シーケンスの部分を
変更したものを追加ライブラリと用意してスケッチしてみました。こちらも
すんなり行ってArduinoが良くできた環境である事を改めて認識しました。

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

  1.ユニポーラのステップモータとそのドライブ基板
  2.ドライブ基板の制御信号は4本
  3.ステップモータ仕様
         ・型名:28BYJ-48
         ・電源電圧 5-12V
         ・ユニポーラ、5本の配線接続
         ・ステップ角度 11.25°(1相、2相) 5.625°(1-2相)
         ・減速ギア 64:1  (63.684:1)
         ・最大回転速度 15RPM (12Vでは25RPMまで可能)


<関連資料>
  ステップモータに関しての説明は次のURLからのものが判りやすいと思います。
       URL : http://practice.ed.sie.dendai.ac.jp/micom/steppingmotor.pdf

  ステップモータのデータシートは次のURLから入手可能
       URL : http://robocraft.ru/files/datasheet/28BYJ-48.pdf

  ドライバ基板で使用されているチップ(ULN2003A)のデータシートは
  次のURLから入手可能
       URL : http://www.ti.com/lit/ds/symlink/uln2003a.pdf

    次のページにこのドライブ基板とステップモータに関して詳しく書かれた
    記事が有ります。また、その時に作成したものに関するビデオと、それに
    使用したライブラリを含むコードも記載され、かつライブラリもダウンロード
    できる様にして有ります。是非御一読を
       URL :  http://42bots.com/tutorials/28byj-48-stepper-motor-with-uln2003-driver-and-arduino-uno/ 

<テスト内容>
 ユニポーラステップモータのテストは次の様な内容で、左右180度の回転を
 繰り返し行う処理を実行させる事にしました。なお、Arduinoの標準ライブラリに
 「Stepper」と言うステップモータ駆動用のものが用意されていますが、4本の
 信号アクセスのパターンが利用するものと異なっている為、正常に動かない事が
 判明し、そのソースコードを修正したものをライブラリとして登録して利用する
   事の確認も行いました。

 [目的と結果]
    テストの確認目標は次のものでした。
    1.購入したものの動作方法の確認
    2.および、それが動作する事を確認
    3.各励磁方式(1相、2相、1-2相)での動作の確認
    4.標準のライブラリを修正したものを利用する方法の確認
    5.追加ライブラリの作成方法の確認

   結果としては、ステップモータは予定通りの動作をし、ライブラリの作成に
   関してもその作成方法が理解でき、そして、ライブラリを利用する方法は
   とても便利な事が改めて確認できました。

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


 [テストコード]
    ライブラリのダウンロードはここをクリック(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>
      
       // 設定定義
       #define STEPS 32  // 使用するモータのステップ数(1-2相励磁では倍)
       #define REDUR 64  // 減速比
      
       // グローバル変数
       int rpm = 4;      // 回転速度(回転数/分)
       int rangle = 180; // 回転角度(一回転360度)
      
       // ピン番号を指定して、stepperクラスのインスタンスを生成
       #if 0   // 励磁方式を指定する時 (ONEPHASE or TWOPHASE or ONETWOPHASE)
        Stepper_modbis stepper(STEPS, 8, 9, 10, 11, TWOPHASE);
       #else    // デホルトの励磁方式(2相励磁)
        Stepper_modbis stepper(STEPS, 8, 9, 10, 11);
       #endif
      
       // 初期設定
       void setup() {
         stepper.setSpeed(REDUR * rpm);  // 回転速度の設定(PRM)
       }
      
       // ループ処理
       void loop() {
           long rstep = (STEPS * REDUR * (long)rangle) / 360;  // ステップ数の計算
           stepper.step(rstep);          // 正回転(rangle分)
           delay(500);
           stepper.step(-rstep);         // 逆回転(rangle分)
           delay(500) ;
       }



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