BYJ48 Stepper Motor

Stepper Motor adalah motor yang dikendalikan oleh serangkaian kumparan elektromagnetik. Poros tengah memiliki serangkaian magnet yang dipasang di atasnya, dan kumparan di sekitar poros secara bergantian diberikan arus atau tidak, menciptakan medan magnet yang menolak atau menarik magnet pada poros, menyebabkan motor berputar.

Desain ini memungkinkan untuk kontrol motor yang sangat berharga, Ada dua jenis dasar motor stepper, stepper unipolar dan bipolar stepper.

Dalam instruksi ini, saya akan berbicara tentang Unipolar Stepper Motor 28-BYJ48.

Motor stepper unipolar memiliki lima atau enam kabel dan empat kumparan (sebenarnya dua kumparan dibagi dengan koneksi pusat pada setiap kumparan). Sambungan pusat kumparan diikat dan digunakan sebagai sambungan daya. Mereka disebut stepper unipolar karena kekuasaan selalu datang pada satu kutub ini.

Langkah 1: Spesifikasi, Pengemudi Motor

Ada banyak Jenis Driver, L293, ULN2003, A3967SLB, dan banyak lagi,

The 28-BYJ48 Even hadir dengan Breakout menggunakan ULN2003 Sebagai chip driver Motor.

Spesifikasi untuk Motor ini "Dan Anda dapat mengunduh lembar data dari lampiran"

Nilai tegangan: 5VDC
Jumlah Fase 4
Rasio Variasi Kecepatan 1/64
Stride Angle 5.625 ° / 64
Frekuensi 100Hz
Resistansi DC 50Ω ± 7% (25 ℃)
Frekuensi Intraksi Idle> 600Hz
Frekuensi Traksi Keluar Menganggur> 1000Hz
Torsi Traksi> 34, 3mN.m (120Hz)
Torsi Penentuan Posisi Sendiri> 34.3mN.m
Torsi gesekan 600-1200 gf.cm
Tarik torsi 300 gf.cm
Kelas isolasi a

dan skema dari pelarian ini ditampilkan seperti Gambar pada lampiran

Perhatikan bahwa jika Anda ingin menggunakan L293 Alih-alih ULN2003, Anda harus meninggalkan koneksi Red wire No.


Bahan :

Anda akan perlu :

1) Dewan Arduino.

2) BYJ48 Stepper Motor 5v

3) Modul driver Moror ULN2003

4) Jumper.

5) sumber tegangan 5v "Opsional".

Lampiran

  • 28BYJ-48.pdf Unduh

Langkah 2: Kode Arduino.

Arduino IDE Mendukung Perpustakaan untuk Motor Stepper, Sangat Mudah Digunakan, Setelah Menghubungkan Motor dengan Arduino Anda dapat mengunggah Sketsa ke Arduino.

Tapi ...

Anda harus mempertimbangkan sesuatu:

Motor ini memiliki rasio Gear 64, dan Stride Angle 5.625 ° sehingga motor ini memiliki 4096 Langkah.

steps = Jumlah langkah dalam One Revolution * Gear ratio.

langkah = (360 ° / 5.625 °) * 64 "Rasio gigi" = 64 * 64 = 4096. nilai ini akan menggantikannya di Sketsa arduino
Untuk Motor Stepper adafruit, Stride Angle 7.5 ° dan rasio Gear adalah 16, Jadi jumlah langkah dalam 1 Revolusi adalah:

langkah-langkah dalam Satu Revolusi = 360 / 7.5 = 48.

langkah = 48 * 16 = 768
Itu akan berbeda tergantung pada motor apa yang Anda gunakan, jadi periksa Lembar Data untuk motor stepper Anda untuk mengkalibrasi nilai-nilai ini

Lembar Data Motor 28-BYJ48.

Driver Motor ULN2003 BreakOut Terhubung Ke Arduino Dari IN1 - IN4 Ke D8 - D11 Masing-masing

Untuk Memberi Anda Motor, Direkomendasikan untuk menggunakan Catu Daya eksternal setidaknya 5V-500mA, Jangan menyalakannya langsung dari arduino Board 5V.

Langkah 3: Masalah Arah Perpustakaan ... dan Cara Memperbaikinya.

Saat Anda Mengunggah sketsa ke Arduino, Motor akan Berputar dalam satu arah Dengan mengetikkan perintah:

langkah (langkah);
Jadi, Anda harus Masukkan Jumlah langkah untuk memutar motor.

Referensi mengatakan Anda dapat menempatkan nilai positif untuk mengubah satu arah, negatif untuk mengubah yang lain.

Jika tidak apa-apa Dengan Motor stepper Anda, Anda tidak perlu membaca yang berikut ini.

Jika Tidak, Motor Anda berbelok ke arah yang sama bahkan ketika Anda Menempatkan langkah-langkah Nilai Positif atau negatif, Apa masalahnya?

Motor ini perlu dioperasikan sebagai Tabel pada lampiran.

arduino Stepper Library perlu dimodifikasi agar sesuai dengan persyaratan ini.

Saya menulis kode yang memungkinkan motor ini untuk Pindah searah jarum jam dan berlawanan dengan waktu

Kode di langkah selanjutnya:

Langkah 4: Ubah Kode

kode terakhir untuk motor Stepper ini:

/ *
BYJ48 Kode motor stepper
Menghubung :
IN1 >> D8
IN2 >> D9
IN3 >> D10
IN4 >> D11
VCC ... 5V Lebih suka menggunakan Sumber 5V eksternal
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
last_time lama tidak ditandatangani;
unsigned long currentMillis;
int steps_left = 4095;
lama;
pengaturan batal ()
{
Serial.begin (115200);
pinMode (IN1, OUTPUT);
pinMode (IN2, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
// keterlambatan (1000);

}
membatalkan loop ()
{
while (steps_left> 0) {
currentMillis = micros ();
if (currentMillis-last_time> = 1000) {
stepper (1);
time = waktu + micros () - last_time;
last_time = micros ();
steps_left--;
}
}
Serial.println (waktu);
Serial.println ("Tunggu ...!");
delay (2000);
Arah =! Arah;
steps_left = 4095;
}

membatalkan stepper (int xw) {
untuk (int x = 0; x switch (Langkah) {
case 0:
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
istirahat;
kasus 1:
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
digitalWrite (IN3, HIGH);
digitalWrite (IN4, HIGH);
istirahat;
kasus 2:
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
istirahat;
kasus 3:
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
istirahat;
kasus 4:
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
istirahat;
kasus 5:
digitalWrite (IN1, HIGH);
digitalWrite (IN2, HIGH);
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
istirahat;
kasus 6:
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
istirahat;
kasus 7:
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
istirahat;
default:
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
istirahat;
}
SetDirection ();
}
}
membatalkan SetDirection () {
if (Direction == 1) {Steps ++;}
if (Direction == 0) {Steps--; }
if (Langkah> 7) {Langkah = 0;}
if (Langkah <0) {Langkah = 7; }
}



Artikel Terkait