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

Arduino: Precision Lib for Stepper Motor: 19 քայլ
Arduino: Precision Lib for Stepper Motor: 19 քայլ

Video: Arduino: Precision Lib for Stepper Motor: 19 քայլ

Video: Arduino: Precision Lib for Stepper Motor: 19 քայլ
Video: Stepper Motors and Arduino - The Ultimate Guide 2024, Նոյեմբեր
Anonim
Image
Image
Գլոբալ փոփոխականներ
Գլոբալ փոփոխականներ

Այսօր ես ձեզ ցույց կտամ լիարժեք շարժիչով վարորդի սահմանափակ անջատիչներով գրադարան, իսկ շարժիչի շարժումը արագացումով և միկրոքայլով: Այս Lib- ը, որն աշխատում է ինչպես Arduino Uno- ի, այնպես էլ Arduino Mega- ի վրա, թույլ է տալիս շարժիչները շարժել ոչ միայն քայլերի քանակի, այլև միլիմետրերի հիման վրա: Եվ դա նույնպես բավականին ճշգրիտ է:

Այս գրադարանի կարևոր առանձնահատկությունն այն է, որ այն թույլ է տալիս կառուցել ձեր սեփական CNC մեքենան, որը պարտադիր չէ միայն X, Y, այլ նաև հատվածի անջատիչ, օրինակ, քանի որ այն պատրաստ GRBL չէ, այլ այն ծրագրավորումն է, որը թույլ է տալիս կատարել իդեալական մեքենա ձեզ համար:

Այնուամենայնիվ, հետևյալ հայտարարությունը կարևոր մանրամասնություն է: Այս տեսանյութը միայն նրանց համար է, ովքեր արդեն սովոր են ծրագրավորման: Եթե դուք ծանոթ չեք Arduino ծրագրավորմանը, ապա նախ պետք է դիտեք այլ ավելի շատ ներածական տեսանյութեր իմ ալիքում: Դա պայմանավորված է նրանով, որ այս կոնկրետ տեսանյութում ես քննարկում եմ առաջադեմ թեմա և ավելի մանրամասն բացատրում տեսանյութում օգտագործվող Lib- ը ՝ Step Motor with Acceleration and End of Stroke:

Քայլ 1: StepDriver գրադարան

Այս գրադարանը ներառում է շուկայում երեք ամենատարածված վարորդների տեսակները ՝ A4988, DRV8825 և TB6600: Այն կազմաձևում է վարորդների կապերը ՝ թույլ տալով նրանց կատարել վերականգնում և տեղադրում Քնի ռեժիմ, ինչպես նաև ակտիվացնել և ապաակտիվացնել շարժիչի ելքերը, որոնք գործում են Enable կապում: Այն նաև սահմանում է վարորդի միկրոքայլ քորոցների մուտքերը և սահմանափակում անջատիչների և դրանց ակտիվացման մակարդակը (բարձր կամ ցածր): Այն ունի նաև շարժիչի շարժման կոդ ՝ մմ / վ² շարունակական արագացումով, առավելագույն արագություն ՝ մմ / վ, և նվազագույն արագություն ՝ մմ / վ:

Նրանց համար, ովքեր դիտել են Step Motor- ի արագացման և հարվածի ավարտի տեսահոլովակի 1 -ին և 2 -րդ մասերը, ներբեռնեք այսօր հասանելի այս նոր գրադարանը, քանի որ ես որոշ փոփոխություններ եմ կատարել այդ առաջին ֆայլում `դրա օգտագործումը հեշտացնելու համար:

Քայլ 2: Գլոբալ փոփոխականներ

Ես հստակ ցույց եմ տալիս, թե գլոբալ փոփոխականներից յուրաքանչյուրը ինչի համար է:

Քայլ 3. Գործառույթներ - Վարորդի կապում կարգավորելը

Գործառույթներ - Վարորդի կապում տեղադրելը
Գործառույթներ - Վարորդի կապում տեղադրելը

Այստեղ ես նկարագրում եմ որոշ մեթոդներ:

Որպես ելք դրեցի Pinout- ի կարգավորումը և Arduino- ի կապում:

Քայլ 4. Գործառույթներ - Վարորդի հիմնական գործառույթները

Գործառույթներ - Վարորդի հիմնական գործառույթները
Գործառույթներ - Վարորդի հիմնական գործառույթները

Այս մասում մենք աշխատում ենք վարորդի կազմաձևման և դրա հիմնական գործառույթների հետ:

Քայլ 5. Գործառույթներ - Շարժիչային քայլի կարգավորում

Գործառույթներ - Շարժիչային քայլի կարգավորում
Գործառույթներ - Շարժիչային քայլի կարգավորում
Գործառույթներ - Շարժիչային քայլի կարգավորում
Գործառույթներ - Շարժիչային քայլի կարգավորում

Կոդի այս քայլում մենք կարգավորում ենք մեկ միլիմետրի քայլերի քանակը, որոնք շարժիչը պետք է կատարի:

Քայլ 6: Գործառույթներ - Շարժիչի քայլի ռեժիմի կարգավորում

Գործառույթներ - Շարժիչի քայլի ռեժիմի կարգավորում
Գործառույթներ - Շարժիչի քայլի ռեժիմի կարգավորում
Գործառույթներ - Շարժիչի քայլի ռեժիմի կարգավորում
Գործառույթներ - Շարժիչի քայլի ռեժիմի կարգավորում
Գործառույթներ - Շարժիչի քայլի ռեժիմի կարգավորում
Գործառույթներ - Շարժիչի քայլի ռեժիմի կարգավորում

Այս աղյուսակը ցույց է տալիս շարժիչի քայլի ռեժիմի կարգավորումները: Ահա մի քանի օրինակ:

Քայլ 7: Գործառույթներ - Սահմանափակիչ անջատիչների սահմանում

Գործառույթներ - Սահմանափակիչ անջատիչների սահմանում
Գործառույթներ - Սահմանափակիչ անջատիչների սահմանում

Այստեղ ես պետք է կարդամ ամբողջական և բուլյան արժեքները: Անհրաժեշտ է սահմանել, թե արդյոք ակտիվ բանալին վեր կամ վար է, միաժամանակ սահմանելով առավելագույն և նվազագույն սահմանաչափի վերջնակետը:

Քայլ 8. Գործառույթներ - Սահմանափակիչ անջատիչների ընթերցում

Գործառույթներ - Սահմանափակող անջատիչների ընթերցում
Գործառույթներ - Սահմանափակող անջատիչների ընթերցում
Գործառույթներ - Սահմանափակող անջատիչների ընթերցում
Գործառույթներ - Սահմանափակող անջատիչների ընթերցում
Գործառույթներ - Սահմանափակող անջատիչների ընթերցում
Գործառույթներ - Սահմանափակող անջատիչների ընթերցում

Այս հատվածը տարբերվում է Lib- ի այն հատվածից, որը ես հասանելի դարձրի անցյալ շաբաթ: Ինչու՞ փոխեցի այն: Դե, ես ստեղծեցի eRead- ը ՝ որոշ ուրիշներին փոխարինելու համար: Այստեղ eRead- ը կկարդա LVL, digitalRead (pin) և կվերադառնա TRUE: Այս ամենը պետք է կատարել բարձր մակարդակով: Հետևյալ աշխատանքը ակտիվ ստեղնով կլինի ցածր մակարդակի վրա: Ես այստեղ կօգտագործեմ ձեզ «uthշմարտություն» աղյուսակը ցույց տալու համար:

Կոդի պատկերում ես տեղադրեցի մի դիագրամ, որը կօգնի հասկանալ, որ սկզբնաղբյուրի այս հատվածում ես շարժվում եմ դեպի աճող և դեռ չեմ դիպել դասընթացի ավարտի բանալին:

Այժմ, այս պատկերի os bool DRV8825 կոդը, ես ցույց եմ տալիս, որ շարժիչը դեռ շարժվում է աճող ուղղությամբ: Այնուամենայնիվ, առավելագույն սահմանաչափի անջատիչը միացված է: Մեխանիզմը, ուրեմն, պետք է դադարեցնի շարժումը:

Ի վերջո, ես ցույց եմ տալիս նույն շարժումը, բայց հակառակ ուղղությամբ:

Այստեղ դուք արդեն ակտիվացրել եք դասընթացի ավարտի անջատիչը:

Քայլ 9. Գործառույթներ - Շարժման կարգավորում

Գործառույթներ - Շարժման կարգավորում
Գործառույթներ - Շարժման կարգավորում

MotionConfig մեթոդի հիմնական օգտակարությունն այն է, որ միլիմետրը վայրկյանում (չափում, որն օգտագործվում է CNC մեքենաներում) աստիճանների է վերածվում ՝ հետընթաց շարժիչի վերահսկիչին հանդիպելու համար: Հետևաբար, այս մասում է, որ ես փոփոխականներին հուշում եմ քայլերը հասկանալու համար, այլ ոչ թե միլիմետր:

Քայլ 10. Գործառույթներ - Շարժման գործառույթ

Գործառույթներ - Շարժման գործառույթ
Գործառույթներ - Շարժման գործառույթ

Այս քայլում մենք վերաբերվում ենք այն հրամանին, որը միկրո վայրկյանների ընթացքում քայլ է կատարում ցանկալի ուղղությամբ: Մենք նաև սահմանում ենք վարորդի ուղղության քորոցը, հետաձգման ժամանակը և սահմանային անջատիչների ուղղությունը:

Քայլ 11. Գործառույթներ - Շարժման գործառույթ - Փոփոխականներ

Գործառույթներ - Շարժման գործառույթ - Փոփոխականներ
Գործառույթներ - Շարժման գործառույթ - Փոփոխականներ

Այս մասում մենք կարգավորում ենք բոլոր այն փոփոխականները, որոնք ներառում են առավելագույն և նվազագույն արագության, հետագծի հեռավորության և հետագծի ընդհատման համար անհրաժեշտ քայլեր, ի թիվս այլոց:

Քայլ 12. Գործառույթներ - Շարժման գործառույթ - Արագացում

Գործառույթներ - Շարժման գործառույթ - Արագացում
Գործառույթներ - Շարժման գործառույթ - Արագացում
Գործառույթներ - Շարժման գործառույթ - Արագացում
Գործառույթներ - Շարժման գործառույթ - Արագացում

Այստեղ ես ներկայացնում եմ որոշ մանրամասներ այն մասին, թե ինչպես ենք մենք հասել արագացման տվյալներին, որոնք հաշվարկվել են Տորիչելիի հավասարման միջոցով, քանի որ դա հաշվի է առնում արագացումը աշխատելու տարածությունները և ոչ թե ժամանակը: Բայց, այստեղ կարևոր է հասկանալ, որ այս ամբողջ հավասարումը միայն կոդի մեկ տողի մասին է:

Մենք վերևում պատկերված ենք տրապիզի մասին, քանի որ նախնական պտույտները վատ են տատանվող շարժիչների մեծ մասի համար: Նույնը տեղի է ունենում դանդաղեցման դեպքում: Դրա պատճառով մենք պատկերացնում ենք մի trapezoid արագացման և դանդաղեցման միջև ընկած ժամանակահատվածում:

Քայլ 13: Գործառույթներ - Շարժման գործառույթ - Շարունակական արագություն

Գործառույթներ - Շարժման գործառույթ - Շարունակական արագություն
Գործառույթներ - Շարժման գործառույթ - Շարունակական արագություն
Գործառույթներ - Շարժման գործառույթ - Շարունակական արագություն
Գործառույթներ - Շարժման գործառույթ - Շարունակական արագություն

Այստեղ մենք պահպանում ենք արագացման ընթացքում օգտագործվող քայլերի քանակը, շարունակում ենք անընդհատ արագությամբ և պահպանում ենք առավելագույն արագությամբ, որը երևում է ստորև ներկայացված պատկերում:

Քայլ 14. Գործառույթներ - Շարժման գործառույթ - Դանդաղում

Գործառույթներ - Շարժման գործառույթ - Դանդաղեցում
Գործառույթներ - Շարժման գործառույթ - Դանդաղեցում
Գործառույթներ - Շարժման գործառույթ - Դանդաղեցում
Գործառույթներ - Շարժման գործառույթ - Դանդաղեցում

Այստեղ մենք ունենք մեկ այլ հավասարում, այս անգամ բացասական արագացման արժեքով: Այն նաև ցուցադրվում է կոդի տողում, որը ներկայացնում է ստորև բերված պատկերում Deceleration պիտակով ուղղանկյունը:

Քայլ 15. Գործառույթներ - Շարժման գործառույթ - Շարունակական արագություն

Գործառույթներ - Շարժման գործառույթ - Շարունակական արագություն
Գործառույթներ - Շարժման գործառույթ - Շարունակական արագություն
Գործառույթներ - Շարժման գործառույթ - Շարունակական արագություն
Գործառույթներ - Շարժման գործառույթ - Շարունակական արագություն

Մենք վերադառնում ենք շարունակական արագությանը `հետագծի երկրորդ կեսը աշխատելու համար, ինչպես երևում է ստորև:

Քայլ 16. Գործառույթներ - Տեղափոխել գործառույթ - Տեղափոխել պտույտներ

Գործառույթներ - Տեղափոխել գործառույթ - Տեղափոխել պտույտներ
Գործառույթներ - Տեղափոխել գործառույթ - Տեղափոխել պտույտներ

Այս մասում մենք շարժիչը շարժում ենք որոշակի թվով պտույտներով ցանկալի ուղղությամբ ՝ պտույտների թիվը վերածելով միլիմետրերի: Ի վերջո, մենք շարժիչը շարժում ենք պահանջվող ուղղությամբ:

Քայլ 17: Շարժման գծապատկեր - դիրքի արագություն

Շարժման գծապատկեր - դիրքի արագություն
Շարժման գծապատկեր - դիրքի արագություն

Այս գրաֆիկում ես ունեմ տվյալներ, որոնք հանվել են այն հավասարումից, որը մենք օգտագործում էինք արագացման մասում: Ես վերցրեցի արժեքները և խաղացի Arduino սերիալի վրա, և այստեղից անցա Excel- ի, որի արդյունքում ստացվեց այս աղյուսակը: Այս աղյուսակը ցույց է տալիս քայլի առաջընթացը:

Քայլ 18: Շարժման գծապատկեր - դիրք Vs. Դիրք

Շարժման աղյուսակ - դիրքն ընդդեմ Դիրք
Շարժման աղյուսակ - դիրքն ընդդեմ Դիրք

Այստեղ մենք վերցնում ենք դիրքը ՝ քայլերով և արագությամբ և փոխակերպում այն կետի ՝ միկրովայրկյանում: Այս քայլում մենք նշում ենք, որ ժամանակաշրջանը հակադարձ համեմատական է արագությանը:

Քայլ 19: Շարժման գծապատկեր - Արագություն ընդդեմ Պահ

Motion Chart - Արագություն vs. Պահ
Motion Chart - Արագություն vs. Պահ

Ի վերջո, մենք ունենք արագությունը որպես ակնթարթի ֆունկցիա, և դրա պատճառով մենք ունենք ուղիղ գիծ, քանի որ դա արագությունն է որպես ժամանակի ֆունկցիա:

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