Isi kandungan:

Menu Kawalan Kelajuan Stepper Dipacu untuk Arduino: 6 Langkah
Menu Kawalan Kelajuan Stepper Dipacu untuk Arduino: 6 Langkah

Video: Menu Kawalan Kelajuan Stepper Dipacu untuk Arduino: 6 Langkah

Video: Menu Kawalan Kelajuan Stepper Dipacu untuk Arduino: 6 Langkah
Video: ESP8STP-02 Степпер с ESP8266 D1 Mini NodeMCU через WiFi под любым углом 2024, Julai
Anonim
Menu Kawalan Kelajuan Stepper Dipacu untuk Arduino
Menu Kawalan Kelajuan Stepper Dipacu untuk Arduino
Menu Kawalan Kelajuan Stepper Dipacu untuk Arduino
Menu Kawalan Kelajuan Stepper Dipacu untuk Arduino
Menu Kawalan Kelajuan Stepper Dipacu untuk Arduino
Menu Kawalan Kelajuan Stepper Dipacu untuk Arduino

Perpustakaan SpeedStepper ini adalah penulisan semula perpustakaan AccelStepper untuk membolehkan kawalan kelajuan motor stepper. Perpustakaan SpeedStepper memungkinkan anda mengubah kelajuan motor yang ditetapkan dan kemudian mempercepat / melambat ke kecepatan set baru menggunakan algoritma yang sama dengan perpustakaan AccelStepper. Perpustakaan SpeedStepper juga membolehkan anda menetapkan had tambah dan tolak dan kedudukan 'rumah'. Terdapat arahan goHome untuk kembali ke kedudukan rumah.

Batasan: Perpustakaan SpeedStepper hanya mendorong output arah dan langkah dan oleh itu perlu disambungkan ke pemandu motor, seperti Easy Driver, untuk benar-benar menggerakkan motor stepper. Perpustakaan AccelStepper menyediakan lebih banyak pilihan pemanduan yang dapat disalin ke perpustakaan ini jika diperlukan.

Tiga contoh lakaran disediakan, masing-masing boleh dijalankan tanpa pemandu atau pemandu motor. sketsa speedStepperPlot mengeluarkan contoh perintah kelajuan dan arahan goHome dan menghasilkan plot kelajuan dan kedudukan yang dihasilkan. Sketsa speedStepperSetup menyediakan penyediaan berdasarkan menu untuk menetapkan kediaman dan had motor dan kemudian jalankan motor dan sesuaikan kelajuan naik dan turun dan pergi ke Rumah hingga selesai. Sketsa speedStepperProfile menunjukkan contoh penyediaan dan pelaksanaan profil kelajuan.

Walaupun perpustakaan AccelStepper menyediakan kawalan posisi yang baik, kontrol kecepatan diperlukan untuk Prototaip Ice-Melting Probe untuk Mengumpulkan Sampel Biologi di Europa. Berikut adalah video prototaip versi sebelumnya, yang menggunakan berat bukan motor. Semakan 1.1 menambah profil kelajuan setelah pengguna meminta kaedah untuk mengawal profil kelajuan pam.

Perpustakaan ini berjalan di Arduino Uno dan Mega2560, tetapi untuk prototaip digunakan memori yang lebih besar / pemproses lebih cepat SparkFun Redboard Turbo.

Instruksional ini juga boleh didapati dalam talian di Perpustakaan Kawalan Kelajuan Stepper untuk Arduino

Bekalan

Untuk menjalankan lakaran contoh, hanya Arduino UNO atau Mega2560 dan perpustakaan perisian diperlukan

Untuk ujian bangku perpustakaan, SparkFun Redboard Turbo digunakan dengan Pemacu Mudah, motor 200 langkah / rev, motor stepper 12V 350mA dan bekalan 12A 2A atau lebih besar, mis. https://www.sparkfun.com/products/14934. Kabel USB A ke Mikro USB ke TTL Serial CableArduino IDE V1.8.9 dan komputer untuk menjalankannya. SpeedStepper librarypfodParser library for the nonBlockingInput dan pfodBufferedStream class millisPerpustakaan lambat untuk kelewatan tidak menyekat

Langkah 1: Fungsi Perpustakaan

Perpustakaan SpeedStepper menjalankan motor stepper yang dibatasi oleh batas yang ditetapkan oleh perpustakaan. Lihat fail SpeedStepper.h untuk pelbagai kaedah perpustakaan yang ada. Berikut adalah garis besar logik di belakang mereka.

Kedudukan stepper dikesan dengan mengira bilangan langkah (denyutan). Perpustakaan menghadkan kedudukan berada di antara kedudukan setPlusLimit (int32_t) dan setMinusLimit (int32_t). Had tambah selalu> = 0 dan had tolak selalu <= 0. Semasa memulakan kedudukan motor adalah 0 (rumah) dan had ditetapkan ke angka +/- yang sangat besar (kira-kira +/- 1e9 langkah). setAcceleration (float) menetapkan seberapa pantas motor akan mengubah kelajuan sama ada naik atau turun. Apabila motor menghampiri had tambah atau tolak, ia akan menurun pada kadar ini sehingga berhenti pada had. Semasa memulakan, pecutan ditetapkan ke 1.0 langkah / saat / saat. Tetapan pecutan selalu nombor + ve. Tanda tetapan setSpeed (float) menetapkan arah motor akan bergerak.

setSpeed (float) menetapkan kelajuan untuk mempercepat / melambatkan motor ke, dari kelajuan semasa. Kelajuan yang dapat ditetapkan melalui setSpeed (float) adalah terhad, dalam nilai mutlak, mengikut tetapan, setMaxSpeed (float), 1000 langkah / saat lalai dan setMinSpeed (float), 0,003 langkah / saat lalai. Lalai ini juga had had berkod keras mutlak yang akan diterima oleh perpustakaan untuk setMaxSpeed () dan setMinSpeed (). Sekiranya anda ingin menetapkan kelajuan maksimum> 1000 langkah / saat, anda perlu mengedit baris pertama dalam fail SpeedStepper.cpp untuk mengubah maxMaxSpeed (1000) ke kelajuan maksimum yang anda mahukan. Dalam praktiknya kelajuan maksimum juga dibatasi oleh masa antara panggilan ke kaedah run () perpustakaan. Selama 1000 langkah / saat, kaedah larian () mesti dipanggil sekurang-kurangnya setiap 1mS. Lihat bahagian Latensi di bawah.

Mencuba menetapkan kelajuan kurang daripada kelajuan min akan menyebabkan motor berhenti. Setiap setter ini memiliki getter yang sesuai, lihat file SpeedStepper.h. Untuk kepantasan, getSetSpeed () mengembalikan kelajuan yang anda tetapkan melalui setSpeed (), sementara getSpeed () mengembalikan kelajuan motor semasa yang berbeza-beza ketika mempercepat / melambat kepada anda yang menetapkan kelajuan. Sekiranya motor tidak bergerak ke arah yang anda fikirkan + ve anda boleh memanggil invertDirectionLogic () untuk menukar arah motor bergerak untuk + ve kelajuan.

getCurrentPosition () mengembalikan kedudukan motor semasa berbanding 'home' (0). Anda boleh mengatasi setCurrentPosition kedudukan motor semasa (int32_t). Kedudukan baru terhad dalam had tambah / tolak yang ditetapkan.

Pada mulanya motor dihentikan pada kedudukan 0. Memanggil setSpeed (50.0) akan menyebabkannya mula memecut pada arah + ve hingga kelajuan maksimum 50 langkah / min. Memanggil hardStop () akan segera menghentikan motor di mana ia berada. Sebaliknya memanggil kaedah berhenti () akan menetapkan kelajuan ke sifar dan mempercepat motor berhenti. Memanggil stopAndSetHome () akan menghentikan motor dengan segera dan menetapkan kedudukannya ke 0. Nilai had tambah / tolak tidak berubah tetapi sekarang dirujuk ke kedudukan 0 (rumah) baru ini. Memanggil goHome () akan mengembalikan stepper ke kedudukan 0 (rumah) ini dan berhenti. Memanggil setSpeed () akan membatalkan pulang.

Perpustakaan SpeedStepper juga menyediakan kawalan profil kelajuan melalui kaedah setProfile (SpeedProfileStruct * profileArray, size_t arrayLen), startProfile (), stopProfile (), untuk mengganggu profil yang sedang berjalan, dan isProfileRunning (). Lihat lakaran contoh speedStepperProfile.

Langkah 2: Menjalankan Contoh SpeedStepperPlot Tanpa Motor

Menjalankan Contoh SpeedStepperPlot Tanpa Motor
Menjalankan Contoh SpeedStepperPlot Tanpa Motor

Pasang Arduino IDE V1.8.9Muat turun dan pasang perpustakaan SpeedStepper Simpan SpeedStepper.zip dan kemudian gunakan item menu Arduino IDE Sketsa → Sertakan Perpustakaan → Tambahkan perpustakaan. ZIP untuk mengimport perpustakaan Muat turun dan pasang perpustakaan millisDelay juga

Buka Contoh → lakaran contoh SpeedStepper → speedStepperPlot (Mulakan semula IDE jika perlu). Lakaran ini dikonfigurasi untuk berfungsi dengan Serial, mis. UNO dan Mega dll Untuk berjalan di SparkFun Redboard Turbo lihat di bawah.

Tidak ada papan pemacu atau motor stepper yang perlu menjalankan contoh ini. Contoh-contoh ini menggunakan D6 dan D7 sebagai output. Anda boleh menukar pin output ke output digital dengan menukar tetapan STEP_PIN dan DIR_PIN berhampiran bahagian atas lakaran.

Muat naik lakaran ke papan dan kemudian buka Alat → Serial Plotter pada 115200 baud untuk menunjukkan plot kelajuan (MERAH) dan kedudukan (BIRU) Had tambah ditetapkan ke 360 yang menyebabkan kelajuan meningkat menjadi sifar dari sekitar 100 titik pada paksi-x. Had tolak ialah -510. Posisi berhenti pada ~ -390 kerana kelajuan telah dituntut hingga 0,0. Pada titik 380 pada paksi-x, cmd goHome dikeluarkan yang mengembalikan stepper ke kedudukan sifar.

Sketsa speedStepperPlot ini menggunakan millisDelays ke masa beralih antara pelbagai kelajuan dan pecutan. Dalam banyak kes, menggunakan SpeedStepperProfile, seperti contoh seterusnya, lebih mudah.

Langkah 3: Menjalankan Contoh SpeedStepperProfile Tanpa Motor

Menjalankan Contoh SpeedStepperProfile Tanpa Motor
Menjalankan Contoh SpeedStepperProfile Tanpa Motor

Buka contoh → lakaran contoh SpeedStepper → speedStepperPlot, lakaran ini menghasilkan plot di atas menggunakan Arduino Serial Plotter dan merupakan contoh menjalankan profil kelajuan yang ditetapkan misalnya jika menjalankan pam.

Stepper Speed Profiles terdiri dari array SpeedProfileStruct, yang ditentukan dalam file SpeedStepper.h.

struktur SpeedProfileStruct {

kelajuan apungan; // kelajuan sasaran pada akhir langkah ini deltaTms panjang yang tidak ditandatangani; // masa untuk mempercepat dari kelajuan semasa (pada permulaan langkah ini) ke kelajuan sasaran};

Tentukan susunan SpeedProfileStruct yang mengandungi kelajuan sasaran untuk setiap langkah dan waktu, deltaTms, dalam mS, untuk mencapai kelajuan sasaran dari kelajuan sasaran sebelumnya. Sekiranya deltaTms adalah sifar atau sangat kecil, maka kelajuan akan langsung melonjak ke kelajuan sasaran yang baru. Jika tidak, pecutan yang diperlukan akan dikira setAcceleration () akan dipanggil diikuti dengan panggilan ke setSpeed () untuk kelajuan sasaran baru. Dalam semua kes, profil akan dibatasi oleh had kedudukan tambah dan tolak yang ada dan tetapan kelajuan maksimum / min. Sekiranya anda mahu menahan kelajuan, ulangi kelajuan sebelumnya dengan masa yang anda inginkan. Oleh kerana kelajuan sasaran yang baru sama dengan kelajuan semasa, pecutan yang dihitung akan menjadi sifar dan, tidak ada perubahan yang terjadi adalah kecepatan.

Susunan SpeedProfileStruct ini menghasilkan plot di atas

const SpeedProfileStruct profile = {{0, 0}, // berhenti segera jika belum berhenti {0, 1000}, // tahan sifar selama 1sec {-50, 0}, // lompat ke -50 {-200, 2000}, // jalan ke -200 {-200, 6000}, // tahan pada -200 untuk 6sec {-50, 2000}, // jalan ke -50 {0, 0}, // // berhenti segera {0, 1500}, // tahan sifar selama 1.5 saat {50, 0}, // lompat ke 50 {200, 2000}, // jalan ke 200 {200, 6000}, // tahan 200 selama 6 saat {50, 2000}, // jalan ke 50 {0, 0}, // // berhenti segera {0, 1000} // tahan sifar // untuk merancang output}; const size_t PROFILE_LEN = sizeof (profil) / sizeof (SpeedProfileStruct); // hitung ukuran susunan profil

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

Setelah profil ditetapkan, panggil startProfile () untuk mula menjalankannya dari kelajuan motor semasa (biasanya anda akan mula berhenti). Pada akhir profil, motor akan terus berjalan pada kelajuan sasaran terakhir. Kaedah isProfileRunning () boleh dipanggil untuk melihat apakah profil masih berjalan. Sekiranya anda ingin menghentikan profil lebih awal, anda boleh memanggil stopProfile () yang akan meninggalkan profil dan menghentikan motor.

Langkah 4: Menjalankan Contoh SpeedStepperSetup Tanpa Motor

Lakaran contoh direka bentuk untuk aplikasi motor stepper anda sendiri. Ia menyediakan antara muka yang didorong oleh menu yang membolehkan anda beralih ke motor ke kedudukan asalnya, jika belum ada dan kemudian menetapkan semula had tambah dan tolak secara pilihan dan kemudian jalankan motor dalam jarak tersebut. Menu 'run' membolehkan anda meningkatkan dan menurunkan kelajuan, membeku pada kelajuan semasa, berhenti dan juga kembali ke rumah.

Sketsa ini menggambarkan sejumlah ciri perisian yang menjaga gelung () responsif sehingga anda dapat menambahkan input sensor anda sendiri untuk mengawal stepper. Perlu bersusah payah untuk mengelakkan kelewatan yang mengganggu kawalan kelajuan. (Lihat Kelewatan itu Jahat)

Pasang pustaka yang digunakan untuk menjalankan SpeedStepperPlot di atas, dan kemudian juga pasang pustaka pfodParser. Perpustakaan pfodParser membekalkan kelas NonBlockingInput dan pfodBufferedStream yang digunakan untuk menangani input pengguna dan output menu dengan menyekat gelung () daripada berjalan.

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

Tidak ada papan pemacu atau motor stepper yang perlu menjalankan contoh ini. Contoh-contoh ini menggunakan D6 dan D7 sebagai output. Anda boleh menukar pin output ke output digital dengan menukar tetapan STEP_PIN dan DIR_PIN berhampiran bahagian atas lakaran. Muat naik lakaran ke papan dan kemudian 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 had h - goHome r - jalankan>

Semasa lakaran berjalan, kedudukan stepper semasa diambil sebagai kedudukan 'home' (0). Sekiranya anda perlu meletakkan semula stepper ke posisi 'home' yang sebenarnya, masukkan perintah p untuk memaparkan menu SET HOME

SET RUMAH pos: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 752uS loop: 3852uS x - setHome here and exit + - Forward - - Reverse s - swap Forward / Reverse - hardStop >

Seperti yang anda lihat had yang dikodkan dalam lakaran telah dihapus sehingga anda dapat meletakkan semula stepper di mana sahaja. Anda perlu berhati-hati agar tidak melepasi had fizikal atau anda mungkin melanggar sesuatu.

Gunakan + cmd untuk mula menggerakkan stepper ke depan, jika anda merasa bergerak ke arah yang salah masukkan bukan perintah atau hanya baris kosong untuk menghentikannya dan kemudian gunakan perintah untuk menukar arah Maju. Anda harus mengemas kini lakaran untuk memasukkan panggilan ke invertDirectionLogic () dalam persediaan untuk memperbaikinya untuk jangka masa seterusnya.

Gunakan + / - cmds untuk meletakkan stepper ke kedudukan sifar yang betul. Motor mula perlahan dan kemudian meningkatkan kelajuan ketika bergerak, gunakan dan kosongkan garisan untuk menghentikannya. Kelajuan maksimum untuk ini dan menu had ditetapkan oleh MAX_SETUP_SPEED di bahagian atas setupMenus.cpp.

Setelah motor diletakkan pada kedudukan 'rumah', gunakan x cmd untuk menetapkan semula kedudukan semasa sebagai 0 dan kembali ke menu SETUP.

Sekiranya anda perlu menetapkan had, biasanya hanya pada pengaturan awal, gunakan l cmd untuk memasuki menu SET LIMITS

SET LIMITS 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 had tambah dan kemudian gunakan l cmd untuk menetapkannya sebagai had tambah. Perintah h kemudian dapat digunakan untuk kembali ke 0 dan - cmd digunakan untuk bergerak jika kembali ke posisi motor pada had minus. Sekali lagi gunakan l cmd untuk menetapkan had tolak. Perhatikan kedudukan had tambah dan tolak dan kemas kini penyataan setPlusLimit dan setMinusLimit kaedah setup () dengan nilai-nilai ini.

Apabila had ditetapkan, gunakan x cmd untuk kembali ke menu SETUP dan kemudian anda boleh menggunakan r cmd untuk membuka menu RUN

RUN MENU pos: 0 sp: 3.31 + Lim: 500000 -Lim: -500 LATENCY: stepper: 944uS loop: 5796uS + - Speed up - - Speed down h - goHome. - hardStop - beku Kelajuan> + 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: Gelung 792uS: Pos 5664uS: 120 sp: 49.09 + Lim: 500000 -Lim: -500 LATENCY: stepper: gelung 792uS: 5664uS pos: 238 sp: 69.06 + Lim: 500000 -Lim: -500 LATENCY: stepper: loop loop 792uS: 5664uS

+ Cmd mula memecut ke arah depan dan mencetak kedudukan dan kelajuan setiap 2 saat. Apabila motor mencapai kelajuan yang anda mahukan, anda boleh menghentikan pecutan dengan kunci lain (atau input kosong). Anda boleh mengurangkan kelajuan menggunakan - cmd ke bawah untuk berhenti. Sekiranya dihentikan, - cmd akan memecut secara terbalik.

Menu RUN ini menyediakan kawalan manual projek anda. Untuk kawalan automatik, anda perlu menambahkan beberapa sensor lain.

Langkah 5: Latensi

Kawalan motor stepper bergantung pada perisian yang memerintahkan setiap langkah. Untuk mengekalkan kelajuan yang ditetapkan, lakaran anda perlu memanggil kaedah stepper.run () cukup kerap untuk mengaktifkan langkah seterusnya pada waktu yang tepat untuk kelajuan semasa. Untuk kawalan melalui sensor, anda perlu dapat memproses pengukuran baru dengan segera. Cetakan kedudukan / kelajuan merangkumi dua ukuran KEMATIAN untuk membolehkan anda memeriksa lakaran anda cukup pantas.

Latensi Stepper (pfodBufferedStream)

Latensi stepper mengukur kelewatan maksimum antara panggilan berturut-turut ke kaedah stepper.run (). Untuk menjalankan motor stepper pada 1000 langkah per saat, latensi stepper mestilah kurang daripada 1000uS (1mS). Versi pertama lakaran ini mempunyai kependaman banyak milisaat. Untuk mengatasi panggilan tambahan ini ke kaedah runStepper () (yang memanggil stepper.run ()) di mana ditambahkan melalui kod. Ini tidak menyelesaikan sepenuhnya masalah kerana pernyataan cetakan menu dan output menyekat lakaran setelah penyangga Serial Tx kecil penuh. Untuk mengelakkan halangan ini, pfodBufferedStream dari pustaka pfodParser digunakan untuk menambahkan buffer cetak output byte 360 yang boleh ditulis oleh penyata cetak dengan cepat. Kemudian pfodBufferedStream melepaskan byte pada kadar baud yang ditentukan 115200 dalam kes ini. pfodBufferedStream harus memilih untuk menyekat sama ada penyangga penuh atau hanya menjatuhkan watak limpahan. Di sini diatur untuk menjatuhkan karakter tambahan apabila penyangga penuh sehingga lakaran tidak tersekat menunggu Serial menghantar watak.

Latensi Gelung (NonBlockingInput)

Latensi gelung mengukur kelewatan maksimum antara panggilan berturut-turut ke kaedah gelung (). Ini menetapkan seberapa cepat anda dapat memproses pengukuran sensor baru dan menyesuaikan kelajuan set motor. Seberapa pantas masa itu perlu bergantung pada apa yang anda ingin kendalikan.

Kelewatan yang disebabkan oleh pernyataan cetak dihapus dengan menggunakan pfodBufferedStream di atas, tetapi untuk memproses input pengguna, anda perlu mengambil masukan input yang pertama dan mengabaikan yang lain. Kelas NonBlockingInput di pfodParer library digunakan untuk mengembalikan char non-zero ketika ada input, menggunakan readInput (), dan untuk membersihkan dan membuang karakter berikut, menggunakan clearInput (), sehingga tidak ada chars yang diterima selama 10mS tanpa menyekat loop ()

Sudah tentu latensi gelung akan meningkat dengan kod tambahan yang anda tambahkan untuk membaca sensor dan mengira kelajuan set yang baru. Banyak perpustakaan sensor mengambil jalan hanya dengan menggunakan kelewatan (..) antara memulakan pengukuran dan mengambil hasilnya. Anda perlu menulis semula perpustakaan ini untuk menggunakan millisDelay sebagai gantinya, untuk mengambil pengukuran setelah kelewatan tanpa penyekat 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 lakaran SpeedStepperSetup dengan sebenar-benarnya, anda memerlukan motor, pemandu dan bekalan kuasa stepper dan dalam contoh ini SparkFun Redboard Turbo.

Gambar rajah pendawaian di atas (versi pdf) menunjukkan sambungannya. Dalam lakaran SpeedStepperSetup ubah SERIAL define menjadi #define SERIAL Serial1

Motor Stepper, Bekalan Kuasa, Pemandu dan Perlindungan

Terdapat banyak jenis dan saiz motor stepper. Di sini motor stepper dua koil 12V 350mA digunakan untuk ujian. Untuk mengaktifkan stepper ini, anda memerlukan bekalan kuasa 12V atau lebih dan lebih besar daripada 350mA.

Perpustakaan ini hanya memberikan arah dan output langkah sehingga anda memerlukan pemandu untuk berinteraksi dengan motor stepper. Pemandu Mudah dan Pemandu Mudah Besar mengawal arus ke gegelung motor sehingga anda dapat menggunakan bekalan kuasa voltan yang lebih tinggi dengan selamat, misalnya menggunakan bekalan 6V untuk motor 3.3V. Pemandu Mudah boleh membekalkan antara 150mA / gegelung dan 700mA / gegelung. Untuk arus yang lebih tinggi, Pemacu Besar Mudah dapat membekalkan sehingga 2A setiap gegelung. Baca Soalan Lazim di bahagian bawah halaman Drive Mudah.

Contoh-contoh ini menggunakan D6 dan D7 sebagai output Langkah dan Arah. Anda boleh menukar pin output ke output digital dengan menukar tetapan STEP_PIN dan DIR_PIN berhampiran bahagian atas lakaran.

Mengprogramkan Sparkfun Redboard Turbo

Pengaturcaraan Redboard Turbo bermasalah. Sekiranya gagal diprogram, tekan butang reset sekali sekali dan pilih semula port COM di menu Arduino Tools dan cuba lagi. Sekiranya tidak berjaya, tekan dua kali butang tekan semula dan cuba lagi.

Membuat Pemacu Mudah

Dua motor stepper coil mempunyai 4 wayar. Gunakan multimeter untuk mencari pasangan yang bersambung ke setiap gegelung dan kemudian kawat satu gegelung ke terminal Easy Driver A dan gegelung yang lain ke terminal B. Tidak kira anda berpusing ke mana kerana anda boleh menggunakan s cmd di menu persediaan untuk menukar arah pergerakan.

Bekalan kuasa motor disambungkan ke M + dan GND Tetapkan tahap logik papan dengan pautan 3 / 5V. Pendekkan pautan bersama untuk output mikropemproses 3.3V, seperti SparkFun Redboard Turbo (jika anda membiarkannya terbuka, ia sesuai untuk isyarat digital 5V, contohnya UNO, Mega) Sambungkan pin GND, STEP, DIR ke mikropemproses GND dan langkah dan pin output dir. Tiada sambungan lain yang diperlukan untuk menggerakkan motor.

Kabel Bersiri USB ke TTL

Semasa memindahkan sketsa SpeedStepperSetup dari Uno / Mega ke Redboard Turbo, anda mungkin hanya mengganti #define SERIAL Serial dengan #define SERIAL SerialUSB agar sesuai dengan sambungan siri Redboard Turbo usb, namun anda akan mendapati bahawa latency stepper yang dihasilkan adalah sekitar 10mS. Itu 10x lebih perlahan kemudian untuk UNO. Ini disebabkan bagaimana CPU Redboard mengendalikan sambungan USB. Untuk mengatasi ini, sambungkan USB ke TTL Serial Cable ke D0 / D1 dan tetapkan # define SERIAL Serial1 untuk menggunakan sambungan siri perkakasan untuk mengawal motor stepper. Menggunakan Serial1 memberikan LATENCY: stepper: 345uS loop: 2016uS yang 3 kali lebih pantas daripada UNO untuk stepper dan loop latency

Program Terminal

Arduino Serial Monitor sedikit lebih sukar digunakan untuk mengawal motor stepper kerana anda harus memasukkan char di garis cmd dan kemudian tekan Enter untuk menghantarnya. Cara yang lebih cepat dan responsif adalah dengan membuka tetingkap terminal, TeraTerm untuk PC (atau CoolTerm Mac), yang disambungkan ke port COM kabel USB ke TTL. Kemudian di tetingkap itu menekan kekunci cmd akan segera menghantarnya. Menekan Enter hanya hantar baris kosong.

Menetapkan julat kelajuan motor

Seperti yang dinyatakan di atas, Drive Mudah dikonfigurasi untuk langkah 1/8, jadi 1000 langkah / saat akan memutar motor pada langkah 1000/8/200 / revolusi = 0,625 putaran per saat atau maksimum 37,5 rpm. Dengan menukar input ke MS1 / MS2, anda boleh beralih antara 1/8, ¼, ½ dan langkah penuh. Untuk langkah penuh, sambungkan kedua-dua MS1 dan MS2 ke GND. Ini akan membolehkan kelajuan hingga 300 rpm. Memilih tetapan MS1 / MS2 yang sesuai membolehkan anda menyesuaikan nisbah gear yang terpasang antara motor dan bahagian yang digerakkan.

Perlindungan Perkakasan

Walaupun perpustakaan SpeedStepper memungkinkan anda menetapkan had posisi pada pergerakan motor, penekanan posisi dilakukan dengan menghitung langkah langkah yang dikeluarkan oleh perisian. Sekiranya motor berhenti, iaitu tork tidak mencukupi untuk menggerakkan motor pada langkah seterusnya, maka kedudukan perisian tidak selari dengan kedudukan motor. Kemudian apabila anda menggunakan arahan 'goHome', motor akan mengatasi kedudukan rumah. Untuk mengelakkan kerosakan pada perkakasan, anda harus memasang suis had pada had keras untuk memutuskan bekalan kuasa motor

Menetapkan had arus motor

Pertama, tetapkan ke tetapan potensiometer terendah. iaitu voltan pada TP1 minimum. Potensiometer lembut, jadi jangan paksa potensiometer melewati berhenti mekanikal. Tetapkan pemanduan motor pada kelajuan stabil perlahan menjadi perlahan, kemudian putar perlahan potensiometer sehingga motor tidak melangkau atau tersentak di antara langkah.

Kesimpulannya

Projek ini menunjukkan cara menggunakan perpustakaan SpeedStepper dalam aplikasi praktikal. Walaupun perpustakaan AccelStepper menyediakan kawalan posisi yang baik, kontrol kecepatan diperlukan untuk Prototaip Ice-Melting Probe untuk Mengumpulkan Sampel Biologi di Europa sehingga perpustakaan AccelStepper ditulis ulang untuk menyediakan kawalan kecepatan dengan batas akhir dan fungsi goHome.

Disyorkan: