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つ入っています。一つづつ丁寧にはずします。ギヤーの順番や形を覚えておかないと,組み立てなおせません。

ギヤーとその支柱のついた基板をとると回転子とコイルを残して単純な構造になります。
この状態で通電しても回転しません。特有の振動はありますが,回らないのです。分解する前は,手で少し回すと回転したのですが,今は手で回しても反応がありません。壊してしまったのでしょうか。
