Mundarija:

Arduino uchun qadam tezligini boshqarish menyusi: 6 qadam
Arduino uchun qadam tezligini boshqarish menyusi: 6 qadam

Video: Arduino uchun qadam tezligini boshqarish menyusi: 6 qadam

Video: Arduino uchun qadam tezligini boshqarish menyusi: 6 qadam
Video: Arduino UZ.PLC Qilib Ishlatish. SoapBox Snap 2024, Noyabr
Anonim
Bosqich tezligini boshqarish menyusi Arduino uchun mo'ljallangan
Bosqich tezligini boshqarish menyusi Arduino uchun mo'ljallangan
Arduino uchun qadam tezligini boshqarish menyusi
Arduino uchun qadam tezligini boshqarish menyusi
Arduino uchun qadam tezligini boshqarish menyusi
Arduino uchun qadam tezligini boshqarish menyusi

Bu SpeedStepper kutubxonasi qadam dvigatelining tezligini nazorat qilish uchun AccelStepper kutubxonasining qayta yozilishi. SpeedStepper kutubxonasi sizga o'rnatilgan motor tezligini o'zgartirishga imkon beradi, so'ngra AccelStepper kutubxonasi algoritmidan foydalangan holda yangi belgilangan tezlikka tezlashadi/sekinlashadi. SpeedStepper kutubxonasi sizga ortiqcha va minus chegarasini va "uy" pozitsiyasini o'rnatishga imkon beradi. Uy holatiga qaytish uchun GoHome buyrug'i mavjud.

Cheklovlar: SpeedStepper kutubxonasi faqat yo'nalish va qadam chiqishlarini boshqaradi, shuning uchun step motorini haydash uchun Easy Driver kabi motor haydovchisiga ulanish kerak. AccelStepper kutubxonasi haydash uchun ko'proq imkoniyatlarni taqdim etadi, agar kerak bo'lsa, ularni kutubxonaga ko'chirish mumkin.

Uch misolli eskizlar berilgan, ularning har birini motor yoki dvigatel haydovchisiz ishlatish mumkin. speedStepperPlot eskizlari tezlik buyruqlari va goHome buyruqlarini beradi va natijada olingan tezlik va pozitsiyani tuzadi. SpeedStepperSetup eskizi dvigatelning uyi va chegaralarini belgilash, so'ngra dvigatelni ishga tushirish va tezlikni yuqoriga va pastga sozlash va tugatish uchun GoHome -ni sozlash uchun menyuga asoslangan sozlashni ta'minlaydi. SpeedStepperProfile eskizida tezlik profilini sozlash va bajarish misoli ko'rsatilgan.

AccelStepper kutubxonasi yaxshi pozitsiyani boshqarishni ta'minlasa-da, Evropada biologik namunalarni yig'ish uchun muzni eritish prototipi uchun tezlikni nazorat qilish zarur edi. Bu erda motor o'rniga og'irlik ishlatilgan prototipning oldingi versiyasining videosi. Revision 1.1 foydalanuvchi nasosning tezlik rejimini boshqarish vositasini so'raganidan keyin tezlik rejimlarini qo'shdi.

Bu kutubxona Arduino Uno va Mega2560 -da ishlaydi, lekin prototipi uchun katta xotira / tezroq protsessor SparkFun Redboard Turbo ishlatilgan.

Bu ko'rsatma, shuningdek, Arduino uchun Stepper Speed Control Library -da ham mavjud

Ta'minotlar

Misol chizmalarini ishga tushirish uchun faqat Arduino UNO yoki Mega2560 va dasturiy kutubxonalar kerak

Kutubxonani skameykada tekshirish uchun Easy Driver, 200 pog'onali/aylanishli, 12V 350mA qadamli dvigatel va 12A doimiy 2A yoki undan kattaroq SparkFun Redboard Turbo ishlatilgan. https://www.sparkfun.com/products/14934. USB A to Micro kabel USB TTL Serial CableArduino IDE V1.8.9 va uni ishga tushirish uchun kompyuter. SpedStepper kutubxonasi pfodParser kutubxonasi nonBlockingInput va pfodBufferedStream sinflari millisDelay kutubxonasi blokirovka qilinmaydigan kechikishlar uchun.

1 -qadam: Kutubxona funktsiyalari

SpeedStepper kutubxonasi kutubxona tomonidan belgilangan chegaralar bilan cheklangan step motorini boshqaradi. Har xil kutubxona usullari uchun SpeedStepper.h faylini ko'ring. Mana, ularning ortida turgan mantiqning tasnifi.

Bosqichning holati qadamlarning (pulslarning) sonini hisoblash orqali kuzatiladi. Kutubxona o'rnini setPlusLimit (int32_t) va setMinusLimit (int32_t) pozitsiyalari o'rtasida cheklaydi. Plyus chegarasi har doim> = 0 va minus chegarasi har doim <= 0 bo'ladi. Ishga tushganda, vosita holati 0 (uy) va chegaralar juda katta +/- sonlarga o'rnatiladi (taxminan +/- 1e9 qadam). setAcceleration (float) dvigatel tezligini yuqoriga yoki pastga qanchalik tez o'zgartirishini belgilaydi. Dvigatel ortiqcha yoki minus chegarasiga yaqinlashganda, u to'xtab qolguncha sekinlashadi. Ishga tushganda tezlashtirish 1,0 qadam/sek/sek ga o'rnatiladi. Tezlashtirish sozlamasi har doim +ve raqami. SetSpeed (float) sozlamasining belgisi dvigatel harakatlanadigan yo'nalishni belgilaydi.

setSpeed (float) dvigatelni hozirgi tezligidan tezlashtirish / sekinlashtirish tezligini o'rnatadi. SetSpeed (float) orqali o'rnatilishi mumkin bo'lgan tezlik mutlaq qiymatlarda, setMaxSpeed (float), standart 1000 qadam/sek va setMinSpeed (float), standart 0,003 qadam/sek. Bu standartlar, shuningdek, kutubxona setMaxSpeed () va setMinSpeed () uchun qabul qiladigan qattiq kodlangan tezlikning mutlaq chegaralaridir. Agar siz maksimal tezlikni> 1000 qadam/songa o'rnatmoqchi bo'lsangiz, maxMaxSpeed (1000) ni kerakli maksimal tezlikka o'zgartirish uchun SpeedStepper.cpp faylidagi birinchi qatorni o'zgartirishingiz kerak bo'ladi. Amalda, maksimal tezlik kutubxonaning run () usuliga qo'ng'iroqlar orasidagi vaqt bilan ham cheklangan. 1000 qadam / soniya davomida run () usuli kamida 1 mS da chaqirilishi kerak. Quyidagi "Kechikish" bo'limiga qarang.

Minimal tezlikdan past tezlikni o'rnatishga urinish dvigatelning to'xtashiga olib keladi. Ushbu sozlagichlarning har birida mos keladigan qabul qiluvchi bor, SpeedStepper.h faylini ko'ring. GetSetSpeed () tezlik uchun setSpeed () orqali o'rnatgan tezlikni qaytaradi, getSpeed () esa tezlikni pasaytirganda tezligining o'zgarishiga qarab o'zgaradi. Agar dvigatel siz o'ylagan yo'nalishda ketmasa, invertDirectionLogic () ga qo'ng'iroq qilib, dvigatel +va tezlikni o'zgartirishi mumkin.

getCurrentPosition () "home" (0) bilan solishtirganda dvigatelning joriy holatini qaytaradi. Siz joriy motor pozitsiyasi setCurrentPosition (int32_t) ni bekor qilishingiz mumkin. Yangi lavozim belgilangan ortiqcha/minus chegaralar ichida bo'lishi bilan cheklangan.

Dastlab, vosita 0 holatida to'xtatiladi. SetSpeed (50.0) qo'ng'irog'i uni +ve yo'nalishida maksimal 50 qadam/daqiqagacha tezlasha boshlaydi. HardStop () ga qo'ng'iroq qilish dvigatelni darhol to'xtatadi. Boshqa tomondan, stop () usulini chaqirish tezlikni nolga o'rnatadi va dvigatelni to'xtashiga sekinlashadi. StopAndSetHome () ga qo'ng'iroq qilish dvigatelni darhol to'xtatadi va uning holatini 0 ga qo'yadi. Ortiqcha/minus chegarasi qiymatlari o'zgarmaydi, lekin endi bu yangi 0 (uy) pozitsiyasiga havola qilinadi. GoHome () ga qo'ng'iroq qilish stepperni bu 0 (uy) holatiga qaytaradi va to'xtaydi. SetSpeed () ga qo'ng'iroq qilish uyga qaytishni bekor qiladi.

SpeedStepper kutubxonasi, shuningdek, profil profilini uzish uchun setProfile (SpeedProfileStruct* profileArray, size_t arrayLen), startProfile (), stopProfile () usullari orqali tezlik profilini boshqarishni ta'minlaydi. SpeedStepperProfile misol chizmasini ko'ring.

2 -qadam: SpeedStepperPlot misolini motorsiz ishga tushirish

Motorsiz SpeedStepperPlot misolini ishga tushirish
Motorsiz SpeedStepperPlot misolini ishga tushirish

Arduino IDE V1.8.9 ni o'rnating SpeedStepper kutubxonasini yuklab oling va o'rnating SpeedStepper.zip -ni saqlang, so'ngra Arduino IDE menyusidagi Sketch → Kutubxonani qo'shish →. ZIP kutubxonasini qo'shib kutubxonani import qilish uchun millisDelay kutubxonasini ham yuklab oling va o'rnating.

Misollar → SpeedStepper → speedStepperPlot misol chizmasini oching (agar kerak bo'lsa, IDE -ni qayta ishga tushiring). Bu eskiz Serial bilan ishlash uchun tuzilgan, masalan. UNO va Mega va boshqalar. SparkFun Redboard Turbo -da ishlash uchun quyida ko'ring.

Bu misolni ishlatish uchun hech qanday haydovchi paneli yoki qadam dvigateli kerak emas. Ushbu misollar D6 va D7 ni chiqish sifatida ishlatadi. Eskizning yuqori qismidagi STEP_PIN va DIR_PIN sozlamalarini o'zgartirish orqali chiqish pinlarini istalgan raqamli chiqishga o'zgartirishingiz mumkin.

Eskizni taxtaga yuklang, so'ngra asboblar → Serial Plotter -ni 115200 -da oching, tezlik (QIZIL) va pozitsiya (KO'K) chizig'ini ko'rsatish uchun ortiqcha chegarasi 360 ga o'rnatiladi, bu tezlikni nolga 100 ga yaqin nuqtaga olib keladi. x o'qi bo'yicha. Minus chegarasi -510. Pozitsiya ~ -390da to'xtaydi, chunki tezlik 0,0 ga qadar talab qilingan. X o'qining 380 nuqtasida goHome cmd chiqariladi, u qadamni nol holatiga qaytaradi.

Bu speedStepperPlot eskizida millisDelays har xil tezlik va tezlanishlar o'rtasida vaqtni almashtirish uchun ishlatiladi. Ko'p hollarda, keyingi misolda bo'lgani kabi, SpeedStepperProfile -dan foydalanish osonroq.

3 -qadam: SpeedStepperProfile misolini motorsiz ishga tushirish

Motorsiz SpeedStepperProfile misolini ishga tushirish
Motorsiz SpeedStepperProfile misolini ishga tushirish

Misollar → SpeedStepper → speedStepperPlot namunali eskizini oching, bu eskiz Arduino Serial Plotter yordamida yuqoridagi syujetni ishlab chiqaradi va masalan, nasos ishlayotgan bo'lsa, belgilangan tezlik profilini ishga tushirishga misol bo'ladi.

Stepper Speed Profiles SpeedStepper.h faylida aniqlangan SpeedProfileStruct majmuasidan iborat.

SpeedProfileStruct tuzilishi {

suzish tezligi; // maqsadli tezlik bu qadam oxirida imzolanmagan uzun deltaTms; // joriy tezlikdan (bu qadam boshida) maqsadli tezlikka tezlashish vaqti};

Oldingi maqsadli tezlikdan maqsadli tezlikka erishish uchun har bir qadam uchun belgilangan tezlikni va deltaTmsni mS da o'z ichiga olgan SpeedProfileStruct qatorini aniqlang. Agar deltaTms nol yoki juda kichik bo'lsa, tezlik darhol yangi maqsadli tezlikka o'tadi. Aks holda, kerakli tezlashuv hisoblab chiqiladi, yangi maqsad tezligi uchun setAcceleration (), keyin setSpeed () ga qo'ng'iroq qilinadi. Barcha holatlarda profil mavjud ortiqcha va minus pozitsiya chegaralari va maksimal/min tezlik sozlamalari bilan cheklanadi. Agar siz tezlikni ushlab turishni xohlasangiz, avvalgi tezlikni xohlagan vaqtingizda takrorlang. Yangi maqsad tezligi joriy tezlik bilan bir xil bo'lgani uchun, hisoblangan tezlanish nolga teng bo'ladi va tezlikda hech qanday o'zgarish bo'lmaydi.

Bu SpeedProfileStruct qatori yuqoridagi syujetni ishlab chiqardi

const SpeedProfileStruct profili = {{0, 0}, // agar to'xtamagan bo'lsa darhol to'xtating {0, 1000}, // nolni 1 soniya ushlab turing {-50, 0}, // -50 {-200 ga o'tish, 2000}, // rampa -200 {-200, 6000} gacha, // -200 da 6 soniya ushlab turing {-50, 2000}, // -50 gacha pasayish {0, 0}, // // to'satdan to'xtaydi {0, 1500}, // nolni 1,5 soniya ushlab turing {50, 0}, // 50 ga sakrang {200, 2000}, // rampaga 200 {200, 6000}, // 200 soniyani 6 soniya ushlab turing {50, 2000}, // rampa 50 ga {0, 0}, // // birdaniga to'xtaydi {0, 1000} // chiqishni chizish uchun nol // ushlab turing}; const size_t PROFILE_LEN = sizeof (profil) / sizeof (SpeedProfileStruct); // profil massivining hajmini hisoblang

Profil setProfile (SpeedProfileStruct* profileArray, size_t arrayLen) ni chaqirish orqali o'rnatiladi. stepper.setProfile (profil, PROFILE_LEN);

Profil o'rnatilgandan so'ng, startProfile () ga qo'ng'iroq qilib, uni joriy dvigatel tezligidan ishga tushiring (odatda siz to'xtashdan boshlaysiz). Profilning oxirida, vosita oxirgi maqsadli tezlikda ishlashni davom ettiradi. IsProfileRunning () usulini chaqirib, profilning ishlayotganligini tekshirishingiz mumkin. Agar siz profilni erta to'xtatmoqchi bo'lsangiz, stopProfile () ga qo'ng'iroq qilishingiz mumkin, u profildan voz kechadi va dvigatelni to'xtatadi.

4 -qadam: SpeedStepperSetup misolini motorsiz ishga tushirish

Eskizning namunaviy namunasi o'zingizning motorli dvigatelingiz uchun mo'ljallangan. Bu menyuga asoslangan interfeysni ta'minlaydi, bu sizga dvigatelni boshlang'ich pozitsiyasiga o'tishga imkon beradi, agar u erda bo'lmasa va keyin ixtiyoriy ravishda ortiqcha va minus chegaralarini tiklasa va keyin motorni shu diapazonda ishlatsa. "Yugurish" menyusi sizga tezlikni oshirish va kamaytirish, hozirgi tezlikda muzlash, to'xtash va uyga qaytish imkonini beradi.

Ushbu eskiz loopni () sezgirligini ta'minlaydigan bir qator dasturiy xususiyatlarni ko'rsatadi, shunda siz qadamni boshqarish uchun o'z sensorli kirishlaringizni qo'shishingiz mumkin. Tezlikni boshqarishga xalaqit beradigan kechikishlarning oldini olish uchun og'riq kerak. (Qarang: kechikishlar yomon)

Yuqoridagi SpeedStepperPlot -ni ishga tushirish uchun kutubxonalarni o'rnating va pfodParser kutubxonasini o'rnating. PfodParser kutubxonasi loop () ning ishlashini blokirovka qilib, foydalanuvchi kiritish va menyu chiqishini boshqarish uchun ishlatiladigan NonBlockingInput va pfodBufferedStream sinflarini ta'minlaydi.

Misollar → SpeedStepper → speedSpeedSetup misolini oching. Bu eskiz Serial bilan ishlash uchun tuzilgan, masalan. UNO va Mega va boshqalar. SparkFun Redboard Turbo -da ishlash uchun quyida ko'ring.

Bu misolni ishlatish uchun haydovchi platasi yoki qadam dvigateli kerak emas. Ushbu misollar D6 va D7 ni chiqish sifatida ishlatadi. Eskizning yuqori qismidagi STEP_PIN va DIR_PIN sozlamalarini o'zgartirish orqali chiqish pinlarini istalgan raqamli chiqishga o'zgartirishingiz mumkin. Eskizni taxtaga yuklang va SETUP menyusini ko'rish uchun 115200 da Tools → Serial Monitor -ni oching.

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

Eskiz ishga tushganda, qadamning hozirgi holati "uy" (0) pozitsiyasi sifatida qabul qilinadi. Agar qadamni haqiqiy "uy" holatiga qaytarish kerak bo'lsa, "SET HOME" menyusini ko'rsatish uchun p buyrug'ini kiriting.

Uyni o'rnatish: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: step: 752uS loop: 3852uS x -setHome bu erda va + -Oldinga - -teskari s -oldinga/teskari almashtirish -hardStop >

Ko'rib turganingizdek, eskizda kodlangan chegaralar olib tashlangan, shuning uchun siz qadamchani istalgan joyga qayta joylashtirishingiz mumkin. Siz ehtiyot bo'lishingiz kerak, uni jismoniy chegaradan o'tkazib yubormang, aks holda biror narsani buzishingiz mumkin.

Bosqichni oldinga siljitishni boshlash uchun + cmd tugmasidan foydalaning, agar u noto'g'ri yo'nalishda harakat qilayotganini ko'rsangiz, uni to'xtatish uchun buyruqsiz yoki bo'sh satrni kiriting, so'ngra oldinga yo'nalishni almashtirish uchun buyruqni ishlating. Keyingi ishga tushirish uchun tuzatish uchun invertDirectionLogic () ga qo'ng'iroqni kiritish uchun eskizni yangilashingiz kerak.

Stepni to'g'ri nol holatiga qo'yish uchun + / - cmds -dan foydalaning. Dvigatel sekin ishga tushadi, keyin esa tezlikni oshiradi, uni to'xtatish uchun bo'sh chiziqdan foydalaning. Maksimal tezlik va limitlar menyusi MAX_SETUP_SPEED tomonidan setupMenus.cpp tepasida o'rnatiladi.

Dvigatel "uy" holatiga o'rnatilgandan so'ng, x cmd tugmachasi yordamida joriy holatni 0 ga qaytaring va SETUP menyusiga qayting.

Agar siz cheklovlarni belgilashingiz kerak bo'lsa, odatda faqat boshlang'ich sozlamalarda, SET LIMITS menyusiga kirish uchun l cmd -dan foydalaning.

SET LIMITS poz: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: step: 944uS loop: 5796uS l -setLimit this + -Oldinga - -teskari h -goHome x -chiqish -hardStop>

Plyus chegarasini oldinga siljitish uchun + cmd tugmachasidan foydalaning va keyin uni ortiqcha chegarasi sifatida belgilash uchun l cmd dan foydalaning. H buyrug'i 0 ga qaytish uchun ishlatilishi mumkin va agar dvigatel minus chegarada bo'lsa, cmd yordamida harakatlanadi. Minus chegarasini o'rnatish uchun yana l cmd dan foydalaning. Plyus va minus chegaralari pozitsiyalariga e'tibor bering va setPlusLimit va setMinusLimit sozlamalarini ushbu qiymatlar bilan yangilang.

Cheklovlar o'rnatilganda "SETUP" menyusiga qaytish uchun x cmd -dan foydalaning, so'ngra "RUN" menyusini ochish uchun r cmd -dan foydalanishingiz mumkin.

RUN MENU poz: 0 sp: 3.31 + Lim: 500000 -Lim: -500 LATENCY: step: 944uS loop: 5796uS + -Tezlashtirish - -Tezlikni pasaytirish h -goHome. -HardStop-muzlatish Tezlik> +pos: 4 sp: 9.49 +Lim: 500000 -Lim: -500 LATENCY: step: 792uS pastadir: 5664uS pos: 42 sp: 29.15 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS pastadir: 5664uS pos: 120 sp: 49.09 +Lim: 500000 -Lim: -500 LATENCY: step: 792uS pastadir: 5664uS pos: 238 sp: 69.06 +Lim: 500000 -Lim: -500 LATENCY: step: 792uS loop: 5664uS

+ Cmd oldinga siljishni boshlaydi va har 2 soniyada pozitsiya va tezlikni bosib chiqaradi. Dvigatel kerakli tezlikka yetganda, tezlikni boshqa tugma (yoki bo'sh kirish) yordamida to'xtatishingiz mumkin. To'xtatish uchun - cmd tugmasi yordamida tezlikni kamaytirishingiz mumkin. Agar to'xtatilsa - cmd teskari tezlashadi.

Ushbu RUN menyusi sizning loyihangizni qo'lda boshqarishni ta'minlaydi. Avtomatik boshqarish uchun siz boshqa sensorlarni qo'shishingiz kerak bo'ladi.

5 -qadam: kechikish

Bosqichli motorni boshqarish har bir qadamni boshqaradigan dasturiy ta'minotga bog'liq. Belgilangan tezlikni saqlab qolish uchun, eskizingiz stepper.run () usulini tez -tez chaqirishi kerak, bu esa keyingi tezlikni joriy tezlik uchun o'z vaqtida bajarish uchun etarli. Datchiklar yordamida boshqarish uchun siz yangi o'lchovlarni tezda qayta ishlashingiz kerak. Pozitsiya/tezlikni bosib chiqarish chizig'i etarlicha tezligini tekshirish uchun ikkita LATENCY o'lchovini o'z ichiga oladi.

Stepper kechikishi (pfodBufferedStream)

Stepper kechikishi stepper.run () usuliga ketma -ket qo'ng'iroqlar orasidagi maksimal kechikishni o'lchaydi. Bosqichli motorni sekundiga 1000 qadamda ishga tushirish uchun qadamning kechikishi 1000uS (1mS) dan kam bo'lishi kerak. Ushbu eskizning birinchi versiyasida ko'p millisekundlar kechiktirilgan. Kod orqali qo'shilgan runStepper () usuliga (stepper.run () ni chaqiradigan) qo'shimcha qo'ng'iroqlarni bartaraf etish uchun. Bu muammoni to'liq hal qilmadi, chunki kichik Serial Tx buferi to'lganidan so'ng, menyu va chiqish bosma bayonnomalari eskizni to'sib qo'ydi. Bu blokirovkani oldini olish uchun pfodParser kutubxonasidan pfodBufferedStream 360 baytli chiqish bosma buferini qo'shish uchun ishlatilgan bo'lib, uni bosma bayonotlar tezda yozishi mumkin edi. Keyin pfodBufferedStream bu holatda bayt tezligini 115200da ko'rsatilgan. pfodBufferedStream bufer to'ldirilganda blokirovka qilish yoki to'lg'azish belgilarini tashlab yuborish imkoniyatiga ega. Bufer buferi to'lganida, qo'shimcha belgilarni qo'yib yuborish mumkin, shunda eskiz bloklanmaydi, chunki Seriya belgilar yuborishini kutadi.

Loopning kechikishi (NonBlockingInput)

Loop kechikishi loop () usuliga ketma -ket qo'ng'iroqlar orasidagi maksimal kechikishni o'lchaydi. Bu sensorning yangi o'lchovlarini qanchalik tez bajarishingiz va vosita tezligini sozlashingiz mumkin. Qanchalik tez bo'lishi kerak, siz nazorat qilmoqchi bo'lgan narsaga bog'liq.

Bosib chiqarish bayonnomalaridagi kechikishlar yuqoridagi pfodBufferedStream yordamida o'chirildi, lekin foydalanuvchining kiritgan ma'lumotlarini qayta ishlash uchun siz kirishni faqat birinchi belgisini olib, satrning qolgan qismini e'tiborsiz qoldirishingiz kerak. PfodParer kutubxonasidagi NonBlockingInput klassi, o'qilgan vaqtda (no) bo'lmagan nol bo'lmagan charni qaytarish uchun ishlatiladi va readInput () yordamida quyidagi belgilarni o'chirish va o'chirish uchun clearInput () yordamida, tsiklni bloklamasdan 10 mS davomida hech qanday belgilar olinmaguncha ishlatiladi. ()

Albatta, datchiklarni o'qish va yangi o'rnatilgan tezlikni hisoblash uchun siz kiritadigan qo'shimcha kod bilan pastadir kechikishi oshadi. Ko'p sensorli kutubxonalar o'lchovni boshlash va natijani olish o'rtasida kechikish (..) yordamida tartibni qisqartiradi. Bu kutubxonalarni millisDelay-dan foydalanish uchun qayta yozishingiz kerak bo'ladi.

6 -qadam: StepStepperSetup -ni Step Motor va SparkFun Redboard Turbo bilan ishga tushirish

StepStepperSetup -ni Step Motor va SparkFun Redboard Turbo bilan ishga tushirish
StepStepperSetup -ni Step Motor va SparkFun Redboard Turbo bilan ishga tushirish
StepStepperSetup -ni Step Motor va SparkFun Redboard Turbo bilan ishga tushirish
StepStepperSetup -ni Step Motor va SparkFun Redboard Turbo bilan ishga tushirish

Haqiqiy SpeedStepperSetup eskizini ishga tushirish uchun sizga step motor, haydovchi va quvvat manbai kerak bo'ladi va bu misolda SparkFun Redboard Turbo.

Yuqoridagi simlar diagrammasi (pdf versiyasi) ulanishlarni ko'rsatadi. SpeedStepperSetup eskizida SERIAL ta'rifini #SERIAL Serial1ni belgilang

Step motor, quvvat manbai, haydovchi va himoya

Bosqichli dvigatellarning ko'p turlari va o'lchamlari mavjud. Bu erda sinov uchun ikkita 12V 350mA qadamli dvigatel ishlatiladi. Ushbu qadamni yoqish uchun sizga 12V yoki undan yuqori va 350mA dan yuqori quvvat manbai kerak bo'ladi.

Ushbu kutubxona faqat yo'nalish va qadam chiqishini ta'minlaydi, shuning uchun sizga step motor bilan ishlash uchun haydovchi kerak. Easy Driver va Big Easy Driver dvigatel sargilaridagi tokni boshqaradi, shuning uchun siz yuqori voltli quvvat manbaini xavfsiz ishlatishingiz mumkin, masalan, 3,3V dvigatel uchun 6V. Easy Driver 150mA/700mA/lasanni etkazib berishi mumkin. Yuqori oqimlar uchun Big Easy Driver har bir lasan uchun 2A gacha etkazib berishi mumkin. Easy Drive sahifasining pastki qismidagi savol -javoblarni o'qing.

Ushbu misollar D6 va D7 -ni qadam va yo'nalish chiqishi sifatida ishlatadi. Eskizning yuqori qismidagi STEP_PIN va DIR_PIN sozlamalarini o'zgartirish orqali chiqish pinlarini istalgan raqamli chiqishga o'zgartirishingiz mumkin.

Sparkfun Redboard Turbo dasturlash

Redboard Turbo dasturlash muammoli. Agar dastur bajarilmasa, avval reset tugmasini bir marta bosing va Arduino Tools menyusidagi COM portini qayta tanlang va qaytadan urinib ko'ring. Agar bu ishlamasa, reset tugmasini ikki marta bosing va qaytadan urining.

Oson haydovchini ulash

Ikkita rulonli step motorlarida 4 ta sim bor. Multimetrdan foydalanib, har bir rulonga ulanadigan juftlarni toping, so'ngra bitta rulonni Easy Driver A terminaliga, ikkinchisini esa B terminaliga ulang. Siz ularni qaysi tomondan aylantirganingiz muhim emas, chunki sozlash menyusida s yo'nalishini harakat yo'nalishini almashtirish uchun ishlatishingiz mumkin.

Dvigatel quvvat manbai M+ va GNDS ga ulangan, 3/5V ulanishi bilan taxtaning mantiqiy darajasini o'rnatadi. SparkFun Redboard Turbo kabi 3.3V mikroprotsessor chiqishlari uchun havolani qisqartiring (agar siz uni ochiq qoldirsangiz 5V raqamli signallarga mos keladi, masalan, UNO, Mega) GND, STEP, DIR pinlarini GND mikroprotsessoriga ulang va qadam va Dvigatelni haydash uchun boshqa ulanishlar kerak emas.

USB - TTL seriyali kabel

SpeedStepperSetup eskizini Uno/Mega -dan Redboard Turbo -ga ko'chirganda, oddiygina #define SERIAL Serial -ni #define SERIAL SerialUSB bilan almashtirishingiz mumkin, bu esa Redboard Turbo usb ketma -ket ulanishiga mos keladi, lekin natijada qadamning kechikishi taxminan 10 mS ni tashkil qiladi. Bu BMTga qaraganda 10 baravar sekinroq. Bu Redboard protsessorining USB ulanishini qanday boshqarishi bilan bog'liq. Buning uchun USB -ni TTL ketma -ket kabeliga D0/D1 ga ulang va step motorini boshqarish uchun apparat ketma -ket ulanishdan foydalanish uchun#SERIAL Serial1 ni belgilang. Serial1 -dan foydalanish LATENCY: stepper: 345uS loop: 2016uS ni beradi, bu esa UNO -dan 3 barobar tezroq va bosqichli va pastadirli kechikish uchun.

Terminal dasturi

Arduino Serial Monitor -ni qadam dvigatelini boshqarish uchun ishlatish biroz qiyinroq, chunki siz cmd satriga charni kiritishingiz va uni yuborish uchun Enter ni bosishingiz kerak. Tezroq javob beradigan usul - bu kompyuterga TeraTerm (yoki CoolTerm Mac), USB -dan TTL kabelining COM portiga ulangan terminal oynasini ochish. Keyin oynada cmd tugmachasini bosish uni darhol yuboradi. Enter tugmachasini bosish orqali bo'sh satr yuboriladi.

Dvigatel tezligi oralig'ini sozlash

Yuqorida aytilganidek, "Easy Drive" 1/8 qadam uchun tuzilgan, shuning uchun 1000 qadam/sekundda dvigatel 1000/8/200 qadam/aylanish = 0,625 aylanish/sek yoki maksimal 37,5 aylanish tezligi bilan aylanadi. Kirishlarni MS1/MS2 ga o'zgartirish orqali siz 1/8, ¼, ½ va to'liq qadamlarni almashtirishingiz mumkin. To'liq qadamlar uchun MS1 va MS2 ni GND ga ulang. Bu aylanish tezligini 300 rpmgacha oshirish imkonini beradi. Tegishli MS1/MS2 sozlamalarini tanlash dvigatel va boshqariladigan qism o'rtasida o'rnatilgan vites nisbatini sozlash imkonini beradi.

Uskuna himoyasi

SpeedStepper kutubxonasi dvigatel harakati bo'yicha pozitsiya chegaralarini belgilashga imkon bersa, pozitsiyani aniqlash dasturiy ta'minot tomonidan chiqarilgan qadamlarni hisoblash orqali amalga oshiriladi. Agar dvigatel to'xtab qolsa, ya'ni moment keyingi bosqichda dvigatelni haydash uchun etarli bo'lmasa, dasturiy ta'minot pozitsiyasi dvigatel pozitsiyasiga to'g'ri kelmaydi. Keyin "goHome" buyrug'idan foydalanganda, vosita uy holatidan ustun turadi. Uskuna shikastlanishining oldini olish uchun siz motorni elektr ta'minotini uzib qo'yadigan cheklovli kalitlarni o'rnatishingiz kerak

Dvigatel oqimining chegarasini sozlash

Birinchidan, uni potentsiometrning eng past darajasiga qo'ying. ya'ni TP1da kuchlanish minimal. Potansiyometr nozik, shuning uchun potentsiometrni mexanik to'xtash joylaridan o'tib ketishiga majburlamang. Dvigatelning sekin harakatlanish tezligini sekin, so'ngra potentsiometrni sekin aylantiring yoki dvigatel pog'onalar orasidan siljimaguncha aylantiring.

Xulosa

Ushbu loyiha SpeedStepper kutubxonasidan amaliy qo'llanmada qanday foydalanishni ko'rsatadi. AccelStepper kutubxonasi pozitsiyalarni boshqarishni yaxshi ta'minlasa-da, Evropada biologik namunalarni yig'ish uchun muzni eritish prototipi uchun tezlikni nazorat qilish kerak edi, shuning uchun AccelStepper kutubxonasi tezlikni cheklovlar va goHome funktsiyasi bilan boshqarish uchun qayta yozildi.

Tavsiya: