Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-23 14:49
Ini adalah skema kontrol untuk motor stepper 28BYJ-48 yang telah saya kembangkan untuk digunakan sebagai bagian dari proyek disertasi tahun terakhir saya. Saya belum pernah melihat ini dilakukan sebelumnya, jadi saya pikir saya akan mengunggah apa yang saya temukan. Semoga ini akan membantu orang lain di luar sana!
Kode pada dasarnya memungkinkan motor stepper untuk "menyalin" posisi sudut joystick analog, artinya jika Anda mendorong joystick ke depan, motor mengarah ke "utara". mendorong joystick ke arah barat, motor berputar ke arah yang sama.
Untuk implementasi saya, saya mengharuskan jika joystick dilepaskan, yaitu tidak memiliki posisi sudut, motor kembali ke arah "rumah". Arah rumah menghadap ke timur, dan motor (atau setidaknya penunjuk / perangkat apa pun yang Anda pasang ke poros keluaran!) juga harus menghadap ke arah ini saat dihidupkan.
Perlengkapan
Arduino Uno atau sejenisnya
papan tempat memotong roti & pemilihan kabel jumper (jantan ke jantan, jantan ke betina)
catu daya 5V
Modul joystick analog (idealnya dengan fitur tombol tekan sesaat, ini membuat posisi "rumah" lebih mudah diistirahatkan
28BYJ-48 motor stepper dan driver stepper ULN2003
Pena, kertas, dan blu-tac (atau perangkat penunjuk lainnya untuk dipasang ke motor!)
Langkah 1: Langkah 1: Menyiapkan
Hubungkan motor stepper ke driver stepper, dan sambungkan pin sebagai berikut:
IN1 - Arduino pin 8
IN2 - Pin Arduino 9
IN3 - Pin Arduino 10
IN4 - Pin Arduino 11
Hubungkan catu daya 5v Anda ke rel suplai di papan tempat memotong roti Anda, dan sambungkan input ULN2003 5v ke rel suplai. hubungkan ground rail ke ground pada Arduino Anda.
untuk joystick, sambungkan sebagai berikut:
Beralih pin - pin Arduino 2
Sumbu X - Arduino A0 (Analog dalam 0)
Sumbu Y - Arduino A1
+5V - keluaran Arduino 5V
GND - Arduino GND
Terakhir hubungkan ground papan tempat memotong roti Anda ke pin Arduino GND lainnya
Langkah 2: Langkah 2: Menjelaskan Kode
Saya telah menyertakan kode Arduino lengkap untuk Anda unduh dan gunakan. Tetapi akan melakukan yang terbaik untuk menjelaskan bagian-bagian terkait di sini.
Teori di balik kode ini adalah bahwa ruang yang ditempati oleh joystick dibagi menjadi grafik, dengan 0, 0 di tengahnya. namun input joystick berada di (kira-kira) 512 di tengah, jadi untuk mengatasi ini dua fungsi digunakan untuk "nol" nilai yang dibaca dari sumbu X dan Y. tergantung pada catu daya yang Anda gunakan, Anda mungkin perlu mengubah nilai dalam fungsi ZeroX dan ZeroY sehingga joystick Anda memberikan pembacaan 0 yang andal saat beristirahat.
Saat nilai X, Y dibaca, nilai tersebut pertama kali dikonversi ke radian menggunakan fungsi atan2() di library math.h. Menjelaskan fungsi ini di luar cakupan instruksi ini, tapi tolong cari tahu - ini adalah trik geometri yang agak sederhana!
Terakhir, untuk mempermudah hidup kita yang terbiasa bekerja dalam derajat daripada rad, nilai rad yang dihitung oleh atan2() diubah menjadi derajat.
Di bagian atas loop adalah potongan kecil kode yang memungkinkan Anda mengklik tombol sesaat pada joystick untuk memindahkan lokasi "rumah". Ini sangat berguna saat menguji kode, tetapi saya membiarkannya karena saya dapat melihat bagaimana itu bisa berguna dalam beberapa kasus.
Sekarang ke sebagian besar kode! kita mulai dengan membaca joystick X, koordinat Y dua kali dipisahkan oleh penundaan 10 ms dan kemudian memeriksa apakah keduanya sama - saya menemukan bahwa joystick kadang-kadang akan menampilkan pembacaan sporadis, dan sedikit penundaan ini cukup untuk menghentikan putaran motor berdasarkan ini. Ini juga merupakan penundaan yang cukup singkat sehingga tampaknya tidak mengganggu input yang disengaja.
Sisa kodenya cukup jelas dan saya telah melakukan yang terbaik untuk mendokumentasikannya; Serangkaian pernyataan IF membandingkan sudut joystick saat ini dengan sudut motor, dan gerakkan motor ke sudut itu. 28BYJ-48 memiliki 5.689 langkah per derajat, jadi itu sebabnya kami mengalikan gerakan yang diperlukan dengan angka yang tampaknya ganjil ini!
Satu bagian dari kode yang paling membutuhkan penjelasan adalah apa yang saya sebut sebagai "wraparound case". Bahkan ketika joystick & motor berada di mis. +175 °, dan joystick kemudian pindah ke -175 ° (pergerakan hanya 10 ° pada joystick, dari utara barat ke selatan barat), motor akan bergerak DI ARAH YANG SALAH sebesar 350 °! untuk menjelaskan hal ini kasus khusus ditulis.
Kasus sampul dimulai dengan memeriksa apakah motor dan joystick memiliki tanda yang berlawanan, yaitu motor positif dan joystick negatif, atau sebaliknya. Ini juga memeriksa bahwa jumlah absolut (yaitu, nilai positif) dari joystick dan motor di atas 180°.
Jika kedua pernyataan ini benar, fungsi kemudian memeriksa apakah motor perlu bergerak searah jarum jam (nilai motor negatif) atau berlawanan arah jarum jam (jika nilai motor positif).
Nilai absolut dari sudut motor dan sudut joystick dijumlahkan, dan dikurangi dari 360° untuk menentukan jarak yang harus ditempuh. Akhirnya, sudut motor (yang sekarang mencerminkan sudut joystick) diperbarui seperti itu.
Langkah 3: SELESAI
Jadi, yang tersisa untuk dilakukan adalah mengunggah kode ke Arduino Anda dan menjalankannya! Lihat video di atas untuk ide bagus tentang bagaimana fungsi proyek. Ini akan berguna untuk gimbal kamera, lengan robot, dan banyak aplikasi lainnya!
Jika Anda menggunakan kode tersebut, beri tahu saya, dan jika Anda melihat di mana kode tersebut dapat ditingkatkan, saya akan senang mendengar tanggapan Anda.
Direkomendasikan:
Stepper Motor Controlled Stepper Motor Tanpa Mikrokontroler(V2): 9 Langkah (dengan Gambar)
Motor Stepper Terkendali Motor Stepper Tanpa Mikrokontroler(V2): Dalam salah satu Instruksi saya sebelumnya, saya menunjukkan kepada Anda cara mengontrol motor stepper menggunakan motor stepper tanpa mikrokontroler. Itu adalah proyek yang cepat dan menyenangkan tetapi datang dengan dua masalah yang akan diselesaikan dalam Instructable ini. Jadi, akal
Lokomotif Model Terkendali Motor Stepper - Stepper Motor Sebagai Rotary Encoder: 11 Langkah (dengan Gambar)
Lokomotif Model Terkendali Motor Stepper | Motor Stepper Sebagai Rotary Encoder: Dalam salah satu Instruksi sebelumnya, kita telah mempelajari cara menggunakan motor stepper sebagai rotary encoder. Dalam proyek ini, kita sekarang akan menggunakan motor stepper yang memutar rotary encoder untuk mengontrol model lokomotif menggunakan mikrokontroler Arduino. Jadi, tanpa fu
Motor DC dan Encoder untuk Kontrol Posisi dan Kecepatan: 6 Langkah
Motor DC dan Encoder untuk Kontrol Posisi dan Kecepatan: PendahuluanKami adalah sekelompok mahasiswa UQD10801(Robocon I) dari Universiti Tun Hussei Onn Malaysia (UTHM).Kami memiliki 9 grup dalam kursus ini.Kelompok saya adalah grup 2.Kegiatan grup kami adalah DC motor dan encoder untuk kontrol posisi dan kecepatan. Objek kelompok kami
Motor Stepper Terkendali Motor Stepper - Stepper Motor Sebagai Rotary Encoder: 11 Langkah (dengan Gambar)
Motor Stepper Terkendali Motor Stepper | Stepper Motor Sebagai Rotary Encoder: Punya beberapa motor stepper tergeletak di sekitar dan ingin melakukan sesuatu? Dalam Instruksi ini, mari kita gunakan motor stepper sebagai rotary encoder untuk mengontrol posisi motor stepper lain menggunakan mikrokontroler Arduino. Jadi tanpa basa-basi lagi, mari kita
Kontrol Posisi Motor DC: 5 Langkah
Kontrol Posisi Motor DC: Instruksi ini akan menunjukkan cara mengontrol posisi motor melalui jaringan web lokal. Sekarang Anda dapat menggunakan ponsel pintar atau iPad yang terhubung ke jaringan, lalu ketik alamat server web lokal motor Dari sini, kita dapat mengontrol disk posisi motor dengan memutar