28BYJ-48
28BYJ-48というステッピングモータで,見たところギヤーが入っているようです。
SBT0811
SBT0811と書いてあるドライバーで駆動します。基板に使用されているICはULN2003Aという,7組のNPNダーリントン・ペアです。コレクタ電流は500mAです。そのうち4組を使っています。モータ用の電源は5V~12Vを供給します。
動かす
これらは単体で手に入れるというよりセットでの販売が多くあります。
単体で購入しようとすると1000円を超えますが,セットでは600円前後で300円以下のものもあります。価格って本当に面白いですね。
(2016年8月現在)
プログラム
//ステッピングモータをstepperと呼ぶようです。
#include <Stepper.h>//ヘッダーを読み込みます。
Stepper stepper(500, 8, 9, 10, 11);// インスタンスを生成
//モータのステップ数と接続PINを書きます。
//初期設定
void setup() {
}
//繰り返し動作
void loop() {
stepper.setSpeed(10);//速さなのでしょうが,よく理解できません。
stepper.step(10);//動かすステップ数でしょう。
}
動きました。まだ,自在とは言えません。かなりの熱が出ていることも心配です。
ステッパー(ステッピングモータ)
2016年8月19日(金)
ライブラリを使ってステッピングモータは一応回転しました。
#include <Stepper.h>//ヘッダーを読み込みます。
Stepper stepper(500, 8, 9, 10, 11);// インスタンスを生成
//モータのステップ数と接続PINを書きます。
//初期設定
void setup() {
stepper.setSpeed(10);//速さなのでしょうが,よく理解できません。
}
//繰り返し動作
void loop() { stepper.step(1);//動かすステップ数でしょう。
}
これで一応は回転しますしstepper.step(1);の()内を負にすると回転方向が反転します。発熱もそれほど多くはありません。64:1のギヤー(ギアー)が入っているということであまり速く回転することはありません。stepper.step(1);の括弧の中の数字を変えても速さの変化があまり感じられません。
構造とドライバ
In1 HIGH LOW LOW LOW
In2 LOW HIGH LOW LOW
In3 LOW LOW HIGH LOW
In4 LOW LOW LOW HIGH
の順に変化するように書いたプログラムです。
LOWとHIGHを逆にすると動きません。
基本のプログラム
//初期設定
void setup() {
pinMode(8,OUTPUT);//PIN8~11を出力に設定
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
digitalWrite(8,LOW);//PIN8から11をLOWにセット
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
}
int a=2;//待ち時間 a m秒
//繰り返し
void loop() {
digitalWrite(8,HIGH);//PIN8をHIGHにセット
digitalWrite(11,LOW);//PIN11をLOWにセット
delay(a);//時間待ち(a ms)
digitalWrite(9,HIGH);//PIN9をHIGHにセット
digitalWrite(8,LOW);//PIN8をLOWにセット
delay(a);//時間待ち(a ms)
digitalWrite(10,HIGH);//PIN10をHIGHにセット
digitalWrite(9,LOW);//PIN9をLOWにセット
delay(a);//時間待ち(a ms)
digitalWrite(11,HIGH);//PIN11をHIGHにセット
digitalWrite(10,LOW);//PIN10をLOWにセット
delay(a);//時間待ち(a ms)
}
せっかくのSteppingモータなのにステップ数がわかりません。これでは正確な動作をさせることができません。解析します。
解析プログラム
//初期設定
void setup() {
pinMode(8,OUTPUT);//PIN8~11を出力に設定
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
digitalWrite(8,LOW);//PIN8から11をLOWにセット
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
}
int a=2;//待ち時間 a m秒
//繰り返し
void loop() {
for(int i=0;i<512;i++){
digitalWrite(8,HIGH);//PIN8をHIGHにセット
digitalWrite(11,LOW);//PIN11をLOWにセット
delay(a);//時間待ち(a ms)
digitalWrite(9,HIGH);//PIN9をHIGHにセット
digitalWrite(8,LOW);//PIN8をLOWにセット
delay(a);//時間待ち(a ms)
digitalWrite(10,HIGH);//PIN10をHIGHにセット
digitalWrite(9,LOW);//PIN9をLOWにセット
delay(a);//時間待ち(a ms)
digitalWrite(11,HIGH);//PIN11をHIGHにセット
digitalWrite(10,LOW);//PIN10をLOWにセット
delay(a);//時間待ち(a ms)
}
}
上記のプログラムを使ってfor()のiの域値を変えて実験することにしました。512では足りないことがわかりました。513がよさそうです。当たり前のことでした。512ステップのためには513以下まで繰り返しでした。64:1のギヤー比であればステップ数は4。
全体としてのステップ数は512でよいと思われます。
回らなくなりました
2016年8月19日(金)
トルクを確かめようとしてStepperMotor(SM)の軸を手で押さえてみたら,けっこう強く回っていました。80gcmとかUTubがあったので強く止めてみました。そうしたら,回転がおかしくなってしまいました。ギヤーがたくさん入っているので,一つでもかけたらおしまいですね。
中を見てみましょう。
止め金外し
赤い丸のしるしが止め金です。軸の陰で1つ隠れています。細いマイナスドライバーで広げて外します。
ギヤーが3つ入っています。一つづつ丁寧にはずします。ギヤーの順番や形を覚えておかないと,組み立てなおせません。
ギヤーとその支柱のついた基板をとると回転子とコイルを残して単純な構造になります。
この状態で通電しても回転しません。特有の振動はありますが,回らないのです。分解する前は,手で少し回すと回転したのですが,今は手で回しても反応がありません。壊してしまったのでしょうか。
回りました
2016年8月21日(日)
真ん中にある回転子を支えるシャフトが曲がっている(傾いている)のでした。少し傾きを変えてやるとよく回りました。傾きは目で見てわかるようなものではないので,あらゆる方向へ少しずつ傾けました。ちょうど良いところになるとノイズも少なくなります。
よく見るとギヤーの軸の位置を決める穴が開いていました。ここが少しずれていたのかもしれません。組み立てなおしたら,しっかり回りました。でも,ステップ数を数えるのを忘れていました。回ったことがとてもうれしくて,ギヤーを付けても回るか速く試してみたかったからです。分解と組み立ては少しエネルギーが要りますので,次の機会まで待ちましょう。当分はステップ数500でいいでしょう。
バイポーラのステッピングモータ
2016年8月22日(月)
古いプリンタを分解すると写真のような線が4本のバイポーラのステッピングモータが出てきました。
大きくて強力そうで,速く回転することもできそうなので,これを回してみたいと思います。
ステッピングモータの一番簡単な回し方
2016年8月22日(月)
プリンタを分解するとギヤー付きのステッピングモータを手に入れることができます。
同じくコネクタも手に入れることができます。ステッピングモータを2つつなぎます。
一方のステッピングモータのギヤーの部分に取っ手を付けて回転できるようにします。取っ手を回すと,もう一方のモータが回転します。回転方向や速さも思い通りになります。簡単なリモコンも作れると思います。
ハンドルは付けなくても回すことはできます。