Агуулгын хүснэгт:

Arduino дээр ажилладаг Stepper Speed Control цэс: 6 алхам
Arduino дээр ажилладаг Stepper Speed Control цэс: 6 алхам

Видео: Arduino дээр ажилладаг Stepper Speed Control цэс: 6 алхам

Видео: Arduino дээр ажилладаг Stepper Speed Control цэс: 6 алхам
Видео: MKS Gen L — Марлин 1 1 9 (configuration.h) 2024, Долдугаар сарын
Anonim
Arduino -д зориулагдсан Stepper Speed Control цэс
Arduino -д зориулагдсан Stepper Speed Control цэс
Ардуинод зориулагдсан Stepper Speed Control цэс
Ардуинод зориулагдсан Stepper Speed Control цэс
Ардуинод зориулагдсан Stepper Speed Control цэс
Ардуинод зориулагдсан Stepper Speed Control цэс

Энэхүү SpeedStepper номын сан нь stepper моторын хурдыг хянах боломжийг олгохын тулд AccelStepper номын санг дахин бичсэн болно. SpeedStepper номын сан нь хөдөлгүүрийн тогтоосон хурдыг өөрчлөх боломжийг олгодог бөгөөд дараа нь AccelStepper номын сантай ижил алгоритмыг ашиглан шинэ тогтоосон хурдыг хурдасгаж/удаашруулдаг. SpeedStepper номын сан нь нэмэх ба хасах хязгаар, "гэрийн" байрлалыг тохируулах боломжийг танд олгоно. Эх байрлал руу буцах goHome команд байдаг.

Хязгаарлалт: SpeedStepper номын сан нь зөвхөн чиглэл, алхам гаралтыг хөтөлдөг тул stepper моторыг жолоодохын тулд Easy Driver гэх мэт мотор драйвертай холбох шаардлагатай байдаг. AccelStepper номын сан нь шаардлагатай бол энэ номын санд хуулж болох жолоодлогын олон сонголтыг өгдөг.

Гурван жишээ тоймыг өгсөн бөгөөд тус бүрийг мотор, мотор жолоочгүйгээр ажиллуулж болно. speedStepperPlot ноорог нь хурдны команд болон goHome командын жишээг гаргаж, үр дүн, хурдны байршлыг харуулдаг. SpeedStepperSetup ноорог нь моторын гэр, хязгаарыг тохируулах, дараа нь моторыг ажиллуулах, хурдыг дээш, доош тохируулах цэсээр удирддаг тохиргоог хангаж өгдөг. SpeedStepperProfile ноорог нь хурдны профайлыг тохируулах, гүйцэтгэх жишээг харуулж байна.

AccelStepper номын сан нь байрлалыг сайн хянадаг боловч Европт биологийн дээж цуглуулахын тулд мөс хайлах прототипийн хурдыг хянах шаардлагатай байв. Энд моторын оронд жинг ашигласан прототипийн өмнөх хувилбарын видео бичлэгийг энд оруулав. Revision 1.1 нь хэрэглэгч насосны хурдны профайлыг хянах хэрэгсэл хүссэний дараа хурдны профайлыг нэмсэн.

Энэхүү номын сан нь Arduino Uno болон Mega2560 дээр ажилладаг боловч прототипийн хувьд илүү том санах ой / хурдан SparkFun Redboard Turbo процессорыг ашигласан болно.

Энэхүү зааварчилгааг Arduino -д зориулсан Stepper Speed Control Library дээрээс онлайнаар авах боломжтой

Хангамж

Жишээг ажиллуулахын тулд зөвхөн Arduino UNO эсвэл Mega2560 болон програм хангамжийн санг ашиглах шаардлагатай

Номын сангийн вандан туршилтанд зориулж SparkFun Redboard Turbo -ийг Easy Driver, 200 алхам/эргэлт, 12V 350mA stepper мотор, 12A тогтмол гүйдлийн 2А ба түүнээс дээш хэмжээтэй ашиглаж байсан. https://www.sparkfun.com/products/14934. USB A to Micro cable USB to TTL Serial CableArduino IDE V1.8.9 ба түүнийг ажиллуулах компьютер.

Алхам 1: Номын сангийн функцууд

SpeedStepper номын сан нь номын сангийн тогтоосон хязгаараар хязгаарлагддаг stepper моторыг ажиллуулдаг. Номын сангийн янз бүрийн аргуудыг SpeedStepper.h файлаас үзнэ үү. Тэдний цаана байгаа логикийн тоймыг энд оруулав.

Алхамын тоог (импульс) тоолох замаар гишгүүрийн байрлалыг хянадаг. Номын сан нь setPlusLimit (int32_t) болон setMinusLimit (int32_t) байрлалуудын хоорондох байрлалыг хязгаарладаг. Нэмэх хязгаар нь үргэлж> = 0, хасах хязгаар нь үргэлж <= 0 байна. Эхлэх үед моторын байрлал 0 (гэрийн) байх ба хязгаарыг маш том +/- тоонд (ойролцоогоор +/- 1e9 алхам) тохируулна. setAcceleration (float) нь моторын хурдыг дээш эсвэл доош нь хэр хурдан өөрчлөхийг тохируулдаг. Мотор нэмэх эсвэл хасах хязгаарт ойртох тусам энэ хурдаар зогсох хүртэл хурдаа хасах болно. Эхлэх үед хурдатгалыг 1.0 алхам/сек/сек болгож тохируулна. Хурдатгалын тохиргоо нь үргэлж +ve тоо байдаг. SetSpeed (хөвөх) тохиргооны тэмдэг нь хөдөлгүүрийн хөдөлж буй чиглэлийг тодорхойлдог.

setSpeed (float) нь хөдөлгүүрийг одоогийн хурдаас хурдасгах / удаашруулах хурдыг тохируулдаг. SetSpeed (хөвөх) -ээр тохируулж болох хурдыг үнэмлэхүй утгаар нь тохируулах, setMaxSpeed (хөвөх), өгөгдмөл 1000 алхам/сек, setMinSpeed (хөвөх), анхдагч 0.003 алхам/секээр хязгаарладаг. Эдгээр өгөгдмөлүүд нь номын сангийн setMaxSpeed () ба setMinSpeed () -д хүлээн авах хатуу кодлогдсон хурдны үнэмлэхүй хязгаар юм. Хэрэв та хамгийн дээд хурдыг> 1000 алхам/сек болгохыг хүсч байвал maxMaxSpeed (1000) -ийг хүссэн дээд хурдаар өөрчлөхийн тулд SpeedStepper.cpp файлын эхний мөрийг засах шаардлагатай болно. Практик дээр номын сангийн run () арга руу залгах хоорондох хамгийн дээд хурдыг хязгаарладаг. 1000 алхам / сек -ийн хувьд run () аргыг дор хаяж 1 мS тутамд дуудах ёстой. Доорх хоцрогдол хэсгийг үзнэ үү.

Мин хурднаас бага хурдыг тохируулах гэж оролдох нь моторыг зогсооход хүргэдэг. Эдгээр тохируулагч бүр нь харгалзах хүлээн авагчтай бөгөөд SpeedStepper.h файлыг үзнэ үү. Хурдны хувьд getSetSpeed () нь setSpeed () -ээр тохируулсан хурдыг буцааж өгдөг бол getSpeed () нь таны тогтоосон хурдыг хурдасгах/удаашруулах үед өөрчлөгдөж байгаа одоогийн хөдөлгүүрийн хурдыг буцаана. Хэрэв мотор таны бодож байгаа чиглэлд явахгүй бол invertDirectionLogic () руу залгаж хөдөлгүүрийн хөдөлж буй чиглэлийг +хурдаар сольж болно.

getCurrentPosition () нь "home" (0) -тэй харьцуулахад одоогийн хөдөлгүүрийн байрлалыг буцаана. Та одоогийн хөдөлгүүрийн байрлалын setCurrentPosition (int32_t) дээр дарж болно. Шинэ албан тушаал нь тогтоосон нэмэх/хасах хязгаарт багтахаар хязгаарлагддаг.

Эхний ээлжинд мотор 0 байрлалд зогсоно. SetSpeed (50.0) руу залгах нь +ve чиглэлд хамгийн ихдээ 50 алхам/мин хүртэл хурдасгах болно. HardStop () руу залгахад мотор байгаа газарт нь шууд зогсох болно. Нөгөө талаар stop () аргыг дуудах нь хурдыг тэг болгож, моторыг зогсооход хүргэдэг. StopAndSetHome () руу залгах нь хөдөлгүүрийг нэн даруй зогсоож, түүний байрлалыг 0 болгоно. Нэмэх/хасах хязгаарын утгыг өөрчлөхгүй, харин одоо энэ 0 (гэрийн) байрлал руу шилжүүлнэ. GoHome () руу залгахад stepper -ийг энэ 0 (home) байрлал руу буцааж зогсоодог. SetSpeed () руу залгах нь гэртээ харихаа болино.

SpeedStepper номын сан нь ажиллаж буй профайлыг тасалдуулахын тулд setProfile (SpeedProfileStruct* profileArray, size_t arrayLen), startProfile (), stopProfile () аргуудаар дамжуулан хурдны профайлын хяналтыг хангадаг. SpeedStepperProfile жишээг харна уу.

Алхам 2: SpeedStepperPlot -ийн жишээг моторгүйгээр ажиллуулах

SpeedStepperPlot -ийн жишээг моторгүйгээр ажиллуулах
SpeedStepperPlot -ийн жишээг моторгүйгээр ажиллуулах

Arduino IDE V1.8.9 -ийг суулгаарай SpeedStepper номын санг татаж аваад суулгаарай SpeedStepper.zip -ийг хадгалаад дараа нь Arduino IDE цэсийн Sketch → Номын сан оруулах

Жишээ → SpeedStepper → speedStepperPlot жишээг нээнэ үү (шаардлагатай бол IDE -г дахин эхлүүлнэ үү). Энэхүү ноорог нь Serial -тэй ажиллахаар тохируулагдсан болно. UNO болон Mega гэх мэт SparkFun Redboard Turbo дээр ажиллахын тулд доороос үзнэ үү.

Жолоочийн самбар эсвэл stepper мотор энэ жишээг ажиллуулах шаардлагагүй болно. Эдгээр жишээнд D6 ба D7 -ийг гаралт болгон ашигладаг. Та ноорогны дээд хэсэгт байрлах STEP_PIN болон DIR_PIN тохиргоог өөрчилснөөр гаралтын зүүг дижитал гаралт болгон өөрчилж болно.

Ноорогыг самбар дээр байршуулаад дараа нь Багаж хэрэгсэл → Цуваа плоттерыг 115200 бауд дээр нээгээд хурд (RED) ба байрлалыг (Цэнхэр) харуулна. Нэмэх хязгаарыг 360 болгож тохируулсан бөгөөд энэ нь хурдыг 100 орчим цэгээс тэг рүү эргүүлэхэд хүргэдэг. x тэнхлэг дээр. Хасах хязгаар нь -510. Хурдыг 0.0 болгох шаардлагатай байгаа тул байрлал ~ -390 дээр зогсдог. X тэнхлэгийн 380 цэг дээр goHome cmd-ийг гаргадаг бөгөөд энэ нь stepper-ийг тэг байрлалд буцаана.

Энэхүү speedStepperPlot ноорог нь янз бүрийн хурд, хурдатгал хооронд шилжих цагийг millisDelays ашигладаг. Ихэнх тохиолдолд дараагийн жишээн дээрх шиг SpeedStepperProfile ашиглах нь илүү хялбар байдаг.

Алхам 3: SpeedStepperProfile -ийн жишээг моторгүй ажиллуулах

SpeedStepperProfile жишээг моторгүйгээр ажиллуулах
SpeedStepperProfile жишээг моторгүйгээр ажиллуулах

Жишээ → SpeedStepper → speedStepperPlot жишээг нээгээрэй, энэ ноорог нь Arduino Serial Plotter ашиглан дээрх схемийг гаргадаг бөгөөд хэрэв насос ажиллаж байгаа бол тогтоосон хурдны профайлыг ажиллуулах жишээ болно.

Stepper Speed Profiles нь SpeedStepper.h файлд тодорхойлогдсон SpeedProfileStruct массиваас бүрдэнэ.

бүтэц SpeedProfileStruct {

хөвөх хурд; // энэ алхмын төгсгөлд зорилтот хурд гарын үсэг зураагүй урт deltaTms; // одоогийн хурдаас (энэ алхмын эхэнд) зорилтот хурд руу хурдасгах цаг};

Өмнөх зорилтот хурдаас тухайн зорилтот хурданд хүрэхийн тулд алхам тутамд зорилтот хурд, цагийг deltaTms -ийг mS -ээр агуулсан SpeedProfileStruct массивыг тодорхойл. Хэрэв deltaTms тэг эсвэл маш бага байвал хурд нь шууд шинэ зорилтот хурд руу үсрэх болно. Үгүй бол шаардлагатай хурдатгалыг тооцоолох болно setAcceleration () дараа нь зорилтот хурдны хувьд setSpeed () руу залгах болно. Бүх тохиолдолд профайлыг одоо байгаа нэмэх ба хасах байрлалын хязгаар, хамгийн их/минутын хурдны тохиргоогоор хязгаарлах болно. Хэрэв та хурдыг барихыг хүсч байвал өмнөх хурдыг хүссэн цагтаа давтана уу. Шинэ зорилтот хурд нь одоогийн хурдтай ижил байгаа тул тооцоолсон хурдатгал нь тэг байх бөгөөд хурд өөрчлөгдөхгүй.

Энэхүү SpeedProfileStruct массив нь дээрх схемийг гаргасан

const SpeedProfileStruct profile = {{0, 0}, // аль хэдийн зогсоогүй бол шууд зогсоох {0, 1000}, // тэгийг 1 секундын турш барих {-50, 0}, // -50 {-200 руу үсрэх, 2000}, // -200 {-200, 6000} хүртэл налуу, // -200 дээр 6 секундын турш барина {-50, 2000}, // -50 хүртэл буурах {0, 0}, // // шууд зогсох {0, 1500}, // тэгийг 1.5 сек {50, 0} барих, // 50 хүртэл үсрэх {200, 2000}, // налууг 200 {200, 6000}, // 200 секундыг 6 секундын турш барих {50, 0}, 2000}, // ramp to 50 {0, 0}, // // шууд зогсох {0, 1000} // гаралтыг төлөвлөхдөө тэг // барих}; const size_t PROFILE_LEN = sizeof (profile) / sizeof (SpeedProfileStruct); // профайл массивын хэмжээг тооцоолох

Профайлыг setProfile (SpeedProfileStruct* profileArray, size_t arrayLen) дуудаж тохируулна. stepper.setProfile (профайл, PROFILE_LEN);

Профайлыг тохируулсны дараа startProfile () руу залгаж, одоогийн хөдөлгүүрийн хурдаас ажиллуулж эхлэх хэрэгтэй (ихэвчлэн та зогссоноос эхэлнэ). Профайлын төгсгөлд мотор эцсийн зорилтот хурдаар үргэлжлүүлэн ажиллах болно. Профайл ажиллаж байгаа эсэхийг мэдэхийн тулд isProfileRunning () аргыг дуудаж болно. Хэрэв та профайлыг эрт зогсоохыг хүсвэл stopProfile () руу залгаж, профайлыг орхиж, моторыг зогсоох болно.

Алхам 4: SpeedStepperSetup жишээг моторгүйгээр ажиллуулах

Жишээ ноорог нь stepper моторыг өөрийн гараар ашиглахад зориулагдсан болно. Энэ нь цэсэнд суурилсан интерфейсийг өгдөг бөгөөд энэ нь моторыг байрлал руу нь шилжүүлэх боломжийг олгодог бөгөөд хэрэв байхгүй бол нэмэх ба хасах хязгаарыг дахин тохируулаад дараа нь моторыг энэ хүрээнд ажиллуулах боломжтой болно. "Ажиллуулах" цэс нь хурдыг нэмэгдүүлэх, бууруулах, одоогийн хурдаар хөлдөх, зогсох, гэртээ харих боломжийг танд олгоно.

Энэхүү тойм нь loop () -д хариу үйлдэл үзүүлэх олон тооны програм хангамжийн онцлогуудыг харуулсан бөгөөд ингэснээр та stepper -ийг хянахын тулд өөрийн мэдрэгчийн оролтыг нэмж болно. Хурдны хяналтанд саад болох саатал гарахаас зайлсхийхийн тулд маш их хөдөлмөр шаардагдана. (Саатал бол мууг үзнэ үү)

Дээрх SpeedStepperPlot -ийг ажиллуулахад ашигладаг номын сангуудыг суулгаад pfodParser номын санг суулгана уу. PfodParser номын сан нь loop () -ыг ажиллуулахыг хааж хэрэглэгчийн оролт, цэсний гаралтыг зохицуулахад хэрэглэгддэг NonBlockingInput болон pfodBufferedStream ангиудыг нийлүүлдэг.

Жишээ → SpeedStepper → speedSpeedSetup жишээг нээнэ үү. Энэхүү ноорог нь Serial -тэй ажиллахаар тохируулагдсан болно. UNO болон Mega гэх мэт SparkFun Redboard Turbo дээр ажиллахын тулд доороос үзнэ үү.

Жолоочийн самбар эсвэл stepper мотор энэ жишээг ажиллуулах шаардлагагүй болно. Эдгээр жишээнд D6 ба D7 -ийг гаралт болгон ашигладаг. Та ноорогны дээд хэсэгт байрлах STEP_PIN болон DIR_PIN тохиргоог өөрчилснөөр гаралтын зүүг дижитал гаралт болгон өөрчилж болно. Ноорогыг самбар дээр байршуулаад дараа нь Tools → Serial Monitor -ийг 115200 дээр нээгээд SETUP цэсийг үзнэ үү.

SETUP pos: 0 sp: 0.00 +Lim: 500000 -Lim: -500 LATENCY: stepper: 492uS loop: 0uS p -set Home l -хязгаар тогтоох h -goHome r -run>

Ноорог ажиллаж байх үед гишгүүрийн одоогийн байрлалыг "гэрийн" (0) байрлалаар авна. Хэрэв та stepper-ийг жинхэнэ 'гэрийн' байрлалд дахин байрлуулах шаардлагатай бол p командыг оруулаад SET HOME цэсийг харуулна уу.

HOME SET HOME pos: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 752uS loop: 3852uS x -setHome эндээс гараад + -Forward - -Reverse s -swward Forward/Reverse -hardStop >

Таны харж байгаагаар ноорог дээр кодлогдсон хязгаарлалтыг хассан тул та stepper-ийг хаана ч хамаагүй дахин байрлуулж болно. Та үүнийг бие махбодийн хязгаараас хэтрүүлэхгүй байх, эс тэгвээс та ямар нэгэн зүйлийг эвдэж болзошгүйг анхаарах хэрэгтэй.

Stepper-ийг урагш хөдөлгөж эхлэхийн тулд + cmd-ийг ашиглаарай, хэрэв та буруу чиглэлд хөдөлж байгааг олж мэдвэл түүнийг зогсоохын тулд командын бус эсвэл хоосон мөрийг оруулаад дараа нь урагшлах чиглэлийг солихын тулд scommand командыг ашиглана уу. Дараагийн удаа үүнийг засахын тулд тохиргоонд invertDirectionLogic () руу залгах дуудлагыг оруулахын тулд ноорогоо шинэчлэх хэрэгтэй.

+ / - cmds ашиглан stepper -ийг зөв тэг байрлалд байрлуулна. Мотор аажмаар эхэлж, дараа нь хурдыг нэмэгдүүлдэг. Үүнийг зогсоохын тулд зүгээр л хоосон шугамыг ашиглана уу. Энэ болон хязгаарын цэсийн хамгийн дээд хурдыг setupMenus.cpp файлын дээд хэсэгт байрлах MAX_SETUP_SPEED тохируулсан болно.

Моторыг "гэрийн" байрлалд байрлуулсны дараа x cmd ашиглан одоогийн байрлалыг 0 болгож дахин тохируулах цэс рүү буцна уу.

Хэрэв та хязгаарыг тохируулах шаардлагатай бол ихэвчлэн зөвхөн анхны тохиргоон дээр л cmd ашиглан 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>

Нэмэх хязгаарт шилжихийн тулд + cmd -ийг ашиглаад l cmd -ийг ашиглан нэмэх хязгаар болгоно. Дараа нь h тушаалыг 0 рүү буцааж, моторыг хасах хязгаарт шилжүүлбэл cmd тушаалыг шилжүүлж болно. Хасах хязгаарыг тогтоохын тулд дахин l cmd ашиглана уу. Нэмэх ба хасах хязгаарын байрлалыг тэмдэглэж, эдгээр утгуудаар setup () аргын setPlusLimit болон setMinusLimit мэдэгдлүүдийг шинэчилнэ үү.

Хязгаар тогтоосон үед x cmd ашиглан SETUP цэс рүү буцаж очоод r cmd ашиглан RUN цэсийг нээнэ үү.

RUN MENU pos: 0 sp: 3.31 + Lim: 500000 -Lim: -500 LATENCY: stepper: 944uS loop: 5796uS + -Speed up - -Speed down h -goHome. -hardStop-хөлдөөх хурд> +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 давталт: 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: step: 792uS loop: 5664uS

+ Cmd нь урагш чиглэлд хурдасч эхэлдэг бөгөөд байрлал, хурдыг 2 секунд тутамд хэвлэдэг. Мотор таны хүссэн хурданд хүрмэгц хурдатгалыг өөр түлхүүрээр (эсвэл хоосон оролт) зогсоож болно. Та зогсоохын тулд - cmd доош ашиглан хурдыг бууруулж болно. Хэрэв зогссон бол - cmd урвуугаар хурдасна.

Энэхүү RUN цэс нь таны төслийг гараар хянах боломжийг олгодог. Автомат удирдлагын хувьд та өөр мэдрэгч нэмэх шаардлагатай болно.

Алхам 5: Хожуудал

Stepper моторын хяналт нь алхам бүрийг програм хангамжаас хамаардаг. Тогтсон хурдыг хадгалахын тулд ноорог зурахдаа stepper.run () аргыг дуудах шаардлагатай байдаг. Мэдрэгчээр хянахын тулд та шинэ хэмжилтийг цаг алдалгүй боловсруулах чадвартай байх ёстой. Байршил/хурдыг хэвлэх нь хоцролтын хоёр хэмжилтийг багтаасан бөгөөд энэ нь ноорогоо хангалттай хурдан эсэхийг шалгах боломжийг танд олгоно.

Stepper хоцролт (pfodBufferedStream)

Stepper хоцролт нь stepper.run () аргын дараалсан дуудлагын хоорондох хамгийн их хоцролтыг хэмждэг. Stepper моторыг секундэд 1000 алхамаар ажиллуулахын тулд stepper -ийн хоцрогдол нь 1000uS (1mS) -ээс бага байх шаардлагатай. Энэхүү ноорогны анхны хувилбар нь олон миллисекундын хоцролттой байв. Энэ нэмэлт дуудлагыг даван туулахын тулд кодыг ашиглан нэмсэн runStepper () аргад дууддаг (stepper.run () гэж нэрлэдэг). Жижиг Serial Tx буфер дүүрсэний дараа цэс болон гаралтын хэвлэх мэдэгдэл нь ноорогыг хаасан тул энэ нь асуудлыг бүрэн шийдэж чадаагүй юм. Үүнийг хаахаас сэргийлэхийн тулд pfodParser номын сангийн pfodBufferedStream нь 360 байтын гаралтын хэвлэх буферийг нэмэхэд ашиглагддаг бөгөөд үүнийг хэвлэх мэдэгдлийг хурдан бичиж болно. Дараа нь pfodBufferedStream нь энэ тохиолдолд 115200 -д заасан байтын хурдаар байтуудыг гаргадаг. pfodBufferedStream нь буфер дүүрсэн үед блоклох эсвэл халих тэмдэгтүүдийг хаях сонголтыг хийх ёстой. Энд буфер дүүрсэн тохиолдолд нэмэлт тэмдэгтүүдийг буулгахаар тохируулсан бөгөөд ингэснээр ноорог хаагдахгүй бөгөөд Serial -аас chars илгээхийг хүлээж байна.

Loop хоцролт (NonBlockingInput)

Давталтын хоцрогдол нь loop () аргын дараалсан дуудлагын хоорондох хамгийн их хоцролтыг хэмждэг. Энэ нь мэдрэгчийн шинэ хэмжилтийг хэрхэн хурдан боловсруулж, хөдөлгүүрийн хурдыг тохируулж болохыг тодорхойлдог. Дараа нь хэр хурдан байх нь таны хянахыг хүсч буй зүйлээс хамаарна.

Дээрх pfodBufferedStream -ийг ашиглан хэвлэсэн мэдэгдлүүдээс үүдэлтэй хоцролтыг арилгасан боловч хэрэглэгчийн оролтыг боловсруулахын тулд та оролтын эхний тэмдэгтийг авч, үлдсэн мөрийг үл тоомсорлох хэрэгтэй. PfodParer номын сан дахь NonBlockingInput анги нь давталтыг хаахгүйгээр 10mS-ийн дотор ямар ч тэмдэг хүлээж авах хүртэл readInput () ашиглан тэг тэмдэгтийг буцаах, readInput () ашиглан дараах тэмдэгтүүдийг арилгах, устгахад ашиглагддаг. ()

Мэдээжийн хэрэг, давталтын хоцрогдол нь мэдрэгчийг уншиж, шинэ хурдыг тооцоолох нэмэлт кодоор нэмэгдэх болно. Олон мэдрэгчийн номын сан нь хэмжилтийг эхлүүлэх, үр дүнг авах хооронд хоцролт (..) ашиглана. Тохиромжтой блоклохгүй хоцорсны дараа хэмжилтийг авахын тулд millisDelay-ийг ашиглахын тулд та эдгээр номын санг дахин бичих шаардлагатай болно.

Алхам 6: SpeedStepperSetup -ийг Stepper Motor болон SparkFun Redboard Turbo ашиглан ажиллуулах

StepStepper Setup -ийг Stepper Motor болон SparkFun Redboard Turbo ашиглан ажиллуулж байна
StepStepper Setup -ийг Stepper Motor болон SparkFun Redboard Turbo ашиглан ажиллуулж байна
StepStepperSetup -ийг Stepper Motor болон SparkFun Redboard Turbo ашиглан ажиллуулж байна
StepStepperSetup -ийг Stepper Motor болон SparkFun Redboard Turbo ашиглан ажиллуулж байна

SpeedStepperSetup ноорогыг бодитоор ажиллуулахын тулд танд stepper мотор, драйвер, цахилгаан хангамж хэрэгтэй бөгөөд энэ жишээнд SparkFun Redboard Turbo хэрэгтэй болно.

Дээрх утас диаграмм (pdf хувилбар) нь холболтыг харуулж байна. SpeedStepperSetup ноорог дээр SERIAL -ийн тодорхойлолтыг #SERIAL Serial1 гэж тодорхойлох

Stepper мотор, цахилгаан хангамж, жолооч ба хамгаалалт

Степпер моторын олон төрөл, хэмжээ байдаг. Энд хоёр ороомогтой 12V 350mA stepper моторыг туршихад ашигладаг. Энэ алхыг ажиллуулахын тулд танд 12V ба түүнээс дээш 350 мА -аас дээш хүчдэл хэрэгтэй.

Энэхүү номын сан нь зөвхөн чиглэл, алхам гаралтыг өгдөг тул танд stepper мотортой харилцах драйвер хэрэгтэй болно. Easy Driver болон Big Easy Driver нь моторын ороомог дахь гүйдлийг хянадаг тул та илүү өндөр хүчдэлийн тэжээлийг найдвартай ашиглах боломжтой, жишээлбэл 3.3V моторт 6V тэжээлийг ашиглах боломжтой. Easy Driver нь 150мА/ороомог ба 700мА/ороомог хооронд нийлүүлэх боломжтой. Өндөр гүйдлийн хувьд Big Easy Driver нь ороомог бүрт 2А хүртэл нийлүүлэх боломжтой. Easy Drive хуудасны доод талд байгаа FAQ -ийг уншина уу.

Эдгээр жишээнд D6 ба D7 -ийг алхам ба чиглэлийн гаралт болгон ашигладаг. Та ноорогны дээд хэсэгт байрлах STEP_PIN болон DIR_PIN тохиргоог өөрчилснөөр гаралтын зүүг дижитал гаралт болгон өөрчилж болно.

Sparkfun Redboard Turbo програмчлах

Redboard Turbo програмчлах нь асуудалтай байдаг. Хэрэв програм хийж чадахгүй бол эхлээд reset товчлуурыг нэг дараад Arduino Tools цэсэн дэх COM портыг дахин сонгоод дахин оролдоно уу. Хэрэв энэ нь тус болохгүй бол дахин тохируулах товчлуурыг хоёр удаа дараад дахин оролдоно уу.

Энгийн драйверийг холбох

Хоёр ороомогтой stepper мотор нь 4 утастай. Мультиметр ашиглан ороомог бүрт холбогддог хосуудыг хайж олоод дараа нь нэг ороомгийг Easy Driver A терминал руу, нөгөө ороомогыг В терминал руу холбоно. Хөдөлгөөний чиглэлийг солихын тулд тохиргооны цэсэн дэх s cmd -ийг ашиглаж болох тул утсыг аль талаас нь утсаар хийх нь хамаагүй.

Моторын тэжээлийн хангамж нь M+ ба GND -д холбогдсон бөгөөд самбарын логик түвшинг 3/5V холбоосоор тохируулна. SparkFun Redboard Turbo гэх мэт 3.3V микропроцессорын гаралтын холбоосыг богино холбож өг (хэрэв та үүнийг нээлттэй орхивол 5V дижитал дохионд тохиромжтой, жишээ нь UNO, Mega) GND, STEP, DIR тээглүүрийг GND микропроцессортой холбож, dir гаралтын тээглүүр. Моторыг жолоодохын тулд өөр холболт шаардлагагүй.

USB - TTL цуваа кабель

SpeedStepperSetup -ийн тоймыг Uno/Mega -аас Redboard Turbo руу шилжүүлэхдээ та #define SERIAL Serial -ийг #define SERIAL SerialUSB -ээр сольж, Redboard Turbo -ийн USB цуваа холболттой тааруулж болох боловч алхам алхмын хоцрогдол нь ойролцоогоор 10 мС байна. Энэ нь НҮБ -аас 10 дахин удаан юм. Энэ нь Redboard cpu нь USB холболтыг хэрхэн зохицуулдагтай холбоотой юм. Үүнийг даван туулахын тулд USB -ийг TTL цуваа кабелийг D0/D1 -д холбож, step хөдөлгүүрийг хянахын тулд тоног төхөөрөмжийн цуваа холболтыг ашиглахын тулд SERIAL Serial1 -ийг тодорхойлно уу. Serial1 -ийг ашигласнаар LATENCY: stepper: 345uS давталт: 2016uS нь UNO -ээс 3 дахин хурдан бөгөөд алхам ба давталтын хоцролтын хувьд

Терминал програм

Arduino Serial Monitor -ийг stepper моторыг удирдахад ашиглахад арай хэцүү байдаг, учир нь та cmd мөрөнд char оруулаад Enter дарж илгээнэ үү. Илүү хурдан хариу үйлдэл үзүүлэх арга бол USB -ээс TTL кабелийн COM порт руу холбогдсон компьютерын TeraTerm (эсвэл CoolTerm Mac) терминалын цонхыг нээх явдал юм. Дараа нь тэр цонхонд cmd товчлуур дарахад тэр даруй илгээгддэг. Enter дарахад хоосон мөр илгээнэ үү.

Моторын хурдны хүрээг тохируулах

Дээр дурдсанчлан Easy Drive нь 1/8 -р алхамаар тохируулагдсан тул 1000 алхам/сек нь хөдөлгүүрийг 1000/8/200 алхам/эргэлт = 0.625 эргэлт эсвэл хамгийн ихдээ 37.5 эрг/мин эргүүлэх болно. Оролтыг MS1/MS2 болгон өөрчилснөөр та 1/8, ¼, ½ болон бүтэн алхамуудын хооронд шилжиж болно. Бүрэн алхам хийхийн тулд MS1 болон MS2 хоёуланг нь GND руу холбоно уу. Энэ нь 300 эрг / мин хүртэл хурдыг зөвшөөрөх болно. Тохирох MS1/MS2 тохиргоог сонгох нь мотор болон жолоодож буй хэсгийн хооронд суурилуулсан арааны харьцааг тохируулах боломжийг танд олгоно.

Тоног төхөөрөмжийн хамгаалалт

SpeedStepper номын сан нь моторын хөдөлгөөний байрлалын хязгаарыг тогтоох боломжийг олгодог бол програм хангамжийн гаргасан алхмуудыг тоолох замаар байрлалыг хянах ажлыг гүйцэтгэдэг. Хэрэв мотор зогсвол, өөрөөр хэлбэл момент нь дараагийн алхамд хөдөлгүүрийг жолоодоход хангалтгүй байвал програм хангамжийн байрлал нь хөдөлгүүрийн байрлалтай синхрончлогдох болно. Дараа нь 'goHome' командыг ашиглавал мотор гэрийн байрлалыг давах болно. Тоног төхөөрөмжийн эвдрэлээс урьдчилан сэргийлэхийн тулд та моторын тэжээлийн хангамжийг таслахын тулд хатуу унтраалгыг тохируулах ёстой

Моторын гүйдлийн хязгаарыг тохируулж байна

Нэгдүгээрт, потенциометрийн хамгийн доод тохиргоог хий. өөрөөр хэлбэл TP1 дээрх хүчдэл хамгийн бага байна. Потенциометр нь нарийн тул потенциометрийг механик зогсолтын хажуугаар шахаж болохгүй. Мотор жолоодохдоо бага хурдтайгаар аажмаар, дараа нь потенциометрийг аажмаар эргүүлж, мотор нь алхамуудын хооронд алгасахгүй эсвэл хөдөлдөггүй.

Дүгнэлт

Энэхүү төсөл нь SpeedStepper номын санг практик хэрэглээнд хэрхэн ашиглахыг харуулсан болно. AccelStepper номын сан нь байрлалыг сайн хянаж чаддаг боловч Европт биологийн дээж цуглуулах прототипийн мөс хайлах туршилтын хурдыг хянах шаардлагатай байсан тул AccelStepper номын сангийн хурдыг хязгаарын хязгаар болон goHome функцээр хангах зорилгоор дахин бичсэн болно.

Зөвлөмж болгож буй: