El 28BYJ-48 ialah motor stepper unipolar kos rendah dan ketepatan tinggi, sesuai untuk projek elektronik, untuk pencetak 3D, mesin CNC dan robotik. Saiznya yang padat, penggunaan kuasa yang rendah dan kemudahan penggunaan menjadikannya pilihan popular untuk penggemar elektronik dan profesional.
Tambahan pula, bersama dengan enjin ini, a modul dengan ULN2003, untuk kawalan anda. Dengan cara ini, kami mempunyai segala yang diperlukan untuk dapat menggunakan sistem ini sepenuhnya, menggunakan mikropengawal atau papan Arduino atau seumpamanya.
Apakah motor stepper 28BYJ-48?
Un motor stepper ialah sejenis motor elektrik yang bergerak dalam langkah sudut diskret kecil, bukannya putaran berterusan. Ia berfungsi menggunakan satu set elektromagnet yang diaktifkan dalam urutan tertentu. Dengan mengaktifkan elektromagnet yang berbeza, medan magnet dicipta yang menarik pemutar motor, menyebabkan ia berputar satu langkah pada satu masa. Bilangan langkah setiap pusingan dan ketepatan pergerakan bergantung pada reka bentuk motor tertentu dan urutan kawalan yang digunakan.
Dalam motor stepper kita mempunyai dua jenis:
- Unipolar- Mereka mempunyai satu set gegelung dan memerlukan pengawal khas untuk membalikkan arus dan membuat motor berputar dalam kedua-dua arah.
- bipolar- Mereka mempunyai dua set gegelung bebas, membolehkan mereka berputar dalam kedua-dua arah tanpa memerlukan pengawal khas.
Dalam kes 28BYJ-28 ia adalah jenis unipolar, seperti yang saya nyatakan sebelum ini. Dan, dalam kumpulan ini, ia dicirikan dengan mempunyai yang berikut spesifikasi:
- Stepper unipolar: kawalan mudah dengan hanya 4 kabel.
- Pengurang bersepadu: menawarkan ketepatan tinggi (0.088° setiap langkah) dan tork (3 N·cm).
- Penggunaan yang rendah: 83 mA (model 5V) atau 32 mA (model 12V).
- makan: 5V atau 12V (bergantung kepada model).
- Harga ekonomi: daripada €1.2 seunit, atau lebih sedikit jika ia termasuk modul ULN2003.
Sebagai permohonan yang mungkin, saya telah menyebut beberapa daripadanya sebelum ini, tetapi di sini saya memberikan anda sekali lagi beberapa idea untuk projek anda:
- Kawalan injap hidraulik dan pneumatik.
- Robot artikulasi dan lengan robot.
- Kedudukan sensor.
- Memutar meja untuk pengimbas.
- pencetak 3d.
- Mesin CNC.
Motor stepper tidak berfungsi sendiri, ia memerlukan elemen lain. Dalam kes ini, 28BYJ-48 dikawal oleh papan dengan ULN2003 bersepadu, yang membolehkan arus output Arduino dikuatkan untuk menggerakkan gegelung motor. Dengan mengaktifkan gegelung dalam urutan yang betul, motor berputar langkah demi langkah dengan ketepatan yang tinggi.
Jenis urutan dan fasa kawalan
Terdapat pelbagai jujukan kawalan untuk 28BYJ-48, yang paling biasa ialah:
- Urutan gelombang penuh: mengaktifkan semua gegelung pada masa yang sama.
- Urutan separuh langkah: Mengaktifkan dua gegelung bersebelahan pada masa yang sama.
- Urutan langkah mikroskopik: Mengaktifkan satu gegelung pada satu masa.
Mari lihat fasa-fasa tersebut secara terperinci:
- Urutan 1-fasa: Dalam urutan 1 fasa kita menghidupkan satu gegelung pada satu masa. Mengambil jujukan pencucuhan ini ke jadual, perkara berikut perlu dijana dalam pinout enjin:
Paso | A | B | A ' | B' |
---|---|---|---|---|
1 | ON | OFF | OFF | OFF |
2 | OFF | ON | OFF | OFF |
3 | OFF | OFF | ON | OFF |
4 | OFF | OFF | OFF | ON |
- Urutan 2 fasa: kita menghidupkan dua gegelung korelatif dalam setiap fasa, jadi medan magnet yang dihasilkan lebih besar (41% lebih) jadi motor mempunyai lebih tork, iaitu, kita memperoleh lebih banyak kekuatan. Sebagai titik negatif, kami menggandakan penggunaan tenaga. Bagi jadual, ia akan menjadi:
Paso | A | B | A ' | B' |
---|---|---|---|---|
1 | ON | ON | OFF | OFF |
2 | OFF | ON | ON | OFF |
3 | OFF | OFF | ON | ON |
4 | ON | OFF | OFF | ON |
- Urutan separuh langkah: Ini adalah satu lagi peringkat yang akan kita lihat, anda boleh mengalami perkara yang paling menarik minat anda. Di sini kita menghidupkan satu dan dua gegelung secara bergilir-gilir, mencapai ketepatan setengah langkah. Ia digunakan dalam aplikasi di mana ketepatan tertinggi diperlukan, walaupun mungkin terdapat masalah apabila aplikasi berada pada had tork. Menyatakan urutan dalam bentuk jadual menghasilkan:
Separuh langkah | A | B | A ' | B' |
---|---|---|---|---|
1 | ON | OFF | OFF | OFF |
2 | ON | ON | OFF | OFF |
3 | OFF | ON | OFF | OFF |
4 | OFF | ON | ON | OFF |
5 | OFF | OFF | ON | OFF |
6 | OFF | OFF | ON | ON |
7 | OFF | OFF | OFF | ON |
8 | ON | OFF | OFF | ON |
28BYJ-28 dengan Arduino
Perkara pertama ialah menyambung dengan betul modul dan motor 28byj-48 ke papan Arduino kami, untuk melakukan ini, anda hanya perlu membuat sambungan berikut:
- Pin – daripada ULN2003 kepada GND Arduino.
- Pin + ULN2003 kepada Vcc (5v atau dalam kes lain, jika ia adalah motor 12v, bekalan kuasa dengan voltan itu perlu digunakan) daripada Arduino.
- IN1, IN2, IN3 dan IN4 ULN2003 kepada input digital D8, D9, D10 dan D11 Arduino.
- Motor 28byj-48, hanya sambungkannya ke port pada modul ULN2003.
Sekarang setelah anda disambungkan, perkara seterusnya ialah menggunakan contoh dalam Arduino IDE, yang boleh anda gunakan untuk mencuba atau mengubah suai mengikut keinginan anda. Dalam contoh ini, semua jadual fasa diulas, seperti // di hadapan baris, anda tahu... Jika anda ingin menggunakan salah satu daripadanya, hanya padamkan // di hadapan arahan.
//Definir los pines const int motorPin1 = 8; // 28BYJ48 In1 const int motorPin2 = 9; // 28BYJ48 In2 const int motorPin3 = 10; // 28BYJ48 In3 const int motorPin4 = 11; // 28BYJ48 In4 //Definición de variables int motorSpeed = 1200; //Velocidad del motor int stepCounter = 0; //Contador de pasos int stepsPerRev = 4076; //Pasos para un giro completo //Tablas de secuencia (descomentar la que necesites) //Secuencia 1-fase //const int numSteps = 4; //const int stepsLookup[4] = { B1000, B0100, B0010, B0001 }; //Secuencia 2-fases //const int numSteps = 4; //const int stepsLookup[4] = { B1100, B0110, B0011, B1001 }; //Secuencia media fase //const int numSteps = 8; //const int stepsLookup[8] = { B1000, B1100, B0100, B0110, B0010, B0011, B0001, B1001 }; void setup() { //Declarar los pines usados como salida pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); pinMode(motorPin3, OUTPUT); pinMode(motorPin4, OUTPUT); } void loop() { for (int i = 0; i < stepsPerRev * 2; i++) { clockwise(); delayMicroseconds(motorSpeed); } for (int i = 0; i < stepsPerRev * 2; i++) { anticlockwise(); delayMicroseconds(motorSpeed); } delay(1000); } void clockwise() { stepCounter++; if (stepCounter >= numSteps) stepCounter = 0; setOutput(stepCounter); } void anticlockwise() { stepCounter--; if (stepCounter < 0) stepCounter = numSteps - 1; setOutput(stepCounter); } void setOutput(int step) { digitalWrite(motorPin1, bitRead(stepsLookup[step], 0)); digitalWrite(motorPin2, bitRead(stepsLookup[step], 1)); digitalWrite(motorPin3, bitRead(stepsLookup[step], 2)); digitalWrite(motorPin4, bitRead(stepsLookup[step], 3)); }