BYJ48ステッピングモーター

ステッピングモーターは、一連の電磁コイルによって制御されるモーターです。 中心軸には一連の磁石が取り付けられており、軸を取り巻くコイルには交互に電流が供給されたり供給されなかったりして、軸上の磁石を反発または引き付ける磁場を作り出し、モーターを回転させます。

この設計により、モータの非常に貴重な制御が可能になりますステッピングモータには、 ユニポーラステッパとバイポーラステッパの 2つの基本的なタイプがあります

このインストラクションでは、ユニポーラステッピングモーター28-BYJ48について説明します。

ユニポーラステッピングモーターには、5本または6本のワイヤと4つのコイル(実際には2つのコイルが各コイルの中心接続で分割されています)があります。 コイルの中央の接続は一緒に結ばれ、電源接続として使用されます。 これらの単極ステッパーと呼ばれるのは、常にこの1つの極に電力が入るからです。

ステップ1:仕様、モータードライバー

ドライバーには、L293、ULN2003、A3967SLBなど、多くの種類があります。

28-BYJ48 Evenには、ULN2003をモータードライバーチップとして使用するBreakoutが付属しています。

このモーターの仕様は「添付ファイルからデータシートをダウンロードできます」

定格電圧:5VDC
フェーズ4の数
速度変動比1/64
ストライド角5.625°/ 64
周波数100Hz
直流抵抗50Ω±7%(25℃)
アイドルイントラクション周波数> 600Hz
アイドル出力周波数> 1000Hz
引き込みトルク> 34.3mN.m(120Hz)
自己位置決めトルク> 34.3mN.m
摩擦トルク600-1200 gf.cm
引き込みトルク300 gf.cm
絶縁グレードA

添付の写真のように表示されるこのブレイクアウトの回路図

ULN2003の代わりにL293を使用する場合は、レッドワイヤを接続しないでおく必要があることに注意してください。


材料

必要になるだろう :

1)Arduinoボード。

2)BYJ48ステッピングモーター5v

3)ULN2003 Mororドライバーモジュール

4)ジャンパー。

5)5V電圧源「オプション」。

添付ファイル

  • 28BYJ-48.pdfダウンロード

ステップ2:Arduinoコード

Arduino IDEはステッピングモーター用のライブラリをサポートしており、非常に使いやすく、モーターをarduinoに接続すると、スケッチをarduinoにアップロードできます。

だが ...

考慮に入れる必要があります:

このモーターのギア比は64で、ストライド角は5.625°であるため、このモーターには4096ステップがあります。

steps = One Revolutionのステップ数*ギア比。

steps =(360°/ 5.625°)* 64 "ギア比" = 64 * 64 = 4096。 この値は、The Arduino Sketchで置き換えられます
adafruit Stepper Motorの場合、ストライド角7.5°およびギア比は16であるため、1回転のステップ数は次のとおりです。

One Revolution = 360 / 7.5 = 48のステップ。

ステップ数= 48 * 16 = 768
これは、使用しているモーターによって異なるため、ステッパーモーターのデータシートでこの値を調整してください。

28-BYJ48 Motor Datasheet。

IN1-IN4からD8-D11にそれぞれArduinoに接続されたモータードライバーULN2003 BreakOut

少なくとも5V-500mAの外部電源を使用することをお勧めします。ArduinoBoard 5Vから直接電源を供給しないでください。

ステップ3:ライブラリー方向の問題...およびその修正方法

arduinoにスケッチをアップロードすると、次のコマンドを入力してモーターが一方向に回転します。

step(steps);
したがって、モーターを回すにはステップ数を入力する必要があります。

参照によると、一方の方向を変えるには正の値を、もう一方の方向を変えるには負の値を入れることができます。

ステッピングモーターで問題がなければ、以下を読む必要はありません。

そうでない場合は、正の値または負のステップを入れても、モーターは同じ方向に回転します。問題は何ですか?

このモーターは、アタッチメントのテーブルとして動作する必要があります。

arduinoステッパーライブラリは、この要件に合わせて変更する必要があります。

私はこのモーターが時計回りに動き、反時計回りに動くことを可能にするコードを書きました

次のステップのコード:

ステップ4:コードを変更する

このステッピングモーターの最終コード:

/ *
BYJ48ステッピングモーターコード
接続する:
IN1 >> D8
IN2 >> D9
IN3 >> D10
IN4 >> D11
VCC ... 5V外部5Vソースの使用を推奨
Gnd
作成者:Mohannad Rawashdeh
//www.instructables.com/member/Mohannad+Rawashdeh/
28/9/2013
* /

#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
int Steps = 0;
boolean Direction = true; // gre
符号なしlong last_time;
符号なしの長いcurrentMillis;
int steps_left = 4095;
長い時間;
void setup()
{
Serial.begin(115200);
pinMode(IN1、OUTPUT);
pinMode(IN2、OUTPUT);
pinMode(IN3、OUTPUT);
pinMode(IN4、OUTPUT);
// delay(1000);

}
void loop()
{
while(steps_left> 0){
currentMillis = micros();
if(currentMillis-last_time> = 1000){
ステッパー(1);
time = time + micros()-last_time;
last_time = micros();
steps_left--;
}
}
Serial.println(time);
Serial.println( "Wait ...!");
delay(2000);
Direction =!Direction;
steps_left = 4095;
}

void stepper(int xw){
for(int x = 0; x switch(手順){
ケース0:
digitalWrite(IN1、LOW);
digitalWrite(IN2、LOW);
digitalWrite(IN3、LOW);
digitalWrite(IN4、HIGH);
ブレーク;
ケース1:
digitalWrite(IN1、LOW);
digitalWrite(IN2、LOW);
digitalWrite(IN3、HIGH);
digitalWrite(IN4、HIGH);
ブレーク;
ケース2:
digitalWrite(IN1、LOW);
digitalWrite(IN2、LOW);
digitalWrite(IN3、HIGH);
digitalWrite(IN4、LOW);
ブレーク;
ケース3:
digitalWrite(IN1、LOW);
digitalWrite(IN2、HIGH);
digitalWrite(IN3、HIGH);
digitalWrite(IN4、LOW);
ブレーク;
ケース4:
digitalWrite(IN1、LOW);
digitalWrite(IN2、HIGH);
digitalWrite(IN3、LOW);
digitalWrite(IN4、LOW);
ブレーク;
ケース5:
digitalWrite(IN1、HIGH);
digitalWrite(IN2、HIGH);
digitalWrite(IN3、LOW);
digitalWrite(IN4、LOW);
ブレーク;
ケース6:
digitalWrite(IN1、HIGH);
digitalWrite(IN2、LOW);
digitalWrite(IN3、LOW);
digitalWrite(IN4、LOW);
ブレーク;
ケース7:
digitalWrite(IN1、HIGH);
digitalWrite(IN2、LOW);
digitalWrite(IN3、LOW);
digitalWrite(IN4、HIGH);
ブレーク;
デフォルト:
digitalWrite(IN1、LOW);
digitalWrite(IN2、LOW);
digitalWrite(IN3、LOW);
digitalWrite(IN4、LOW);
ブレーク;
}
SetDirection();
}
}
void SetDirection(){
if(Direction == 1){Steps ++;}
if(Direction == 0){ステップ-; }
if(Steps> 7){Steps = 0;}
if(Steps <0){Steps = 7; }
}



関連記事