BYJ48 Stepper Motor

Stepper Motor adalah motor dikawal oleh satu siri gegelung elektromagnetik. Aci pusat mempunyai siri magnet yang dipasang di atasnya, dan gegelung yang mengelilingi aci secara bergantian diberikan semasa atau tidak, mewujudkan medan magnet yang meremehkan atau menarik magnet pada batang, menyebabkan motor berputar.

Reka bentuk ini membolehkan pengendalian motor yang sangat berharga, Terdapat dua jenis asas motor stepper, stepper unipolar dan stepper bipolar.

Dalam pengajaran ini, saya akan bercakap tentang Unipolar Stepper Motor 28-BYJ48.

Motor stepper unipolar mempunyai lima atau enam wayar dan empat gegelung (sebenarnya dua gegelung dibahagi dengan sambungan pusat pada setiap gegelung). Sambungan pusat gegelung diikat bersama dan digunakan sebagai sambungan kuasa. Mereka dipanggil langkah-langkah unipolar kerana kuasa selalu masuk pada tiang ini.

Langkah 1: Spesifikasi, Pemandu Motor

Terdapat banyak Jenis Pemandu, L293, ULN2003, A3967SLB, Dan Lebih,

28-BYJ48 Malah datang dengan Breakout menggunakan ULN2003 Sebagai cip driver Motor.

Spesifikasi untuk Motor ini "Dan anda boleh memuat turun datasheet dari lampiran"

Voltan diberi nilai: 5VDC
Bilangan Fasa 4
Nisbah Penyesuaian Kelajuan 1/64
Sudut Struktur 5.625 ° / 64
Frekuensi 100Hz
Rintangan DC 50Ω ± 7% (25 ℃)
Kekerapan Cakera Keras> 600Hz
Kekal Frekuensi Curah> 1000Hz
Tork tarik> 34.3mN.m (120Hz)
Self-positioning Torque> 34.3mN.m
Tork geseran 600-1200 gf.cm
Tarik tork 300 gf.cm
Gred penebat A

dan skema penembusan ini ditunjukkan seperti Gambar pada lampiran

Ambil perhatian bahawa jika anda ingin menggunakan L293 Daripada ULN2003, Anda perlu meninggalkan wayar Red Tiada sambungan.


Bahan :

anda perlu :

1) Arduino Board.

2) Motor stepper BYJ48 5v

3) Modul pemandu ULN2003 Moror

4) Jumper.

5) sumber voltan 5v "Pilihan".

Lampiran

  • 28BYJ-48.pdf Muat turun

Langkah 2: Kod Arduino.

Arduino IDE Menyokong Perpustakaan untuk Stepper Motor, Sangat Mudah untuk digunakan, Selepas Menyambung Motor dengan arduino Anda boleh Upload Lakaran ke arduino.

Tetapi ...

Anda mesti mengambil sesuatu yang dipertimbangkan:

Motor ini mempunyai nisbah Gear 64, dan Sudut Struktur 5.625 ° sehingga motor ini mempunyai 4096 Langkah.

langkah = Bilangan langkah dalam Satu Revolusi * Nisbah gear.

langkah = (360 ° / 5.625 °) * 64 "Nisbah gear" = 64 * 64 = 4096. nilai ini akan menggantikannya pada Lakaran arduino
Untuk suku bunga Stepper Motor, Angle Stride 7.5 ° dan Nisbah Gear adalah 16, Jadi bilangan langkah dalam 1 Revolusi ialah:

langkah dalam Satu Revolusi = 360 / 7.5 = 48.

langkah = 48 * 16 = 768
Ini akan berbeza bergantung kepada motor yang anda gunakan, Jadi periksa Datasheet untuk Motor stepper anda untuk menentukur nilai ini

Datasheet Motor 28-BYJ48.

Pemandu Motor ULN2003 BreakOut Disambungkan Kepada Arduino Dari IN1 - IN4 Ke D8 - D11 Secara Perspektif

Untuk Power You Motor, Recommanded menggunakan Bekalan Kuasa luaran dengan 5V-500mA sekurang-kurangnya, Jangan kuasa langsung dari Arduino Board 5V.

Langkah 3: Isu Arah Perpustakaan ... dan Bagaimana Betulkannya.

Apabila Anda Muat naik lakaran ke arduino, Motor akan Putar dalam satu arah Mengikut jenis arahan:

langkah (langkah);
Jadi anda mesti meletakkan nombor langkah untuk menghidupkan motor.

Rujukan itu berkata Anda boleh meletakkan nilai positif untuk menjadikan satu arah, negatif untuk menghidupkan yang lain.

Jika itu OK Dengan Motor Stepper anda, Anda tidak perlu membaca perkara berikut.

Jika Tidak, Motor anda beralih ke arah yang sama walaupun anda Menentukan langkah-langkah Positif Nilai atau negatif, Apa masalahnya?

Motor ini perlu dikendalikan sebagai Jadual pada lampiran.

Perpustakaan Stepper arduino perlu diubah suai untuk memenuhi keperluan ini.

Saya menulis satu kod yang membolehkan motor ini untuk bergerak mengikut arah jam dan menentang jam yang bijak

Kod dalam langkah seterusnya:

Langkah 4: Ubahsuai Kod

kod terakhir untuk motor Stepper ini:

/ *
Kod motor Stepper BYJ48
Sambungkan:
IN1 >> D8
IN2 >> D9
IN3 >> D10
IN4 >> D11
VCC ... 5V Lebih suka menggunakan sumber 5V luaran
Gnd
ditulis oleh: Mohannad Rawashdeh
//www.instructables.com/member/Mohannad+Rawashdeh/
28/9/2013
* /

#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
int Langkah = 0;
boolean Direction = true; // gre
unsigned long last_time;
bermulanya panjang yang tidak ditandatangani;
int steps_left = 4095;
lama;
batal persediaan ()
{
Serial.begin (115200);
pinMode (IN1, OUTPUT);
pinMode (IN2, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
/ // delay (1000);

}
kekosongan gelung ()
{
sementara (steps_left> 0) {
currentMillis = micros ();
jika (currentMillis-last_time> = 1000) {
stepper (1);
masa = masa + micros () - last_time;
last_time = micros ();
steps_left--;
}
}
Serial.println (masa);
Serial.println ("Tunggu ...!");
kelewatan (2000);
Arah = Arah!
steps_left = 4095;
}

void stepper (int xw) {
untuk (int x = 0; x suis (Langkah) {
kes 0:
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
digitalWrite (IN3, LOW);
digitalWrite (IN4, TINGGI);
pecah;
kes 1:
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
digitalWrite (IN3, HIGH);
digitalWrite (IN4, TINGGI);
pecah;
kes 2:
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
pecah;
kes 3:
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
pecah;
kes 4:
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
pecah;
kes 5:
digitalWrite (IN1, TINGGI);
digitalWrite (IN2, HIGH);
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
pecah;
kes 6:
digitalWrite (IN1, TINGGI);
digitalWrite (IN2, LOW);
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
pecah;
kes 7:
digitalWrite (IN1, TINGGI);
digitalWrite (IN2, LOW);
digitalWrite (IN3, LOW);
digitalWrite (IN4, TINGGI);
pecah;
lalai:
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
pecah;
}
SetDirection ();
}
}
void SetDirection () {
jika (Arah == 1) {Langkah ++;}
jika (Arah == 0) {Langkah--; }
jika (Langkah> 7) {Langkah = 0;}
jika (Langkah <0) {Langkah = 7; }
}



Artikel Berkaitan