BYJ48 Step Motor

Step Motor, bir dizi elektromanyetik bobin tarafından kontrol edilen bir motordur. Orta şaftın üzerine monte edilmiş bir dizi mıknatıs vardır ve şaftı çevreleyen bobinlere dönüşümlü olarak akım verilir veya verilmez, şaft üzerindeki mıknatısları iten veya çeken ve motorun dönmesine neden olan manyetik alanlar oluşturur.

Bu tasarım motorun çok değerli kontrolünü sağlar, İki temel step motor tipi vardır, tek kutuplu stepler ve bipolar stepler.

Bu talimatta, Unipolar Step Motor 28-BYJ48 hakkında konuşacağım.

Tek kutuplu step motorun beş veya altı kablosu ve dört bobini vardır (aslında her bir bobinin merkez bağlantılarına bölünmüş iki bobin). Bobinlerin merkezi bağlantıları birbirine bağlanır ve güç bağlantısı olarak kullanılır. Tek kutuplu stepler olarak adlandırılırlar, çünkü güç her zaman bu kutba gelir.

Adım 1: Özellikler, Motor Sürücüsü

Birçok Sürücü Türü vardır, L293, ULN2003, A3967SLB, Ve Daha Fazlası,

28-BYJ48 Hatta ULN2003 Motor sürücü çipi olarak Breakout ile birlikte gelir.

Bu Motor için Özellikler "Ve ekten veri sayfasını indirebilirsiniz"

Anma gerilimi : 5VDC
Faz 4 Sayısı
Hız Değişimi Oranı 1/64
Adım Açısı 5.625 ° / 64
Frekans 100Hz
DC direnci 50Ω ±% 7 (25 ℃)
Boşta Çekiş İçi Frekansı> 600Hz
Boşta Çekiş Çekme Frekansı> 1000Hz
Çekiş İçi Tork> 34, 3mN.m (120Hz)
Kendiliğinden Konumlanan Tork> 34.3mN.m
Sürtünme torku 600-1200 gf.cm
Tork 300 gf.cm cinsinden çekin
Yalıtım sınıfı A

eki Resimler gibi gösterilen Bu koparma şemaları

ULN2003 yerine L293 kullanmak istiyorsanız, Kırmızı kablo bırakmanız gerekeceğini unutmayın Bağlantı yok.


Malzemeler :

ihtiyacın olacak :

1) Arduino Kurulu.

2) BYJ48 Step Motor 5v

3) ULN2003 Moror sürücü Modülü

4) Atlama teli.

5) 5v voltaj kaynağı "İsteğe bağlı".

Ekler

  • 28BYJ-48.pdf İndir

Adım 2: Arduino Kodu.

Arduino IDE, Step Motor için bir Kütüphaneyi Destekler, Kullanımı Çok Kolay, Motoru Arduino ile Bağladıktan Sonra Kroki arduino'ya yükleyebilirsiniz.

Fakat ...

Dikkate almanız gereken bir şey var:

Bu Motorun Dişli oranı 64 ve Adım Açısı 5.625 ° 'dir, bu nedenle bu motorda 4096 Adım bulunur.

steps = One Revolution * Dişli oranındaki adım sayısı.

kademe = (360 ° / 5.625 °) * 64 "Dişli oranı" = 64 * 64 = 4096. bu değer Arduino Sketch'in yerine geçecektir
Adafruit Step Motor için, Adım Açısı 7.5 ° ve Dişli oranı 16, 1 Devrimdeki adım sayısı:

Bir Devrim'deki adımlar = 360 / 7.5 = 48.

adımlar = 48 * 16 = 768
Bu, hangi motoru kullandığınıza bağlı olarak farklı olacaktır, bu nedenle bu değerleri kalibre etmek için step Motorunuzun Veri Sayfasını kontrol edin

28-BYJ48 Motor Veri Sayfası.

Arduino'ya IN1 - IN4'ten D8 - D11'e Bağlı Motor Sürücüsü ULN2003 Kesme

Motorunuzu Güçlendirmek için, en azından 5V-500mA ile harici Güç Kaynağı kullanmanız önerilir, doğrudan arduino Board 5V'den güç almayın.

Adım 3: Kütüphane Yönü Sorunu ... ve Nasıl Onarılır.

Çizimi arduino'ya yüklediğinizde, Motor bir yönde döndürülecektir Komutu yazarak:

aşama (aşama);
Bu nedenle motoru döndürmek için adım sayısını koymalısınız.

Referans, bir yönü çevirmek için pozitif değeri, diğerini döndürmek için negatif koyabilirsiniz.

Step Motorunuzda sorun yoksa, aşağıdakileri okumanıza gerek yoktur.

Değilse, Motorunuz aynı yöne dönseniz bile Pozitif Değer veya negatif adımları koyun, Sorun nedir?

Bu Motor, ekte Tablo olarak çalışmalıdır.

arduino Step Kütüphanesinin bu gereksinime uyacak şekilde değiştirilmesi gerekir.

Bu motorun saat yönünde ve saat yönünün tersine hareket etmesine izin veren bir kod yazdım

Sonraki adımda kod:

4. Adım: Kodu Değiştirin

bu Step motor için son kod:

/ *
BYJ48 Step motor kodu
Bağlan:
IN1 >> D8
IN2 >> D9
IN3 >> D10
IN4 >> D11
VCC ... 5V Harici 5V Kaynağı kullanmayı tercih et
Toprak
Yazan: Mohannad Rawashdeh
//www.instructables.com/member/Mohannad+Rawashdeh/
28/9/2013
* /

#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
int Adımlar = 0;
boolean Yönü = true; // gre
imzasız uzun last_time;
imzasız uzun akım Milis;
int steps_left = 4095;
uzun zaman;
geçersiz kurulum ()
{
Serial.begin (115200);
pinMode (IN1, ÇIKIŞ);
pinMode (IN2, ÇIKIŞ);
pinMode (IN3, ÇIKIŞ);
pinMode (IN4, ÇIKIŞ);
// gecikme (1000);

}
void loop ()
{
ise (steps_left> 0) {
currentMillis = micros ();
Eğer (currentMillis-LAST_TIME> = 1000) {
step (1);
süresi = süresi + mikrosaniye () - LAST_TIME;
LAST_TIME = mikrosaniye ();
steps_left--;
}
}
Serial.println (zaman);
Serial.println ( "Bekle ...!");
gecikmesi (2000);
! Yön = Yön;
steps_left = 4095;
}

void step (int xw) {
için (int x = 0; x {(Adımlar) geçiş
vaka 0:
digitalWrite (IN1, DÜŞÜK);
digitalWrite (IN2, DÜŞÜK);
digitalWrite (IN3, DÜŞÜK);
digitalWrite (IN4, YÜKSEK);
break;
dava 1:
digitalWrite (IN1, DÜŞÜK);
digitalWrite (IN2, DÜŞÜK);
digitalWrite (IN3, YÜKSEK);
digitalWrite (IN4, YÜKSEK);
break;
durum 2:
digitalWrite (IN1, DÜŞÜK);
digitalWrite (IN2, DÜŞÜK);
digitalWrite (IN3, YÜKSEK);
digitalWrite (IN4, DÜŞÜK);
break;
durum 3:
digitalWrite (IN1, DÜŞÜK);
digitalWrite (IN2, YÜKSEK);
digitalWrite (IN3, YÜKSEK);
digitalWrite (IN4, DÜŞÜK);
break;
durum 4:
digitalWrite (IN1, DÜŞÜK);
digitalWrite (IN2, YÜKSEK);
digitalWrite (IN3, DÜŞÜK);
digitalWrite (IN4, DÜŞÜK);
break;
durum 5:
digitalWrite (IN1, YÜKSEK);
digitalWrite (IN2, YÜKSEK);
digitalWrite (IN3, DÜŞÜK);
digitalWrite (IN4, DÜŞÜK);
break;
durum 6:
digitalWrite (IN1, YÜKSEK);
digitalWrite (IN2, DÜŞÜK);
digitalWrite (IN3, DÜŞÜK);
digitalWrite (IN4, DÜŞÜK);
break;
durum 7:
digitalWrite (IN1, YÜKSEK);
digitalWrite (IN2, DÜŞÜK);
digitalWrite (IN3, DÜŞÜK);
digitalWrite (IN4, YÜKSEK);
break;
varsayılan:
digitalWrite (IN1, DÜŞÜK);
digitalWrite (IN2, DÜŞÜK);
digitalWrite (IN3, DÜŞÜK);
digitalWrite (IN4, DÜŞÜK);
break;
}
SetDirection ();
}
}
void SetDirection () {
if (Yön == 1) {Adım ++;}
if (Yön == 0) {Adımlar--; }
(Aşamalar> 7) {Adımlar = 0;} halinde
Eğer (Adım <0) {Adım = 7; }
}



İlgi̇li̇ Makaleler