Բովանդակություն:

Stepper արագության կառավարման ընտրացանկ Arduino- ի համար. 6 քայլ
Stepper արագության կառավարման ընտրացանկ Arduino- ի համար. 6 քայլ

Video: Stepper արագության կառավարման ընտրացանկ Arduino- ի համար. 6 քայլ

Video: Stepper արագության կառավարման ընտրացանկ Arduino- ի համար. 6 քայլ
Video: BTT Manta M8P v2 - Basics with CB1 v2.2 2024, Հուլիսի
Anonim
Stepper արագության կառավարման ընտրացանկ Arduino- ի համար
Stepper արագության կառավարման ընտրացանկ Arduino- ի համար
Stepper արագության կառավարման ընտրացանկ Arduino- ի համար
Stepper արագության կառավարման ընտրացանկ Arduino- ի համար
Stepper Speed Control- ի ընտրացանկը շարժվում է Arduino- ի համար
Stepper Speed Control- ի ընտրացանկը շարժվում է Arduino- ի համար

Այս SpeedStepper գրադարանը AccelStepper գրադարանի վերաշարադրումն է, որը թույլ է տալիս արագընթաց կառավարել սլաքի շարժիչը: SpeedStepper գրադարանը թույլ է տալիս փոխել շարժիչի սահմանված արագությունը, այնուհետև արագացնել/դանդաղեցնել մինչև նոր արագության արագությունը ՝ օգտագործելով նույն ալգորիթմը, ինչ AccelStepper գրադարանը: SpeedStepper գրադարանը թույլ է տալիս նաև սահմանել գումարած և մինուս սահման և «տնային» դիրք: Կա goHome հրաման ՝ վերադառնալ տնային դիրքի:

Սահմանափակումներ. SpeedStepper գրադարանը քշում է միայն ուղղության և քայլի ելքերը և, հետևաբար, պետք է միացված լինի շարժիչի վարորդին, ինչպիսին է Easy Driver- ը, որպեսզի իրականում քշի շարժիչը: AccelStepper գրադարանը տրամադրում է մեքենա վարելու ավելի շատ տարբերակներ, որոնք անհրաժեշտության դեպքում կարող են պատճենվել այս գրադարանում:

Տրված են երեք օրինակ էսքիզներ, որոնցից յուրաքանչյուրը կարող է վարվել առանց շարժիչի կամ շարժիչի վարորդի: speedStepperPlot էսքիզը թողարկում է արագության հրամանների օրինակ և goHome հրամանը և առաջացնում արագության և դիրքի գծապատկեր: SpeedStepperSetup էսքիզն ապահովում է ընտրացանկով պայմանավորված կարգավորում `շարժիչի տունն ու սահմանները սահմանելու համար, այնուհետև շարժիչը գործարկելու և արագությունը բարձրացնելու և իջեցնելու համար և գնացեք տուն ավարտելու համար: SpeedStepperProfile էսքիզը ցույց է տալիս արագության պրոֆիլի տեղադրման և կատարման օրինակ:

Մինչ AccelStepper գրադարանը ապահովում է դիրքի լավ վերահսկողություն, արագության վերահսկում էր անհրաժեշտ Եվրոպայում կենսաբանական նմուշներ հավաքելու համար սառույցը հալեցնող նախատիպի զոնդի համար: Ահա նախատիպի ավելի վաղ տարբերակի տեսանյութը, որը շարժիչի փոխարեն օգտագործում էր քաշը: Վերանայումը 1.1 ավելացրեց արագության պրոֆիլներ այն բանից հետո, երբ օգտվողը պահանջեց միջոց պոմպի արագության պրոֆիլը վերահսկելու համար:

Այս գրադարանը աշխատում է Arduino Uno- ով և Mega2560- ով, սակայն նախատիպի համար օգտագործվել է ավելի մեծ հիշողություն / ավելի արագ պրոցեսոր SparkFun Redboard Turbo:

Այս հրահանգը հասանելի է նաև առցանց ՝ Stepper արագության կառավարման գրադարանում Arduino- ի համար

Պարագաներ

Օրինակն ուրվագծելու համար անհրաժեշտ են միայն Arduino UNO կամ Mega2560 և ծրագրային գրադարաններ

Գրադարանի նստարանային փորձարկման համար SparkFun Redboard Turbo- ն օգտագործվել է Easy Driver- ով, 200 քայլ/պտույտ, 12V 350mA շարժիչով և 12 DC սնուցման 2A կամ ավելի մեծ հզորությամբ, օրինակ. https://www.sparkfun.com/products/14934: USB A to Micro cableUSB to TTL Serial Cable Arduino IDE V1.8.9 և համակարգիչ `այն գործարկելու համար: SpeedStepper librarypfodParser գրադարան nonBlockingInput և pfodBufferedStream դասերի համար millis Հետաձգման գրադարան ոչ արգելափակման ուշացումների համար

Քայլ 1: Գրադարանի գործառույթները

SpeedStepper գրադարանն աշխատում է գրադարանի կողմից սահմանված սահմաններով սահմանափակող շարժիչով: Տե՛ս SpeedStepper.h ֆայլը ՝ մատչելի գրադարանային տարբեր մեթոդների համար: Ահա դրանց հիմքում ընկած տրամաբանության ուրվագիծը:

Քայլի դիրքին հետևում են քայլերի (իմպուլսների) քանակը հաշվելով: Գրադարանը սահմանափակում է դիրքը setPlusLimit (int32_t) և setMinusLimit (int32_t) դիրքերի միջև: Պլյուսի սահմանը միշտ> = 0 է, իսկ մինուս սահմանը `միշտ <= 0. Գործարկման ժամանակ շարժիչի դիրքը 0 է (տուն), իսկ սահմանները սահմանվում են շատ մեծ +/- թվերի վրա (մոտ +/- 1e9 քայլ): setAcceleration (float) սահմանում է, թե որքան արագ շարժիչը կփոխի արագությունը վեր կամ վար: Երբ շարժիչը մոտենում է գումարած կամ մինուս սահմանին, այն կդանդաղի այս արագությամբ, մինչև կանգ առնի սահմանագծին: Գործարկման ժամանակ արագացումը սահմանվում է 1.0 քայլ/վրկ/վրկ: Արագացման պարամետրը միշտ +ve թիվ է: SetSpeed (float) կարգավորման նշանը սահմանում է շարժիչի շարժման ուղղությունը:

setSpeed (float) սահմանում է շարժիչի արագացման / դանդաղեցման արագությունը ՝ ընթացիկ արագությունից: Արագությունը, որը կարող է սահմանվել setSpeed- ի (float) միջոցով, բացարձակ արժեքով սահմանափակված է պարամետրերով, setMaxSpeed (float), կանխադրված 1000 քայլ/վրկ և setMinSpeed (float), կանխադրված 0.003 քայլ/վրկ: Այս կանխադրվածները նաև բացարձակ կոշտ արագության սահմանափակումներ են, որոնք գրադարանը կընդունի setMaxSpeed () և setMinSpeed () համար: Եթե ցանկանում եք սահմանել առավելագույն արագություն> 1000 քայլ/վրկ, ապա ձեզ հարկավոր է խմբագրել SpeedStepper.cpp ֆայլի առաջին տողը ՝ maxMaxSpeed (1000) - ը ձեր ուզած առավելագույն արագությանը փոխելու համար: Գործնականում առավելագույն արագությունը նույնպես սահմանափակվում է գրադարանի run () մեթոդով զանգերի միջև ընկած ժամանակահատվածով: 1000 քայլ / վրկ վազքի () մեթոդը պետք է կանչվի առնվազն յուրաքանչյուր 1 մՍ: Տե՛ս Latency բաժինը ստորև:

Min- ից փոքր արագություն սահմանելու փորձը կհանգեցնի շարժիչի կանգառի: Այս կարգավորիչներից յուրաքանչյուրն ունի համապատասխան ձեռքբերող, տես SpeedStepper.h ֆայլը: Արագության համար getSetSpeed () - ը վերադարձնում է setSpeed () - ի միջոցով ձեր սահմանած արագությունը, մինչդեռ getSpeed () - ը վերադարձնում է շարժիչի ընթացիկ արագությունը, որը տատանվում է արագացման/դանդաղեցման դեպքում ՝ ձեր սահմանած արագությունը: Եթե շարժիչը չի գնում այն ուղղությամբ, որի մասին կարծում եք a +ve, կարող եք զանգահարել invertDirectionLogic () ՝ շարժիչը +ve արագությունների ուղղությամբ փոխելու համար:

getCurrentPosition () վերադարձնում է շարժիչի ընթացիկ դիրքը «տան» համեմատ (0): Կարող եք անտեսել ընթացիկ շարժիչի դիրքի setCurrentPosition (int32_t): Նոր պաշտոնը սահմանափակվում է սահմանված գումարած/մինուս սահմաններում:

Սկզբում շարժիչը կանգնեցված է 0 դիրքում: SetSpeed (50.0) կանչը կհանգեցնի նրան, որ +ve ուղղությամբ կսկսի արագանալ մինչև 50 քայլ/րոպե առավելագույն արագություն: Hardանգահարելով hardStop () - ին ՝ անմիջապես կդադարեցնի շարժիչը այնտեղ, որտեղ այն գտնվում է: Մյուս կողմից, կանգ () մեթոդը կանչելը արագությունը կդարձնի զրոյի և կդանդաղի շարժիչը մինչև կանգառ: StopAndSetHome () - ին զանգելը անմիջապես կդադարեցնի շարժիչը և կդնի իր դիրքը 0 -ի: Պլյուս/մինուս սահմանաչափերը չեն փոխվում, բայց այժմ դրանք վերաբերում են 0 (տնային) այս նոր դիրքին: Goանգահարելով goHome- ին () կվերադարձվի այս 0 (տնային) դիրքը և կդադարի: SetSpeed () - ին զանգելը չեղյալ կհայտարարի տուն գնալը:

SpeedStepper գրադարանը նաև ապահովում է արագության պրոֆիլի վերահսկում setProfile (SpeedProfileStruct* profileArray, size_t arrayLen), startProfile (), stopProfile (), ընթացիկ պրոֆիլը ընդհատելու և isProfileRunning () մեթոդների միջոցով: Տեսեք speedStepperProfile- ի օրինակի ուրվագիծը:

Քայլ 2. Գործարկեք SpeedStepperPlot- ի օրինակն առանց շարժիչի

SpeedStepperPlot օրինակի գործարկում առանց շարժիչի
SpeedStepperPlot օրինակի գործարկում առանց շարժիչի

Տեղադրեք և տեղադրեք SpeedStepper գրադարանը Պահպանեք SpeedStepper.zip- ը և այնուհետև օգտագործեք Arduino IDE ընտրացանկի տարրը Էսքիզ → Ներառել գրադարան → Ավելացնել. ZIP գրադարան ՝ գրադարան ներմուծելու համար Ներբեռնեք և տեղադրեք նաև millisDelay գրադարանը

Բացեք Օրինակներ → SpeedStepper → speedStepperPlot օրինակի ուրվագիծը (անհրաժեշտության դեպքում վերագործարկեք IDE- ն): Այս ուրվագիծը կազմաձևված է Սերիայի հետ աշխատելու համար, օրինակ. UNO և Mega և այլն: SparkFun Redboard Turbo- ով աշխատելու համար տե՛ս ստորև:

Այս օրինակը գործարկելու համար վարորդի տախտակ կամ սլաք շարժիչ պետք չէ: Այս օրինակները օգտագործում են D6 և D7- ը որպես ելքեր: Դուք կարող եք ելքային կապերը փոխել ցանկացած թվային ելքի ՝ էսքիզի վերևի մոտ փոփոխելով STEP_PIN և DIR_PIN կարգավորումները:

Վերբեռնեք էսքիզը տախտակի վրա, այնուհետև բացեք Tools → Serial Plotter 115200 baud հասցեով ՝ արագության (ԿԱՐՄԻՐ) և դիրքի (ԿԱՊՈ) գծապատկերը ցույց տալու համար: Պլյուսի սահմանաչափը սահմանվում է 360, ինչը մոտ 100 կետից արագության զրոյի հասցնելու պատճառ է դառնում: x առանցքի վրա: Մինուս սահմանը -510 է: Դիրքը դադարում է ~ -390-ի վրա, քանի որ արագությունը պահանջվել է մինչև 0.0: X առանցքի 380 կետում թողարկվում է goHome cmd- ը, որը քայլը վերադարձնում է զրոյական դիրքի:

Այս speedStepperPlot էսքիզը օգտագործում է millisDelays տարբեր արագությունների և արագացումների միջև ժամանակի փոխանակումը: Շատ դեպքերում SpeedStepperProfile- ի օգտագործումը, ինչպես հաջորդ օրինակում, ավելի պարզ է:

Քայլ 3. Գործարկեք SpeedStepperProfile- ի օրինակն առանց շարժիչի

SpeedStepperProfile- ի օրինակի գործարկում առանց շարժիչի
SpeedStepperProfile- ի օրինակի գործարկում առանց շարժիչի

Բացեք Օրինակներ → SpeedStepper → speedStepperPlot օրինակի ուրվագիծը, այս ուրվագիծը տալիս է վերը նշված գծապատկերը ՝ օգտագործելով Arduino սերիական գծապատկերը և օրինակ է պոմպը գործարկելու սահմանված արագության պրոֆիլի գործարկման օրինակ:

Stepper Speed Profiles- ը կազմված է SpeedProfileStruct- ի զանգվածից, որը սահմանված է SpeedStepper.h ֆայլում:

struct SpeedProfileStruct {

բոց արագություն; // թիրախային արագությունը այս քայլի վերջում անստորագիր երկար deltaTms; // ընթացիկ արագությունից (այս քայլի սկզբում) դեպի նպատակային արագություն արագացնելու ժամանակը};

Սահմանեք SpeedProfileStruct- ի զանգված, որը պարունակում է յուրաքանչյուր քայլի թիրախային արագություն և ժամանակ, deltaTms, mS, նախորդ նպատակային արագությունից այդ նպատակային արագությանը հասնելու համար: Եթե deltaTms- ը զրո է կամ շատ փոքր, ապա արագությունը պարզապես անմիջապես կթռչի դեպի նոր նպատակային արագությունը: Հակառակ դեպքում, պահանջվող արագացումը կհաշվարկվի setAcceleration () կկանչվի, որին կհաջորդի նոր նպատակային արագության setSpeed () զանգը: Բոլոր դեպքերում պրոֆիլը կսահմանափակվի առկա գումարած և մինուս դիրքի սահմանափակումներով և առավելագույն/րոպե արագության կարգավորումներով: Եթե ցանկանում եք պահել արագությունը, պարզապես կրկնեք նախորդ արագությունը ձեր ուզած ժամանակով: Քանի որ թիրախային նոր արագությունը նույնն է, ինչ ընթացիկ արագությունը, հաշվարկված արագացումը կլինի զրոյական, և արագությունը չի փոխվի:

Այս SpeedProfileStruct զանգվածը արտադրեց վերը նշված սյուժեն

const SpeedProfileStruct պրոֆիլ = {{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, 2000}, // թեքահարթակ դեպի 50 {0, 0}, // // ընդմիշտ կանգ առնել {0, 1000} // պահել զրոյը // ելքը գծագրելու համար}; const size_t PROFILE_LEN = sizeof (պրոֆիլ) / sizeof (SpeedProfileStruct); // հաշվարկել պրոֆիլի զանգվածի չափը

Պրոֆիլը սահմանվում է ՝ զանգահարելով setProfile (SpeedProfileStruct* profileArray, size_t arrayLen), օրինակ. stepper.setProfile (պրոֆիլ, PROFILE_LEN);

Երբ պրոֆիլը դրված է, զանգահարեք startProfile () ՝ այն ընթացիկ շարժիչի արագությունից սկսելու համար (սովորաբար դուք կսկսեք կանգառից): Պրոֆիլի վերջում շարժիչը պարզապես կշարունակի աշխատել վերջին նպատակային արագությամբ: IsProfileRunning () մեթոդը կարելի է կանչել ՝ տեսնելու, թե արդյոք պրոֆիլը դեռ գործում է: Եթե ցանկանում եք պրոֆիլը վաղաժամ դադարեցնել, կարող եք զանգահարել stopProfile (), որը կհեռացնի պրոֆիլը և կդադարեցնի շարժիչը:

Քայլ 4. Գործարկեք SpeedStepperSetup օրինակն առանց շարժիչի

Էսքիզների օրինակը նախատեսված է հիմքերի վրա `ձեր սեփական շարժիչային շարժիչի կիրառման համար: Այն տրամադրում է մենյուով պայմանավորված ինտերֆեյս, որը թույլ է տալիս շարժիչին տեղափոխել իր սկզբնական դիրքը, եթե այն արդեն այնտեղ չէ, և ըստ ցանկության վերականգնել գումարածի և մինուսների սահմանները, այնուհետև շարժիչը գործարկել այդ միջակայքում: «Run» ընտրացանկը թույլ է տալիս մեծացնել և նվազեցնել արագությունը, սառեցնել ընթացիկ արագությամբ, կանգ առնել և վերադառնալ տուն:

Այս ուրվագիծը պատկերում է ծրագրակազմի մի շարք հնարավորություններ, որոնք պահպանում են օղակը () արձագանքող գործառույթը, այնպես որ կարող եք ավելացնել ձեր սեփական տվիչների մուտքերը `քայլը կառավարելու համար: Paավ է պահանջվում `ուշացումներից խուսափելու համար, որոնք կխանգարեն արագության կարգավորմանը: (Տես, որ ուշացումները չարիք են)

Տեղադրեք գրադարանները, որոնք օգտագործվում են SpeedStepperPlot- ի վերևում, այնուհետև տեղադրեք նաև pfodParser գրադարանը: PfodParser գրադարանը ապահովում է NonBlockingInput և pfodBufferedStream դասերը, որոնք օգտագործվում են օգտվողի մուտքի և ընտրացանկի ելքը կարգավորելու համար ՝ loop () - ի գործարկումն արգելափակելով:

Բացեք Օրինակները → SpeedStepper → speedSpeedSetup օրինակը: Այս ուրվագիծը կազմաձևված է Սերիայի հետ աշխատելու համար, օրինակ. UNO և Mega և այլն: SparkFun Redboard Turbo- ով աշխատելու համար տե՛ս ստորև:

Այս օրինակը գործարկելու համար վարորդի տախտակ կամ սլաք շարժիչ պետք չէ: Այս օրինակները օգտագործում են D6 և D7- ը որպես ելքեր: Դուք կարող եք ելքային կապերը փոխել ցանկացած թվային ելքի ՝ էսքիզի վերևի մոտ փոփոխելով STEP_PIN և DIR_PIN կարգավորումները: Էսքիզը վերբեռնեք գրատախտակին և այնուհետև բացեք Գործիքներ → Սերիական մոնիտոր 115200 հասցեով ՝ SETUP ընտրացանկը տեսնելու համար:

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

Երբ էսքիզն աշխատում է, աստիճանի ընթացիկ դիրքը ընդունվում է որպես «տուն» (0) դիրք: Եթե Ձեզ անհրաժեշտ է վերադասավորիչը դնել իր իսկական «տան» դիրքում, մուտքագրեք p հրամանը ՝ SET HOME ընտրացանկը ցուցադրելու համար

SET HOME pos. >

Ինչպես տեսնում եք, ուրվագծում ծածկագրված սահմանափակումները հանվել են, որպեսզի կարողանաք վերադասավորողը դնել ցանկացած վայրում: Պետք է հոգ տանել, որ այն չանցնեք ֆիզիկական սահմաններից, այլապես կարող եք ինչ -որ բան խախտել:

Օգտագործեք + cmd ՝ քայլը առաջ շարժելու համար, եթե գտնում եք, որ այն սխալ ուղղությամբ է շարժվում, մուտքագրեք ոչ հրաման կամ պարզապես դատարկ տող ՝ այն կանգնեցնելու համար, այնուհետև օգտագործեք scommand- ը ՝ Փոխանցման ուղղությունը փոխելու համար: Դուք պետք է թարմացնեք ուրվագիծը ՝ կարգաբերման մեջ ներառելով զանգ to invertDirectionLogic () ՝ սա հաջորդ վազքի համար շտկելու համար:

Օգտագործեք + / - cmds- ը ՝ սլաքը ճիշտ զրոյական դիրքի տեղադրելու համար: Շարժիչը դանդաղ է սկսվում, այնուհետև արագանում է շարժման ընթացքում, պարզապես օգտագործեք այն դատարկ գծով ՝ այն կանգնեցնելու համար: Այս և սահմանների ընտրացանկի առավելագույն արագությունը սահմանվում է MAX_SETUP_SPEED- ի կողմից setupMenus.cpp- ի վերևում:

Երբ շարժիչը տեղադրվի իր «տան» դիրքում, օգտագործեք x cmd- ը `ընթացիկ դիրքը 0-ի համար նորից վերադառնալու և SETUP ընտրացանկ վերադառնալու համար:

Եթե Ձեզ անհրաժեշտ է սահմաններ սահմանել, սովորաբար միայն սկզբնական տեղադրման դեպքում, օգտագործեք l cmd ՝ SET LIMITS ընտրացանկ մուտքագրելու համար:

SET LIMITS դիր.

Օգտագործեք + 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 ATԱՄԱՆԱԿԸ: stepper: 792uS հանգույց: 5664uS pos: 238 sp: 69.06 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS

+ Cmd- ն սկսում է արագանալ առաջ ուղղությամբ և յուրաքանչյուր 2 վայրկյանը մեկ տպում է դիրքն ու արագությունը: Երբ շարժիչը հասնում է ձեր ուզած արագությանը, կարող եք դադարեցնել արագացումը ցանկացած այլ բանալիով (կամ դատարկ մուտքով): Դուք կարող եք նվազեցնել արագությունը ՝ օգտագործելով - cmd down ՝ կանգ առնելու համար: Եթե կանգնեցվի, - cmd- ն կշարունակի հակառակ ուղղությամբ:

Այս RUN ընտրացանկը ապահովում է ձեր նախագծի ձեռքով վերահսկում: Ավտոմատ կառավարման համար ձեզ հարկավոր է ավելացնել որոշ այլ տվիչներ:

Քայլ 5: Ուշացում

Կտրուկ շարժիչի կառավարումը կախված է ծրագրակազմից, որը հրամայում է յուրաքանչյուր քայլին: Սահմանված արագությունը պահպանելու համար ձեր ուրվագծին անհրաժեշտ է զանգահարել stepper.run () մեթոդը բավական հաճախ, որպեսզի հաջորդ քայլը կատարվի ընթացիկ արագության ճիշտ ժամանակին: Սենսորների միջոցով վերահսկման համար դուք պետք է կարողանաք արագորեն մշակել նոր չափումներ: Դիրքը/արագությունը տպելը ներառում է ATԱՌԱՅՈԹՅԱՆ երկու չափումներ, որոնք թույլ են տալիս ստուգել, որ ձեր ուրվագիծը բավականաչափ արագ է:

Stepper Latency (pfodBufferedStream)

The stepper latency- ը չափում է stepper.run () մեթոդին հաջորդական զանգերի միջև առավելագույն հետաձգումը: Ստեպպերատորը վայրկյանում 1000 քայլ արագությամբ գործարկելու համար, աստիճանի հետաձգումը պետք է լինի 1000uS- ից (1mS) պակաս: Այս ուրվագծի առաջին տարբերակն ուներ շատ միլիվայրկյան ուշացում: Այս լրացուցիչ զանգերը հաղթահարելու համար runStepper () մեթոդը (որը կանչում է stepper.run ()), որտեղ ավելացվում է կոդի միջոցով: Սա ամբողջովին չլուծեց խնդիրը, քանի որ ընտրացանկի և ելքի տպման հայտարարությունները արգելափակեցին ուրվագիծը, երբ փոքր Serial Tx բուֆերը լցվեց: Այս արգելափակումից խուսափելու համար pfodBufferedStream- ը pfodParser գրադարանից օգտագործվեց 360 բայթ ելքային տպման բուֆեր ավելացնելու համար, որին տպման հայտարարությունները կարող էին արագ գրել: Այնուհետեւ pfodBufferedStream- ը թողարկում է բայթերը այս դեպքում 115200- ի սահմանած baud արագությամբ: pfodBufferedStream- ը պետք է տարբերակ ունենա կամ արգելափակել, երբ բուֆերը լիքն է, կամ պարզապես թողնել արտահոսքի նշանները: Այստեղ նախատեսվում է թողնել ցանկացած լրացուցիչ նշան, երբ բուֆերը լիքն է, որպեսզի ուրվագիծը չփակվի `սպասելով, որ Սերիալը գծեր ուղարկի:

Loop Latency (NonBlockingInput)

Օղակի ուշացումը չափում է հանգույցի () մեթոդին հաջորդական զանգերի միջև առավելագույն ուշացումը: Սա սահմանում է, թե որքան արագ կարող եք մշակել նոր սենսորային չափումներ և կարգավորել շարժիչի արագության արագությունը: Որքան արագ պետք է լինի, կախված է նրանից, թե ինչ եք փորձում վերահսկել:

Տպագիր հայտարարությունների պատճառով ուշացումները հեռացվեցին վերը նշված pfodBufferedStream- ի միջոցով, սակայն օգտվողի մուտքագրումը մշակելու համար հարկավոր է վերցնել մուտքի հենց առաջին նշանը և անտեսել տողի մնացած մասը: PFodParer գրադարանում NonBlockingInput դասը օգտագործվում է մուտքի դեպքում ոչ զրոյական նշան վերադարձնելու համար ՝ օգտագործելով readInput (), և մաքրելու և հանելու համար հետևյալ կերպարները ՝ օգտագործելով clearInput (), մինչև որ 10 մՍ-ի համար առանց օղակի արգելափակման նշաններ չստանան: ()

Իհարկե, հանգույցի հետաձգումը կավելանա լրացուցիչ ծածկագրով, որը դուք ավելացնում եք ՝ տվիչները կարդալու և նոր արագության հաշվարկման համար: Շատ սենսորային գրադարաններ օգտագործում են չափման սկսման և արդյունքը գտնելու միջև պարզապես հետաձգման (..) օգտագործումը: Դուք պետք է նորից գրեք այս գրադարանները ՝ փոխարենը millisDelay օգտագործելու համար, չափումը վերցնելու համար համապատասխան ոչ արգելափակման ուշացումից հետո:

Քայլ 6. SpeedStepperSetup- ի գործարկում Stepper Motor- ով և SparkFun Redboard Turbo- ով

Գործող SpeedStepperSetup With Stepper Motor և SparkFun Redboard Turbo
Գործող SpeedStepperSetup With Stepper Motor և SparkFun Redboard Turbo
Գործող SpeedStepperSetup With Stepper Motor և SparkFun Redboard Turbo
Գործող SpeedStepperSetup With Stepper Motor և SparkFun Redboard Turbo

SpeedStepperSetup էսքիզն իրական գործարկելու համար ձեզ հարկավոր կլինի stepper շարժիչ, վարորդ և սնուցման աղբյուր, իսկ այս օրինակում ՝ SparkFun Redboard Turbo:

Վերը նշված էլեկտրագծերի դիագրամը (pdf տարբերակ) ցույց է տալիս միացումները: SpeedStepperSetup ուրվագծում SERIAL- ը փոխեք #սահմանեք SERIAL Serial1

Stepper Motor, Power Supply, Driver and Protection

Գոյություն ունեն տիպի շարժիչների բազմաթիվ տեսակներ և չափեր: Այստեղ փորձարկման համար օգտագործվում է երկու կծիկ 12V 350mA ստեպեր շարժիչ: Այս սլաքը սնուցելու համար ձեզ անհրաժեշտ է 12 Վ կամ ավելի կամ ավելի քան 350 մԱ էներգիա:

Այս գրադարանը տրամադրում է միայն ուղղություն և քայլային ելք, այնպես որ ձեզ անհրաժեշտ է վարորդ, որը պետք է ինտերֆեյսի տիպի շարժիչին: Easy Driver- ը և Big Easy Driver- ը վերահսկում են շարժիչի պարույրների հոսանքը, այնպես որ կարող եք ապահով օգտագործել բարձր լարման սնուցման աղբյուր, օրինակ ՝ 3.3 Վ շարժիչի համար 6 Վ լարման միջոցով: Հեշտ վարորդը կարող է մատակարարել 150 մԱ/կծիկից մինչև 700 մԱ/կծիկ: Ավելի բարձր հոսանքների դեպքում Big Easy Driver- ը կարող է մատակարարել մինչև 2 Ա մեկ կծիկ: Կարդացեք Հաճախ տրվող հարցերը Easy Drive էջի ներքևում:

Այս օրինակները օգտագործում են D6 և D7- ը որպես Քայլ և ուղղություն արդյունքներ: Դուք կարող եք ելքային կապերը փոխել ցանկացած թվային ելքի ՝ էսքիզի վերևի մոտ փոփոխելով STEP_PIN և DIR_PIN կարգավորումները:

Sparkfun Redboard Turbo- ի ծրագրավորում

Redboard Turbo- ի ծրագրավորումը խնդրահարույց է:Եթե այն չի հաջողվում ծրագրավորել, նախ մեկ անգամ սեղմեք «Վերականգնել» կոճակը և նորից ընտրեք COM նավահանգիստը Arduino Tools- ի ընտրացանկում և նորից փորձեք: Եթե դա չի աշխատում, կրկնակի սեղմեք «Վերականգնել» կոճակը և նորից փորձեք:

Հեշտ վարորդի միացում

Երկու կծիկով քայլող շարժիչներ ունեն 4 լար: Օգտագործեք մուլտիմետր ՝ յուրաքանչյուր կծիկին միացնող զույգերը գտնելու համար, այնուհետև մի կծիկ միացրեք Easy Driver A տերմինալներին, իսկ մյուսը ՝ B տերմինալին: Կարևոր չէ, թե որ ուղղությամբ եք դրանք միացնում, քանի որ կարող եք օգտագործել s cmd- ն կարգավորումների ցանկում ՝ շարժման ուղղությունը փոխելու համար:

Շարժիչի սնուցման աղբյուրը միացված է M+ և GND- ին: Սահմանեք տախտակի տրամաբանական մակարդակը 3/5V կապով: Կարճացրեք կապը 3.3V միկրոպրոցեսորային ելքերի համար, ինչպես SparkFun Redboard Turbo- ն (եթե բաց եք թողնում, այն հարմար է 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- ի պրոցեսորը վարում USB կապը: Այս խնդիրը լուծելու համար USB- ը TTL սերիալային մալուխին միացրեք D0/D1- ին և դրեք#define SERIAL Serial1 ՝ սարքավորումների սերիական միացումն օգտագործելու համար ՝ սլաքի շարժիչը կառավարելու համար: Serial1- ի օգտագործումը տալիս է LATENCY: stepper: 345uS հանգույց: 2016uS, որը 3 անգամ ավելի արագ է, քան UNO- ն `stepper and loop latenence- ի համար:

Տերմինալ ծրագիր

Arduino- ի սերիական մոնիտորը մի փոքր ավելի դժվար է օգտագործել stepper շարժիչը կառավարելու համար, քանի որ cmd տողում պետք է մուտքագրել նշանը, այնուհետև այն ուղարկելու համար սեղմել Enter: Ավելի արագ արձագանքող միջոց է բացել տերմինալային պատուհան ՝ TeraTerm համակարգչի համար (կամ CoolTerm Mac), որը միացված է USB- ին TTL մալուխի COM պորտին: Այնուհետև այդ պատուհանում, սեղմելով 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 գործառույթով:

Խորհուրդ ենք տալիս: