ステップモータをArduinoで動かしてみました
中国製で、200円位で売られているステップモータを購入して使えるものか
どうか調べて見ました。結果的には、減速ギア比が大きく、回転速度は期待した
程は出ない様ですがその他は期待した通りのものでした。また、ステップモータ
駆動は標準ライブラリでやろうとしたのですが、駆動シーケンスが異なっていた
ため利用できませんでした。その為、標準ライブラリの駆動シーケンスの部分を
変更したものを追加ライブラリと用意してスケッチしてみました。こちらも
すんなり行ってArduinoが良くできた環境である事を改めて認識しました。
<ステップモーターの概要>
購入したステップモーターは次の様なものでした。
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.追加ライブラリの作成方法の確認
結果としては、ステップモータは予定通りの動作をし、ライブラリの作成に
関してもその作成方法が理解でき、そして、ライブラリを利用する方法は
とても便利な事が改めて確認できました。
[テストでの機器の接続]
[テストコード]
ライブラリのダウンロードはここをクリック(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へのリンク)
どうか調べて見ました。結果的には、減速ギア比が大きく、回転速度は期待した
程は出ない様ですがその他は期待した通りのものでした。また、ステップモータ
駆動は標準ライブラリでやろうとしたのですが、駆動シーケンスが異なっていた
ため利用できませんでした。その為、標準ライブラリの駆動シーケンスの部分を
変更したものを追加ライブラリと用意してスケッチしてみました。こちらも
すんなり行ってArduinoが良くできた環境である事を改めて認識しました。
<ステップモーターの概要>
購入したステップモーターは次の様なものでした。
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.追加ライブラリの作成方法の確認
結果としては、ステップモータは予定通りの動作をし、ライブラリの作成に
関してもその作成方法が理解でき、そして、ライブラリを利用する方法は
とても便利な事が改めて確認できました。
[テストでの機器の接続]
[テストコード]
ライブラリのダウンロードはここをクリック(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へのリンク)