Daftar Isi:

Menu Kontrol Kecepatan Stepper Didorong untuk Arduino: 6 Langkah
Menu Kontrol Kecepatan Stepper Didorong untuk Arduino: 6 Langkah

Video: Menu Kontrol Kecepatan Stepper Didorong untuk Arduino: 6 Langkah

Video: Menu Kontrol Kecepatan Stepper Didorong untuk Arduino: 6 Langkah
Video: SFE Trainer Arduino Tutorial 6 : Akses Motor Stepper 2024, Juli
Anonim
Menu Kontrol Kecepatan Stepper Didorong untuk Arduino
Menu Kontrol Kecepatan Stepper Didorong untuk Arduino
Menu Kontrol Kecepatan Stepper Didorong untuk Arduino
Menu Kontrol Kecepatan Stepper Didorong untuk Arduino
Menu Kontrol Kecepatan Stepper Didorong untuk Arduino
Menu Kontrol Kecepatan Stepper Didorong untuk Arduino

Pustaka SpeedStepper ini adalah penulisan ulang pustaka AccelStepper untuk memungkinkan kontrol kecepatan motor stepper. Pustaka SpeedStepper memungkinkan Anda mengubah kecepatan motor yang disetel dan kemudian dipercepat/diperlambat ke kecepatan yang disetel baru menggunakan algoritme yang sama dengan pustaka AccelStepper. Pustaka SpeedStepper juga memungkinkan Anda untuk mengatur batas plus dan minus dan posisi 'rumah'. Ada perintah goHome untuk kembali ke posisi home.

Keterbatasan: Pustaka SpeedStepper hanya menggerakkan output arah dan langkah sehingga perlu dihubungkan ke driver motor, seperti Easy Driver, untuk benar-benar menggerakkan motor stepper. Pustaka AccelStepper menyediakan lebih banyak opsi mengemudi yang dapat disalin ke pustaka ini jika diperlukan.

Tiga contoh sketsa disediakan, yang masing-masing dapat dijalankan tanpa motor atau driver motor. sketsa speedStepperPlot mengeluarkan contoh perintah kecepatan dan perintah goHome dan menghasilkan plot kecepatan dan posisi yang dihasilkan. Sketsa speedStepperSetup menyediakan pengaturan yang digerakkan menu untuk mengatur rumah dan batas motor dan kemudian menjalankan motor dan menyesuaikan kecepatan naik dan turun dan pulang ke rumah untuk menyelesaikan. Sketsa speedStepperProfile menunjukkan contoh pengaturan dan eksekusi profil kecepatan.

Sementara perpustakaan AccelStepper menyediakan kontrol posisi yang baik, kontrol kecepatan diperlukan untuk Prototipe Ice-Melting Probe untuk Mengumpulkan Sampel Biologis di Europa. Berikut adalah video prototipe versi sebelumnya, yang menggunakan bobot alih-alih motor. Revisi 1.1 menambahkan profil kecepatan setelah pengguna meminta sarana untuk mengontrol profil kecepatan pompa.

Pustaka ini berjalan di Arduino Uno dan Mega2560, tetapi untuk prototipe digunakan memori yang lebih besar / prosesor yang lebih cepat, SparkFun Redboard Turbo.

Instruksi ini juga tersedia online di Perpustakaan Kontrol Kecepatan Stepper untuk Arduino

Perlengkapan

Untuk menjalankan contoh sketsa hanya Arduino UNO atau Mega2560 dan perpustakaan perangkat lunak yang diperlukan

Untuk pengujian bangku perpustakaan, SparkFun Redboard Turbo digunakan dengan Easy Driver, motor stepper 200 langkah/putaran, 12V 350mA dan suplai 12 DC 2A atau lebih besar, mis. https://www.sparkfun.com/products/14934. Kabel USB A ke MikroKabel Serial USB ke TTLArduino IDE V1.8.9 dan komputer untuk menjalankannya. Pustaka SpeedStepper Pustaka pfodParser untuk kelas nonBlockingInput dan pfodBufferedStream Pustaka milisDelay untuk penundaan non-pemblokiran

Langkah 1: Fungsi Perpustakaan

Pustaka SpeedStepper menjalankan motor stepper yang dibatasi oleh batas yang ditetapkan oleh pustaka. Lihat file SpeedStepper.h untuk berbagai metode pustaka yang tersedia. Berikut adalah garis besar logika di balik mereka.

Posisi stepper dilacak dengan menghitung jumlah langkah (pulsa). Pustaka membatasi posisi berada di antara posisi setPlusLimit(int32_t) dan setMinusLimit(int32_t). Batas plus selalu >= 0 dan batas minus selalu <= 0. Saat start posisi motor adalah 0 (home) dan batasnya diatur ke angka +/- yang sangat besar (sekitar +/-1e9 langkah). setAcceleration(float) mengatur seberapa cepat motor akan mengubah kecepatan baik naik atau turun. Saat motor mendekati batas plus atau minus, motor akan melambat pada kecepatan ini sampai berhenti pada batasnya. Saat start up, akselerasi diatur ke 1.0 langkah/detik/detik. Pengaturan akselerasi selalu berupa angka +ve. Tanda pengaturan setSpeed(float) mengatur arah gerak motor.

setSpeed(float) mengatur kecepatan untuk mempercepat / memperlambat motor, dari kecepatan saat ini. Kecepatan yang dapat diatur melalui setSpeed(float) terbatas, dalam nilai absolut, dengan pengaturan, setMaxSpeed(float), default 1000 langkah/detik dan setMinSpeed(float), default 0,003 langkah/detik. Default ini juga merupakan batas kecepatan hard code mutlak yang akan diterima perpustakaan untuk setMaxSpeed() dan setMinSpeed(). Jika Anda ingin mengatur kecepatan maks > 1000 langkah/detik, Anda perlu mengedit baris pertama di file SpeedStepper.cpp untuk mengubah maxMaxSpeed(1000) ke kecepatan maksimal yang Anda inginkan. Dalam praktiknya, kecepatan maksimum juga dibatasi oleh waktu antara panggilan ke metode run() library. Untuk 1000 langkah / detik, metode run() harus dipanggil setidaknya setiap 1mS. Lihat bagian Latensi di bawah.

Mencoba mengatur kecepatan kurang dari kecepatan min akan menyebabkan motor berhenti. Masing-masing setter ini memiliki pengambil yang sesuai, lihat file SpeedStepper.h. Untuk kecepatan, getSetSpeed() mengembalikan kecepatan yang Anda atur melalui setSpeed(), sementara getSpeed() mengembalikan kecepatan motor saat ini yang bervariasi saat dipercepat/diperlambat sesuai kecepatan yang Anda atur. Jika motor tidak bergerak ke arah yang Anda pikirkan tentang +ve, Anda dapat memanggil invertDirectionLogic() untuk menukar arah gerakan motor dengan kecepatan +ve.

getCurrentPosition() mengembalikan posisi motor saat ini dibandingkan dengan 'home' (0). Anda dapat mengganti posisi motor saat ini setCurrentPosition(int32_t). Posisi baru dibatasi dalam batas plus/minus yang ditetapkan.

Awalnya motor berhenti pada posisi 0. Memanggil setSpeed(50,0) akan menyebabkan motor mulai berakselerasi ke arah +ve hingga kecepatan maksimum 50 langkah/menit. Memanggil hardStop() akan segera menghentikan motor di tempatnya. Di sisi lain memanggil metode stop() akan mengatur kecepatan ke nol dan memperlambat motor hingga berhenti. Memanggil stopAndSetHome() akan segera menghentikan motor dan mengatur posisinya ke 0. Nilai batas plus/minus tidak berubah tetapi sekarang dirujuk ke posisi 0 (rumah) baru ini. Memanggil goHome() akan mengembalikan stepper ke posisi 0 (home) ini dan berhenti. Memanggil setSpeed() akan membatalkan pulang.

Pustaka SpeedStepper juga menyediakan kontrol profil kecepatan melalui metode setProfile(SpeedProfileStruct* profileArray, size_t arrayLen), startProfile(), stopProfile(), untuk menginterupsi profil yang sedang berjalan, dan isProfileRunning(). Lihat sketsa contoh speedStepperProfile.

Langkah 2: Menjalankan Contoh SpeedStepperPlot Tanpa Motor

Menjalankan Contoh SpeedStepperPlot Tanpa Motor
Menjalankan Contoh SpeedStepperPlot Tanpa Motor

Instal Arduino IDE V1.8.9Unduh dan instal pustaka SpeedStepper Simpan SpeedStepper.zip lalu gunakan item menu Arduino IDE Sketsa → Sertakan Pustaka → Tambahkan pustaka. ZIP untuk mengimpor pustaka Unduh dan instal pustaka milisDelay juga

Buka Contoh sketsa → SpeedStepper → speedStepperPlot contoh sketsa (Mulai ulang IDE jika perlu). Sketsa ini dikonfigurasi untuk bekerja dengan Serial, mis. UNO dan Mega dll. Untuk menjalankan SparkFun Redboard Turbo lihat di bawah.

Tidak diperlukan papan driver atau motor stepper untuk menjalankan contoh ini. Contoh-contoh ini menggunakan D6 dan D7 sebagai output. Anda dapat mengubah pin output ke output digital apa pun dengan mengubah pengaturan STEP_PIN dan DIR_PIN di dekat bagian atas sketsa.

Unggah sketsa ke papan lalu buka Tools → Serial Plotter pada 115200 baud untuk menunjukkan plot kecepatan (MERAH) dan posisi (BIRU) Batas plus diatur ke 360 yang menyebabkan kecepatan naik ke nol dari sekitar 100 poin pada sumbu x. Batas minusnya adalah -510. Posisi berhenti di ~-390 karena kecepatan telah diminta ke 0,0. Pada titik 380 pada sumbu x, cmd goHome dikeluarkan yang mengembalikan stepper ke posisi nol.

Sketsa speedStepperPlot ini menggunakan millisDelays untuk beralih waktu antara berbagai kecepatan dan akselerasi. Dalam banyak kasus, menggunakan SpeedStepperProfile, seperti pada contoh berikutnya, lebih sederhana.

Langkah 3: Menjalankan Contoh SpeedStepperProfile Tanpa Motor

Menjalankan Contoh SpeedStepperProfile Tanpa Motor
Menjalankan Contoh SpeedStepperProfile Tanpa Motor

Buka Contoh sketsa → SpeedStepper → speedStepperPlot contoh sketsa, sketsa ini menghasilkan plot di atas menggunakan Arduino Serial Plotter dan merupakan contoh menjalankan profil kecepatan yang ditentukan misalnya jika menjalankan pompa.

Profil Kecepatan Stepper terdiri dari larik SpeedProfileStruct, yang didefinisikan dalam file SpeedStepper.h.

struct SpeedProfileStruct {

kecepatan mengambang; // kecepatan target di akhir langkah ini unsigned long deltaTms; // waktu untuk mempercepat dari kecepatan saat ini (pada awal langkah ini) ke kecepatan target };

Tentukan larik SpeedProfileStruct yang berisi kecepatan target untuk setiap langkah dan waktu, deltaTms, dalam mS, untuk mencapai kecepatan target tersebut dari kecepatan target sebelumnya. Jika deltaTms nol atau sangat kecil, maka kecepatan akan langsung melompat ke kecepatan target yang baru. Jika tidak, akselerasi yang diperlukan akan dihitung setAcceleration() akan dipanggil diikuti dengan panggilan ke setSpeed() untuk kecepatan target baru. Dalam semua kasus, profil akan dibatasi oleh batas posisi plus dan minus yang ada dan pengaturan kecepatan maks/min. Jika Anda ingin menahan kecepatan, ulangi saja kecepatan sebelumnya dengan waktu yang Anda inginkan. Karena kecepatan target yang baru sama dengan kecepatan saat ini, percepatan yang dihitung akan menjadi nol dan, tidak ada perubahan kecepatan yang terjadi.

Array SpeedProfileStruct ini menghasilkan plot di atas

const SpeedProfileStruct profile = { { 0, 0}, // segera berhenti jika belum berhenti { 0, 1000}, // tahan nol selama 1 detik { -50, 0}, // lompat ke -50 { -200, 2000}, // jalan ke -200 { -200, 6000}, // tahan di -200 selama 6 detik { -50, 2000}, // turun ke -50 { 0, 0}, // // berhenti segera { 0, 1500}, // tahan nol selama 1,5 detik { 50, 0}, // lompat ke 50 { 200, 2000}, // jalan ke 200 { 200, 6000}, // tahan 200 selama 6 detik { 50, 2000}, // jalan ke 50 { 0, 0}, // // berhenti segera { 0, 1000} // tahan nol // untuk merencanakan keluaran }; const size_t PROFILE_LEN = sizeof(profil) / sizeof(SpeedProfileStruct); // menghitung ukuran array profil

Profil diatur dengan memanggil setProfile(SpeedProfileStruct* profileArray, size_t arrayLen) mis. stepper.setProfile(profil, PROFILE_LEN);

Setelah profil disetel, panggil startProfile() untuk mulai menjalankannya dari kecepatan motor saat ini (biasanya Anda akan mulai dari berhenti). Di akhir profil, motor akan terus berjalan pada kecepatan target terakhir. Metode isProfileRunning() dapat dipanggil untuk melihat apakah profil masih berjalan. Jika Anda ingin menghentikan profil lebih awal, Anda dapat memanggil stopProfile() yang akan mengabaikan profil dan menghentikan motor.

Langkah 4: Menjalankan Contoh SpeedStepperSetup Tanpa Motor

Contoh sketsa dirancang sebagai dasar untuk aplikasi motor stepper Anda sendiri. Ini menyediakan antarmuka yang digerakkan menu yang memungkinkan Anda pindah ke motor ke posisi asalnya, jika belum ada dan kemudian secara opsional mengatur ulang batas plus dan minus dan kemudian menjalankan motor dalam kisaran itu. Menu 'lari' memungkinkan Anda untuk menambah dan mengurangi kecepatan, membekukan kecepatan saat ini, berhenti dan juga kembali ke rumah.

Sketsa ini mengilustrasikan sejumlah fitur perangkat lunak yang menjaga loop() tetap responsif sehingga Anda dapat menambahkan input sensor Anda sendiri untuk mengontrol stepper. Dibutuhkan upaya untuk menghindari penundaan yang akan mengganggu kontrol kecepatan. (Lihat Penundaan Itu Jahat)

Instal pustaka yang digunakan untuk menjalankan SpeedStepperPlot, di atas, lalu instal juga pustaka pfodParser. Pustaka pfodParser memasok kelas NonBlockingInput dan pfodBufferedStream yang digunakan untuk menangani input pengguna dan output menu dengan memblokir loop() agar tidak berjalan.

Buka Contoh → SpeedStepper → contoh speedSpeedSetup. Sketsa ini dikonfigurasi untuk bekerja dengan Serial, mis. UNO dan Mega dll. Untuk menjalankan SparkFun Redboard Turbo lihat di bawah.

Tidak diperlukan papan driver atau motor stepper untuk menjalankan contoh ini. Contoh-contoh ini menggunakan D6 dan D7 sebagai output. Anda dapat mengubah pin output ke output digital apa pun dengan mengubah pengaturan STEP_PIN dan DIR_PIN di dekat bagian atas sketsa. Upload sketch ke board lalu buka Tools → Serial Monitor di 115200 untuk melihat menu SETUP.

SETUP pos:0 sp:0.00 +Lim:500000 -Lim:-500 LATENCY: stepper:492uS loop:0uS p -- set Home l -- set limit h -- goHome r -- run >

Saat sketsa berjalan, posisi stepper saat ini diambil sebagai posisi 'home' (0). Jika Anda perlu memposisikan ulang stepper ke posisi 'home' yang sebenarnya, masukkan perintah p untuk menampilkan menu SET HOME

SET HOME pos:0 sp:0.00 +Lim:1073741808 -Lim:-1073741808 LATENCY: stepper:752uS loop:3852uS x -- setHome di sini dan keluar + -- Maju - -- Mundur s -- tukar Maju/Mundur -- hardStop >

Seperti yang Anda lihat, batasan yang dikodekan dalam sketsa telah dihapus sehingga Anda dapat memposisikan ulang stepper di mana saja. Anda harus berhati-hati agar tidak melewati batas fisik atau Anda dapat merusak sesuatu.

Gunakan + cmd untuk mulai menggerakkan stepper ke depan, jika Anda menemukannya bergerak ke arah yang salah masukkan non-command atau hanya baris kosong untuk menghentikannya dan kemudian gunakan scommand untuk menukar arah Forward. Anda harus memperbarui sketsa untuk menyertakan panggilan ke invertDirectionLogic() dalam penyiapan untuk memperbaikinya untuk proses berikutnya.

Gunakan + / - cmds untuk memposisikan stepper ke posisi nol yang benar. Motor mulai lambat dan kemudian menambah kecepatan saat berjalan, cukup gunakan dan kosongkan saluran untuk menghentikannya. Kecepatan maksimum untuk ini dan menu batas diatur oleh MAX_SETUP_SPEED di bagian atas setupMenus.cpp.

Setelah motor diposisikan pada posisi 'rumah', gunakan x cmd untuk mengatur ulang posisi saat ini sebagai 0 dan kembali ke menu SETUP.

Jika Anda perlu mengatur batas, biasanya hanya pada pengaturan awal, gunakan l cmd untuk masuk ke menu SET BATAS

SET BATAS pos:0 sp:0,00 +Lim:1073741808 -Lim:-1073741808 LATENCY: stepper:944uS loop:5796uS l -- setLimit here + -- Forward - -- Reverse h -- goHome x -- exit -- hardStop >

Gunakan + cmd untuk lebih maju ke batas plus dan kemudian gunakan l cmd untuk mengaturnya sebagai batas plus. Perintah h kemudian dapat digunakan untuk kembali ke 0 dan – cmd digunakan untuk bergerak jika mengacu pada posisi motor pada batas minus. Sekali lagi gunakan l cmd untuk mengatur batas minus. Catat posisi batas plus dan minus dan perbarui pernyataan setPlusLimit dan setMinusLimit metode setup() dengan nilai-nilai ini.

Ketika batas diatur gunakan x cmd untuk kembali ke menu SETUP dan kemudian Anda dapat menggunakan r cmd untuk membuka menu RUN

RUN MENU pos:0 sp:3.31 +Lim:500000 -Lim:-500 LATENCY: stepper:944uS loop:5796uS + -- Mempercepat - -- Mempercepat h -- goHome. -- hardStop -- freeze Kecepatan >+ pos:4 sp:9.49 +Lim:500000 -Lim:-500 LATENCY: stepper:792uS loop:5664uS pos:42 sp:29.15 +Lim:500000 -Lim:-500 LATENCY: stepper:792uS loop:5664uS pos:120 sp:49.09 +Lim:500000 -Lim:-500 LATENCY: stepper:792uS loop:5664uS pos:238 sp:69.06 +Lim:500000 -Lim:-500 LATENCY: stepper:792uS loop: 5664uS

+ cmd mulai berakselerasi ke arah depan dan mencetak posisi dan kecepatan setiap 2 detik. Ketika motor mencapai kecepatan yang Anda inginkan, Anda dapat menghentikan akselerasi dengan tombol lain (atau input kosong). Anda dapat mengurangi kecepatan menggunakan – cmd ke bawah untuk berhenti. Jika berhenti - cmd akan berakselerasi secara terbalik.

Menu RUN ini menyediakan kontrol manual untuk proyek Anda. Untuk kontrol otomatis, Anda perlu menambahkan beberapa sensor lain.

Langkah 5: Latensi

Kontrol motor stepper tergantung pada perangkat lunak yang memerintahkan setiap langkah. Untuk mempertahankan kecepatan yang disetel, sketsa Anda perlu memanggil metode stepper.run() cukup sering untuk menjalankan langkah berikutnya pada waktu yang tepat untuk kecepatan saat ini. Untuk kontrol melalui sensor, Anda harus dapat segera memproses pengukuran baru. Cetakan posisi/kecepatan mencakup dua pengukuran LATENCY untuk memungkinkan Anda memeriksa sketsa Anda dengan cukup cepat.

Latensi Stepper (pfodBufferedStream)

Latensi stepper mengukur penundaan maksimum antara panggilan berturut-turut ke metode stepper.run(). Untuk menjalankan motor stepper pada 1000 langkah per detik, latensi stepper harus kurang dari 1000uS (1mS). Versi pertama sketsa ini memiliki latensi beberapa milidetik. Untuk mengatasi panggilan ekstra ini ke metode runStepper() (yang memanggil stepper.run()) di mana ditambahkan melalui kode. Ini tidak sepenuhnya menyelesaikan masalah karena menu dan pernyataan cetak keluaran memblokir sketsa setelah buffer Serial Tx kecil penuh. Untuk menghindari pemblokiran ini, pfodBufferedStream dari pustaka pfodParser digunakan untuk menambahkan buffer cetak keluaran 360 byte yang dapat ditulisi pernyataan cetak dengan cepat. Kemudian pfodBufferedStream melepaskan byte pada baud rate yang ditentukan 115200 dalam kasus ini. pfodBufferedStream memiliki opsi untuk memblokir ketika buffer penuh atau hanya membuang karakter overflow. Di sini diatur untuk menjatuhkan karakter tambahan apa pun saat buffer penuh sehingga sketsa tidak diblokir menunggu Serial mengirim karakter.

Latensi Loop (Input NonBlocking)

Latensi loop mengukur penundaan maksimum antara panggilan berturut-turut ke metode loop(). Ini mengatur seberapa cepat Anda dapat memproses pengukuran sensor baru dan menyesuaikan kecepatan set motor. Seberapa cepat kemudian perlu tergantung pada apa yang Anda coba kendalikan.

Penundaan karena pernyataan cetak telah dihapus dengan menggunakan pfodBufferedStream di atas, tetapi untuk memproses input pengguna, Anda harus mengambil karakter pertama dari input dan mengabaikan baris lainnya. Kelas NonBlockingInput di pustaka pfodParer digunakan untuk mengembalikan karakter bukan nol ketika ada input, menggunakan readInput(), dan untuk menghapus dan membuang karakter berikut, menggunakan clearInput(), hingga tidak ada karakter yang diterima selama 10mS tanpa memblokir loop ()

Tentu saja latensi loop akan ditingkatkan dengan kode tambahan yang Anda tambahkan untuk membaca sensor dan menghitung kecepatan yang baru disetel. Banyak perpustakaan sensor mengambil potongan hanya menggunakan delay(..) antara memulai pengukuran dan mengambil hasilnya. Anda perlu menulis ulang pustaka ini untuk menggunakan milisDelay sebagai gantinya, untuk mengambil pengukuran setelah penundaan non-pemblokiran yang sesuai.

Langkah 6: Menjalankan SpeedStepperSetup Dengan Motor Stepper dan SparkFun Redboard Turbo

Menjalankan SpeedStepperSetup Dengan Motor Stepper dan SparkFun Redboard Turbo
Menjalankan SpeedStepperSetup Dengan Motor Stepper dan SparkFun Redboard Turbo
Menjalankan SpeedStepperSetup Dengan Motor Stepper dan SparkFun Redboard Turbo
Menjalankan SpeedStepperSetup Dengan Motor Stepper dan SparkFun Redboard Turbo

Untuk menjalankan sketsa SpeedStepperSetup secara nyata, Anda memerlukan motor stepper, driver, dan catu daya dan dalam contoh ini SparkFun Redboard Turbo.

Diagram pengkabelan di atas (versi pdf) menunjukkan koneksi. Dalam sketsa SpeedStepperSetup, ubah definisi SERIAL menjadi #define SERIAL Serial1

Motor Stepper, Catu Daya, Pengemudi dan Perlindungan

Ada banyak jenis dan ukuran motor stepper. Di sini motor stepper dua kumparan 12V 350mA digunakan untuk pengujian. Untuk memberi daya pada stepper ini, Anda memerlukan catu daya 12V atau lebih dan lebih besar dari 350mA.

Library ini hanya menyediakan output arah dan langkah sehingga Anda memerlukan driver untuk berinteraksi dengan motor stepper. Easy Driver dan Big Easy Driver mengontrol arus ke kumparan motor sehingga Anda dapat menggunakan catu daya bertegangan lebih tinggi dengan aman, misalnya menggunakan catu 6V untuk motor 3.3V. Easy Driver dapat mensuplai antara 150mA/coil dan 700mA/coil. Untuk arus yang lebih tinggi, Big Easy Driver dapat memasok hingga 2A per koil. Baca FAQ di bagian bawah halaman Easy Drive.

Contoh-contoh ini menggunakan D6 dan D7 sebagai output Langkah dan Arah. Anda dapat mengubah pin output ke output digital apa pun dengan mengubah pengaturan STEP_PIN dan DIR_PIN di dekat bagian atas sketsa.

Memprogram Sparkfun Redboard Turbo

Pemrograman Redboard Turbo bermasalah. Jika gagal memprogram, pertama tekan tombol reset sekali dan pilih kembali port COM di menu Alat Arduino dan coba lagi. Jika itu tidak berhasil, tekan dua kali tombol tekan reset dan coba lagi.

Menghubungkan Easy Driver

Dua motor stepper koil memiliki 4 kabel. Gunakan multimeter untuk menemukan pasangan yang terhubung ke setiap koil dan kemudian hubungkan satu koil ke terminal Easy Driver A dan koil lainnya ke terminal B. Tidak masalah ke arah mana Anda menghubungkannya karena Anda dapat menggunakan s cmd di menu pengaturan untuk menukar arah gerakan.

Catu daya motor disambungkan ke M+ dan GNDSet level logika papan dengan tautan 3/5V. Pendek tautan bersama-sama untuk output mikroprosesor 3.3V, seperti SparkFun Redboard Turbo (jika Anda membiarkannya terbuka, ini cocok untuk sinyal digital 5V, misalnya UNO, Mega)Hubungkan pin GND, STEP, DIR ke mikroprosesor GND dan langkah dan pin output dir. Tidak ada koneksi lain yang diperlukan untuk menggerakkan motor.

Kabel Serial USB ke TTL

Saat memindahkan sketsa SpeedStepperSetup dari Uno/Mega ke Redboard Turbo, Anda mungkin secara naif hanya mengganti #define SERIAL Serial dengan #define SERIAL SerialUSB agar sesuai dengan koneksi serial usb Redboard Turbo, namun Anda akan menemukan bahwa latensi stepper yang dihasilkan adalah sekitar 10mS. Itu 10x lebih lambat dari UNO. Ini karena bagaimana cpu Redboard menangani koneksi USB. Untuk mengatasinya, sambungkan Kabel Serial USB ke TTL ke D0/D1 dan atur#define SERIAL Serial1untuk menggunakan koneksi serial perangkat keras untuk mengontrol motor stepper. Menggunakan Serial1 memberikan LATENCY: stepper:345uS loop:2016uS yang 3 kali lebih cepat daripada UNO untuk latensi stepper dan loop

Program Terminal

Arduino Serial Monitor sedikit lebih sulit digunakan untuk mengontrol motor stepper karena Anda harus memasukkan karakter di baris cmd dan kemudian tekan Enter untuk mengirimnya. Cara yang lebih cepat dan lebih responsif adalah dengan membuka jendela terminal, TeraTerm untuk PC (atau CoolTerm Mac), yang terhubung ke port COM kabel USB ke TTL. Kemudian di jendela itu menekan tombol cmd mengirimkannya segera. Menekan Enter hanya mengirim baris kosong.

Mengatur rentang kecepatan motor

Seperti kabel di atas, Easy Drive dikonfigurasikan untuk langkah 1/8, jadi 1000 langkah/detik akan memutar motor pada 1000/8/200 langkah/putaran = 0,625 putaran per detik atau maksimum 37,5 rpm. Dengan mengubah input ke MS1/MS2, Anda dapat beralih antara 1/8,,, dan langkah penuh. Untuk langkah lengkap, hubungkan MS1 dan MS2 ke GND. Ini akan memungkinkan kecepatan hingga 300 rpm. Memilih pengaturan MS1/MS2 yang sesuai memungkinkan Anda menyesuaikan rasio roda gigi yang terpasang antara motor dan bagian yang digerakkan.

Perlindungan Perangkat Keras

Sementara perpustakaan SpeedStepper memungkinkan Anda untuk mengatur batas posisi pada gerakan motor, pemakukan posisi dilakukan dengan menghitung langkah-langkah yang dikeluarkan oleh perangkat lunak. Jika motor mati, yaitu torsi tidak cukup untuk menggerakkan motor ke langkah berikutnya, maka posisi perangkat lunak akan tidak sinkron dengan posisi motor. Kemudian ketika Anda menggunakan perintah 'goHome' motor akan melampaui posisi home. Untuk mencegah kerusakan pada perangkat keras, Anda harus memasang sakelar batas pada batas keras untuk memutuskan catu daya motor

Mengatur batas arus motor

Pertama, atur ke pengaturan potensiometer terendah. yaitu tegangan pada TP1 minimum. Potensiometer sangat halus, jadi jangan paksa potensiometer melewati penghentian mekanis. Atur motor mengemudi pada kecepatan stabil lambat menjadi lambat, lalu putar potensiometer perlahan hingga motor tidak melompat atau menyentak di antara langkah.

Kesimpulan

Proyek ini menunjukkan cara menggunakan perpustakaan SpeedStepper dalam aplikasi praktis. Sementara perpustakaan AccelStepper menyediakan kontrol posisi yang baik, kontrol kecepatan diperlukan untuk Prototipe Ice-Melting Probe untuk Mengumpulkan Sampel Biologis di Europa sehingga perpustakaan AccelStepper ditulis ulang untuk memberikan kontrol kecepatan dengan batas akhir dan fungsi goHome.

Direkomendasikan: