バイポーラのステップモータをArduinoで動かしました
ユニポーラのステップモータに関しては既に動作方法を確認していたのですが
バイポーラでも同様に動くかの確認が必要でした。中国製で120円位で
バイポーラのステップモータのドライブ基板として使えそうなものが有った
のですが、年末で税関が混んでいる為か、来る気配が無いので、久しぶりに
秋葉原の「秋月電子」さんのお世話になり、バイポーラ駆動用のドライブ基板を
自作して見ました。その時に購入したものと自作の結果は以下の様でした。
結果としては、予定通りに動作し、また、購入したバイポーラのステップモータ
には減速ギアが無く、中国製のドライブ基板が利用できれば先のユニポーラの
ものよりも利用価値が高いと思いました。
<ステップモーターの概要>
購入したステップモーターは次の様なものでした。
1..型名 : MDP-35A
2.バイポーラ型ステッピングモータ
3.電源電圧12V
4.ステップ角度 7.5°(1相、2相) 3.75°(1-2相)
バイポーラ型のステッピングモータはモータの構造は簡単になりますが
ドライブの方法は少し難しくなり安価なものが無かった為、ドライバを
自作しました。自作したドライバの基板は次の様なものでした。
<自作ステップモータードライブ基板>
購入ターゲットのステップモータが12V駆動であったためドライバ用のチップ
等は次の様にしました。
[完成状態]
[結線図]
[必要部品一覧]
[ドライバチップ仕様]
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.ユニポーラステップモータ用のライブラリが同様に使える事の
確認
結果としては、ドライブ基板が目標通りに動作し、また、ユニポーラ
用のライブラリがそのまま修正無しに使える事が確認できました。
[テストでの機器の接続]
[テストコード]
ライブラリのダウンロードはここをクリック(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へのリンク)
バイポーラでも同様に動くかの確認が必要でした。中国製で120円位で
バイポーラのステップモータのドライブ基板として使えそうなものが有った
のですが、年末で税関が混んでいる為か、来る気配が無いので、久しぶりに
秋葉原の「秋月電子」さんのお世話になり、バイポーラ駆動用のドライブ基板を
自作して見ました。その時に購入したものと自作の結果は以下の様でした。
結果としては、予定通りに動作し、また、購入したバイポーラのステップモータ
には減速ギアが無く、中国製のドライブ基板が利用できれば先のユニポーラの
ものよりも利用価値が高いと思いました。
<ステップモーターの概要>
購入したステップモーターは次の様なものでした。
1..型名 : MDP-35A
2.バイポーラ型ステッピングモータ
3.電源電圧12V
4.ステップ角度 7.5°(1相、2相) 3.75°(1-2相)
バイポーラ型のステッピングモータはモータの構造は簡単になりますが
ドライブの方法は少し難しくなり安価なものが無かった為、ドライバを
自作しました。自作したドライバの基板は次の様なものでした。
<自作ステップモータードライブ基板>
購入ターゲットのステップモータが12V駆動であったためドライバ用のチップ
等は次の様にしました。
[完成状態]
[結線図]
[必要部品一覧]
[ドライバチップ仕様]
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.ユニポーラステップモータ用のライブラリが同様に使える事の
確認
結果としては、ドライブ基板が目標通りに動作し、また、ユニポーラ
用のライブラリがそのまま修正無しに使える事が確認できました。
[テストでの機器の接続]
[テストコード]
ライブラリのダウンロードはここをクリック(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