
Isi kandungan:
2025 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2025-01-23 15:01

Ini adalah skema kawalan untuk motor stepper 28BYJ-48 yang telah saya kembangkan untuk digunakan sebagai sebahagian daripada projek disertasi tahun terakhir saya. Saya tidak pernah melihatnya sebelum ini, jadi saya fikir akan memuat naik apa yang saya dapati. Semoga ini dapat membantu orang lain di luar sana!
Kod pada dasarnya membolehkan motor stepper untuk "menyalin" kedudukan sudut kayu bedik analog, iaitu jika anda menolak kayu bedik ke hadapan, motor menunjuk ke arah "utara". tolak kayu bedik ke arah barat, motor berpusing ke arah yang sama.
Untuk pelaksanaan saya, saya memerlukan bahawa jika kayu bedik dilepaskan, iaitu tidak mempunyai kedudukan sudut, motor akan kembali ke arah "rumah". Arah rumah menghadap ke timur, dan motor (atau sewa pointer / peranti apa pun yang anda pasangkan pada poros output!) Juga mesti menghadap ke arah ini ketika dihidupkan.
Bekalan
Arduino Uno atau yang serupa
papan roti & pemilihan wayar pelompat (lelaki hingga lelaki, lelaki hingga wanita)
Bekalan kuasa 5V
Modul joystick analog (sesuai dengan ciri butang tekan sesaat, ini menjadikan kedudukan "rumah" berehat lebih mudah
Motor stepper 28BYJ-48 dan pemacu stepper ULN2003
Pena, kertas dan blu-tac (atau alat penunjuk lain untuk dipasang ke motor!)
Langkah 1: Langkah 1: Menyiapkan
Sambungkan motor stepper ke pemacu stepper, dan sambungkan pin seperti berikut:
IN1 - Pin Arduino 8
IN2 - Pin Arduino 9
IN3 - Pin Arduino 10
IN4 - Pin Arduino 11
Sambungkan bekalan kuasa 5v anda ke rel bekalan di papan roti anda, dan sambungkan input 5v ULN2003 ke rel bekalan. sambungkan landasan kereta api ke tanah di Arduino anda.
untuk kayu bedik, sambungkan seperti berikut:
Tukar pin - pin Arduino 2
Paksi X - Arduino A0 (Analog dalam 0)
Paksi Y - Arduino A1
+ 5V - Arduino output 5V
GND - Arduino GND
Akhirnya sambungkan permukaan papan roti anda ke pin Arduino GND yang lain
Langkah 2: Langkah 2: Menjelaskan Kod
Saya telah memasukkan kod Arduino penuh untuk anda muat turun dan gunakan. Tetapi akan melakukan yang terbaik untuk menerangkan bahagian-bahagian yang berkaitan di sini.
Teori di sebalik kod ini adalah bahawa ruang yang ditempati oleh kayu bedik dibahagikan kepada graf, dengan 0, 0 di tengahnya. namun input joystick terletak pada (kira-kira) 512 di tengah, jadi untuk mengatasi kedua fungsi ini digunakan untuk "zero" nilai yang dibaca dari sumbu X dan Y. bergantung pada bekalan kuasa yang anda gunakan, anda mungkin perlu mengubah nilai dalam fungsi ZeroX dan ZeroY sehingga kayu bedik anda memberikan bacaan 0 yang boleh dipercayai ketika berehat.
Apabila nilai X, Y dibaca, mereka pertama kali ditukar menjadi radian menggunakan fungsi atan2 () di perpustakaan math.h. Menjelaskan fungsi ini berada di luar ruang lingkup arahan ini, tetapi sila lihat - ini adalah kaedah geometri yang agak mudah!
Akhirnya, untuk menjadikan hidup lebih mudah bagi kita yang biasa bekerja dalam darjah dan bukannya rad, nilai rad yang dikira oleh atan2 () ditukar menjadi darjah.
Di bahagian atas gelung terdapat potongan kecil kod yang membolehkan anda mengklik butang sesaat pada kayu bedik untuk memindahkan lokasi "rumah". Ini sangat berguna semasa menguji kod, tetapi saya membiarkannya kerana saya dapat melihat bagaimana ia berguna dalam beberapa keadaan.
Sekarang ke sebahagian besar kod! kita mulakan dengan membaca joystick X, koordinat Y dua kali dipisahkan dengan kelewatan 10ms dan kemudian memeriksa apakah itu sama - saya mendapati bahawa joystick kadang-kadang akan menghasilkan bacaan sporadis, dan sedikit kelewatan ini cukup untuk menghentikan putaran motor berdasarkan ini. Ia juga merupakan kelewatan yang cukup singkat sehingga nampaknya tidak mengganggu input yang disengajakan.
Selebihnya kod agak jelas dan saya telah berusaha sedaya upaya untuk mendokumentasikannya; Satu siri pernyataan IF membandingkan sudut joystick semasa dengan sudut motor, dan memindahkan motor ke sudut itu. 28BYJ-48 mempunyai 5.689 langkah setiap darjah, jadi itu sebabnya kita memperbanyak pergerakan yang diperlukan dengan nombor yang kelihatan ganjil ini!
Satu bahagian kod yang paling memerlukan penjelasan adalah apa yang saya sebut sebagai "case wraparound". Pada tahap yang sama, joystick & motor berada di mis. + 175 °, dan kayu bedik kemudian bergerak ke -175 ° (pergerakan hanya 10 ° pada kayu bedik, dari arah utara ke barat ke selatan ke barat), motor akan bergerak DI ARAH YANG SALAH sebanyak 350 °! untuk menjelaskan kes ini ditulis khas.
Kes pembungkus dimulakan dengan memeriksa bahawa motor dan kayu bedik mempunyai tanda bertentangan, iaitu motor positif dan kayu bedik negatif, atau sebaliknya. Ia juga memeriksa bahawa jumlah mutlak (iaitu nilai positif) kayu bedik dan motor berada di atas 180 °.
Sekiranya kedua-dua pernyataan ini benar, fungsi kemudian memeriksa sama ada motor perlu bergerak mengikut arah jam (nilai motor negatif) atau berlawanan arah jam (jika nilai motor positif).
Nilai mutlak sudut motor dan sudut kayu bedik dijumlahkan, dan dikurangkan dari 360 ° untuk menentukan jarak bergerak. Akhirnya, sudut motor (yang sekarang mencerminkan sudut kayu bedik) dikemas kini.
Langkah 3: SELESAI

Jadi, yang tinggal hanyalah memuat naik kod ke Arduino anda dan jalankan! Lihat video di atas untuk mengetahui idea bagaimana projek berfungsi. Ini akan berguna untuk gimbal kamera, lengan robot dan banyak aplikasi lain!
Sekiranya anda menggunakan kod, beritahu saya, dan jika anda melihat mana kod tersebut dapat diperbaiki, saya ingin mendengar maklum balas anda.
Disyorkan:
Kawalan LED Arduino Dengan Joystick Analog: 6 Langkah

Arduino LED Control Dengan Analog Joystick: Dalam tutorial ini kita akan belajar bagaimana menggunakan Joystick analog untuk mengawal LED. Tonton video demonstrasi
Cara Menggunakan Motor Stepper 28BYJ-48 Dengan 3 Butang Tekan: 5 Langkah

Cara Menggunakan Motor Stepper 28BYJ-48 Dengan 3 Butang Tekan: Adakah anda ingin mengawal motor stepper anda menggunakan butang tekan? Itu boleh berfungsi Clockwise, Counter Clockwise dan kemudian Stop? Maka video ini untuk anda
Stepper Motor terkawal Motor Stepper Tanpa Mikrokontroler (V2): 9 Langkah (dengan Gambar)

Stepper Motor terkawal Motor Stepper Tanpa Mikrokontroler (V2): Dalam salah satu Instructables saya sebelumnya, saya menunjukkan kepada anda cara mengawal motor stepper menggunakan motor stepper tanpa mikrokontroler. Ini adalah projek yang cepat dan menyeronokkan tetapi ia datang dengan dua masalah yang akan diselesaikan dalam Instructable ini. Jadi, dengan
Lokomotif Model Dikendalikan Motor Stepper - Motor Stepper Sebagai Pengekod Rotary: 11 Langkah (dengan Gambar)

Lokomotif Model Dikendalikan Motor Stepper | Stepper Motor Sebagai Rotary Encoder: Dalam salah satu Instructables sebelumnya, kami belajar bagaimana menggunakan stepper motor sebagai rotary encoder. Dalam projek ini, kita sekarang akan menggunakan motor stepper yang dipusingkan rotary encoder untuk mengawal lokomotif model menggunakan mikrokontroler Arduino. Jadi, tanpa fu
Stepper Motor terkawal Motor Stepper - Motor Stepper Sebagai Pengekod Rotary: 11 Langkah (dengan Gambar)

Stepper Motor terkawal Motor Stepper | Stepper Motor Sebagai Rotary Encoder: Adakah beberapa motor stepper berbaring dan mahu melakukan sesuatu? Dalam Instructable ini, mari gunakan motor stepper sebagai rotary encoder untuk mengawal kedudukan motor stepper lain menggunakan mikrokontroler Arduino. Jadi tanpa basa-basi lagi, mari kita