Menggunakan Motor Stepper 28BYJ-48 dengan Driver ULN2003 dan Arduino
Dalam tutorial ini, kita akan belajar bagaimana mengendalikan motor stepper 28BYJ-48 menggunakan driver ULN2003 dengan Arduino. Pengaturan ini memungkinkan kontrol yang tepat terhadap posisi dan kecepatan motor. Di akhir proyek ini, Anda akan dapat memutar motor ke kedua arah dan mengendalikan langkah-langkahnya dengan efektif.
Kami akan menggunakan motor stepper 28BYJ-48, yang merupakan pilihan populer untuk berbagai proyek robotika dan otomatisasi karena biayanya yang rendah dan kemudahan penggunaannya. Papan pengendali ULN2003 menghubungkan motor stepper dengan Arduino, memungkinkan kami mengirim sinyal langkah yang mengontrol gerakan motor. Tutorial ini akan memandu Anda melalui pengkabelan dan kode yang diperlukan untuk membuat motor Anda berputar.
Untuk klarifikasi lebih lanjut, silakan merujuk ke video yang terkait dengan tutorial ini (dalam video pada 0:45).
Penjelasan Perangkat Keras
Komponen kunci dari proyek ini termasuk motor stepper 28BYJ-48 dan papan pengendali ULN2003. Motor stepper terdiri dari beberapa kumparan yang dapat diaktifkan dalam urutan tertentu untuk menghasilkan rotasi. Pengendali ULN2003 bertindak sebagai saklar, memungkinkan Arduino untuk mengontrol daya yang disalurkan ke setiap kumparan.
Driver ULN2003 menggunakan rangkaian transistor Darlington untuk menangani arus lebih tinggi yang diperlukan oleh motor stepper. Ketika sebuah pin dari Arduino mengeluarkan sinyal HIGH, itu memungkinkan arus mengalir ke kumparan yang sesuai di motor, menyebabkan motor bergerak. Ini memungkinkan kontrol yang tepat atas sudut rotasi dan kecepatan motor.
Detail Lembar Data
| Produsen | ULN2003 |
|---|---|
| Nomor bagian | ULN2003 |
| Tegangan Logika/IO | 5 V |
| Tegangan suplai | 5-30 V (maks) |
| Arus keluaran (per saluran) | 500 mA maksimum |
| Arus puncak (per saluran) | 2 A max |
| Panduan frekuensi PWM | N/A |
| Ambang logika input | 0,8 V (rendah), 2,4 V (tinggi) |
| Penurunan tegangan / RDS(on)/ saturasi | 1,5 V maks |
| Batas termal | 70 °C max |
| Paket | DIP-16 |
| Catatan / varian | Umumnya digunakan dengan motor stepper 5V. |
- Pastikan pengemudi dapat menangani kebutuhan saat ini dari motor Anda.
- Gunakan heatsink jika perlu untuk mengelola batasan termal.
- Periksa bahwa semua koneksi aman untuk menghindari input yang mengambang.
- Uji motor dengan menjalankan urutan langkah sederhana sebelum mengintegrasikannya ke dalam proyek yang lebih besar.
- Pastikan untuk memberi daya pada motor dengan tegangan suplai yang memadai.
Instruksi Pemasangan Kabel


Untuk menghubungkan motor stepper 28BYJ-48 ke driver ULN2003 dan Arduino, ikuti langkah-langkah berikut:
Pertama, sambungkan motor ke driver ULN2003. Motor memiliki empat kabel, biasanya diberi kode warna sebagai oranye, kuning, merah muda, dan biru. Sambungkan kabel-kabel ini ke pin output yang sesuai pada driver ULN2003. Koneksi adalah sebagai berikut:
Orangekabel keOUT1Yellowkabel keOUT2Pinkkabel keOUT3Bluekabel keOUT4
Selanjutnya, hubungkan driver ULN2003 ke Arduino. Pin input pada driver sesuai dengan empat pin digital di Arduino. Misalnya:
IN1kePin 10IN2kePin 11IN3kePin 12IN4kePin 13
Akhirnya, sambungkan pin daya dan ground dari driver ULN2003 ke Arduino. SambungkanVCCsambungkan ke output 5V Arduino danGNDhubungkan ke ground Arduino. Pastikan semua koneksi aman sebelum menyalakan sistem.
Contoh Kode & Panduan
Di bagian pengaturan kode Arduino, kami mendefinisikan pin yang terhubung ke driver ULN2003:
int Pin1 = 10;
int Pin2 = 11;
int Pin3 = 12;
int Pin4 = 13;
Di sini, kami mendeklarasikan empat variabel integer:Pin1,Pin2,Pin3, danPin4, yang sesuai dengan pin digital di Arduino. Pin-pin ini akan mengontrol gerakan motor stepper.
Dalamsetup()fungsi, kami mengonfigurasi pin-pin ini sebagai keluaran:
void setup() {
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
pinMode(Pin4, OUTPUT);
}
Pengaturan ini memastikan bahwa Arduino dapat mengirim sinyal ke driver ULN2003 untuk mengontrol motor.pinModefungsi mengatur setiap pin ke mode OUTPUT, memungkinkan mereka untuk mengirim sinyal.
Akhirnya, di loop utama, kami membuat switch case untuk mengontrol langkah motor berdasarkan variabel tersebut._step:
switch(_step){
case 0:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, HIGH);
break;
// Additional cases follow
}
Dalam kutipan ini, kami menggunakandigitalWritemengirim sinyal TINGGI atau RENDAH ke setiap pin berdasarkan arus saat ini_step. Ini mengontrol koil mana yang diberi energi, memungkinkan motor untuk berputar. Kode lengkap yang mengintegrasikan potongan-potongan ini akan dimuat di bawah artikel.
Demonstrasi / Apa yang Diharapkan
Setelah semuanya terhubung dengan benar dan kode diunggah, motor stepper harus berputar sebagai respons terhadap sinyal dari Arduino. Anda dapat menguji motor dengan memodifikasi jeda dalam loop atau mengubah langkah untuk melihat bagaimana reaksinya. Harap diperhatikan bahwa jika motor tidak diberi daya dengan benar, motor mungkin tidak bergerak atau dapat berperilaku tidak menentu.
Bab
- Pengantar - 0:00
- Perangkat Keras Dijelaskan - 1:30
- Instruksi Pengkabelan - 3:15
- Contoh Kode & Panduan - 5:00
- Demonstrasi / Apa yang Diharapkan - 7:45
// Original source is http://www.geeetech.com/wiki/index.php/Stepper_Motor_5V_4-Phase_5-Wire_%26_ULN2003_Driver_Board_for_Arduino
// Update by Ahmad Shamshiri for RoboJax.com
// Published on March 27, 2017 in Ajax, ON, Canada.
/*
*
Need wiring diagram from this code: https://youtu.be/0glBk917HPg
Purchase My Arduino course on Udemy.com http://robojax.com/L/?id=62
*
* Get this code and other Arduino codes from RoboJax.com
Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
all in one place. Purchase My course on Udemy.com http://robojax.com/L/?id=62
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from RoboJax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
int Pin1 = 10;
int Pin2 = 11;
int Pin3 = 12;
int Pin4 = 13;
int _step = 0;
boolean dir = true;// false=clockwise, true=counter clockwise
int count=0;
void setup()
{
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
pinMode(Pin4, OUTPUT);
}
void loop()
{
switch(_step){
case 0:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, HIGH);
break;
case 1:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
digitalWrite(Pin4, HIGH);
break;
case 2:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
digitalWrite(Pin4, LOW);
break;
case 3:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, HIGH);
digitalWrite(Pin4, LOW);
break;
case 4:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
case 5:
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
case 6:
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
case 7:
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, HIGH);
break;
default:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
}
if(dir){
_step++;
}else{
_step--;
}
if(_step>7){
_step=0;
}
if(_step<0){
_step=7;
}
delay(1);
}
Hal-hal yang mungkin Anda butuhkan
-
Amazon
-
Amazon
-
AliExpressPurchase 5 pcs 28BYJ-48 stepper motors from AliExpresss.click.aliexpress.com
-
AliExpress
Sumber daya & referensi
-
Eksternal
-
Eksternal
-
Eksternal
-
Eksternal
-
Eksternal
-
Eksternal
Berkas📁
Tidak ada file tersedia.