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

28BYJ-48 Stepper Motor- ի անկյունային դիրքի վերահսկում Arduino- ով և անալոգային ջոյսթիկով `3 քայլ
28BYJ-48 Stepper Motor- ի անկյունային դիրքի վերահսկում Arduino- ով և անալոգային ջոյսթիկով `3 քայլ

Video: 28BYJ-48 Stepper Motor- ի անկյունային դիրքի վերահսկում Arduino- ով և անալոգային ջոյսթիկով `3 քայլ

Video: 28BYJ-48 Stepper Motor- ի անկյունային դիրքի վերահսկում Arduino- ով և անալոգային ջոյսթիկով `3 քայլ
Video: Andonstar AD409 Pro 10.1 inch Digital PCB Microscope 300X Magnifier with HDMI output 2024, Նոյեմբեր
Anonim
28BYJ-48 Stepper շարժիչի անկյունային դիրքի վերահսկում Arduino- ով և անալոգային ջոյսթիկով
28BYJ-48 Stepper շարժիչի անկյունային դիրքի վերահսկում Arduino- ով և անալոգային ջոյսթիկով

Սա 28BYJ-48 տիպի շարժիչի կառավարման սխեման է, որը ես մշակել եմ վերջին տարվա ատենախոսության նախագծի շրջանակներում օգտագործելու համար: Ես նախկինում չեմ տեսել, որ դա արվի, ուստի մտածեցի, որ կբեռնեմ այն, ինչ հայտնաբերեցի: Հուսով եմ, որ դա կօգնի մեկ ուրիշին այնտեղ:

Հիմնականում ծածկագիրը թույլ է տալիս քայլող շարժիչին «պատճենել» անալոգային ջիստիկի անկյունային դիրքը, այսինքն ՝ եթե ջոյսթիկը առաջ եք մղում, շարժիչը ցույց է տալիս դեպի «հյուսիս»: մղել ջոյսթիկը դեպի արևմուտք, շարժիչը պտտվում է նույն ուղղությամբ դեպի կետ:

Իմ իրականացման համար ես պահանջեցի, որ եթե ջոյսթիկը բաց թողնեն, այսինքն ՝ անկյունային դիրք չունենա, շարժիչը վերադառնա «տան» ուղղությամբ: Տան ուղղությունը ուղղված է դեպի արևելք, և շարժիչը (կամ վարձակալության ցանկացած ցուցիչ / սարք, որը կցել եք ելքային լիսեռին) նույնպես պետք է ուղղված լինի այս ուղղությամբ, երբ միացված է:

Պարագաներ

Arduino Uno կամ նմանատիպ

տախտակ և թռիչքային լարերի ընտրություն (արականից արական, արականից իգական)

5 Վ էլեկտրամատակարարում

Anոյսթիկի անալոգային մոդուլ (իդեալականորեն մի ակնթարթային կոճակի գործառույթով, դա հեշտացնում է «տան» դիրքի հանգիստը)

28BYJ-48 տիպի շարժիչով և ULN2003 սլաքի վարորդով

Գրիչ, թուղթ և blu-tac (կամ շարժիչին ամրացնող ցանկացած այլ ցուցիչ սարք):

Քայլ 1: Քայլ 1: Կարգավորում

Կապիչ շարժիչը միացրեք սլաքի վարորդին և կապեք կապերը հետևյալ կերպ.

IN1 - Arduino կապ 8

IN2 - Arduino կապ 9

IN3 - Arduino քորոց 10

IN4 - Arduino քորոց 11

Միացրեք ձեր 5 վ էլեկտրամատակարարումը ձեր տախտակի մատակարարման ռելսերին և միացրեք ULN2003 5 վ մուտքերը մատակարարման ռելսերին: միացրեք գետնին ձեր Arduino- ի գետնին:

ջոյսթիկի համար միացրեք հետևյալ կերպ.

Անջատիչ քորոց - Arduino կապ 2

X առանցք - Arduino A0 (անալոգ 0 -ում)

Y առանցք - Arduino A1

+5V - Arduino 5V ելք

GND - Arduino GND

Վերջապես միացրեք ձեր տախտակի հիմքը Arduino GND- ի մյուս քորոցին

Քայլ 2: Քայլ 2. Բացատրեք օրենսգիրքը

Ներառել եմ Arduino- ի ամբողջական կոդը, որը կարող եք ներբեռնել և օգտագործել: Բայց կանեմ ամեն ինչ, որպեսզի այստեղ բացատրեմ համապատասխան մասերը:

Այս ծածկագրի հիմքում ընկած տեսությունն այն է, որ ջոիստիկով զբաղեցրած տարածքը բաժանված է գրաֆիկի ՝ 0, 0 կենտրոնում: Այնուամենայնիվ, ջոյսթիկի մուտքերը գտնվում են կենտրոնում (մոտավորապես) 512 -ի սահմաններում, ուստի այս երկու գործառույթները հաղթահարելու համար օգտագործվում են X և Y առանցքներից կարդացված արժեքը «զրոյացնելու» համար: կախված օգտագործվող էներգիայի աղբյուրից, ձեզ կարող է անհրաժեշտ լինել փոխել ZeroX և ZeroY գործառույթների արժեքները, որպեսզի ձեր ջոյսթիկը հանգստանալու ժամանակ 0 -ի հուսալի ցուցանիշ է տալիս:

Երբ X, Y արժեքները կարդացվում են, դրանք առաջին հերթին վերածվում են ռադիաների ՝ օգտագործելով math.h գրադարանում atan2 () գործառույթը: Այս գործառույթի բացատրությունը դուրս է այս ուսանելիի շրջանակից, բայց խնդրում եմ, գնացեք փնտրելու այն. Դա բավականին պարզ երկրաչափության հնարք է:

Ի վերջո, մեզանից այն մարդկանց համար, ովքեր ավելի շուտ աշխատում էին աստիճաններով, այլ ոչ թե ռադներով, ռադի արժեքը, որը հաշվարկվում է atan2 () - ով, փոխակերպվում է աստիճանի:

Օղակի վերևում ծածկագրի մի փոքր հատված է, որը թույլ է տալիս սեղմել ջոյսթիկի պահի կոճակի վրա ՝ «տուն» վայրը տեղափոխելու համար: Սա աներևակայելի օգտակար էր ծածկագիրը փորձարկելիս, բայց ես այն թողել եմ, քանի որ տեսնում եմ, թե ինչպես կարող է այն օգտակար լինել որոշ դեպքերում:

Այժմ անցեք ծածկագրի հիմնական զանգվածին: մենք սկսում ենք կարդալ ջոյսթիք X- ը, Y կոորդինատները երկու անգամ բաժանվել են 10 մգ ուշացումով, այնուհետև ստուգել, թե արդյոք դրանք նույնն են, ես գտա, որ ջոյսթիկը երբեմն մեկ -մեկ սպորադիկ ընթերցումներ է թողնում, և այս աննշան ձգձգումը բավական էր, որպեսզի դրանց հիման վրա շարժիչը կանգնեցվեր:. Դա նաև բավական կարճ ձգձգում է, որը, կարծես, չի խանգարում դիտավորյալ մուտքերին:

Մնացած կոդը բավականին ինքնաբացատրելի է, և ես ամեն ինչ արել եմ դրա փաստաթղթավորման համար. IF- ի մի շարք հայտարարություններ համեմատում են ընթացիկ ջոյսթիկի անկյունը շարժիչի անկյան հետ և շարժիչը շարժում են այդ անկյան տակ: 28BYJ-48- ը ունի 5,689 քայլ մեկ աստիճանի համար, ուստի դրա համար մենք անհրաժեշտ շարժումը բազմապատկում ենք այս թվացյալ տարօրինակ թվով:

Կոդի մի մասը, որն ամենից շատ բացատրություն է պահանջում, այն է, ինչ ես անվանել եմ «փաթաթված գործ»: Նույնիսկ այն դեպքում, երբ ջոյսթիկը և շարժիչը գտնվում էին, օրինակ, +175 °, իսկ ջոյսթիկը հետագայում տեղափոխվեց -175 ° (շարժում ՝ ընդամենը 10 ° ջոյսթիկի վրա, արևմուտքից հյուսիսից արևմուտք), շարժիչը 350 % -ով կշարժվի ՍԽԱԼ Ուղղությամբ: դրա համար գրվել է հատուկ դեպքը:

Շրջափակման գործը սկսվում է ՝ ստուգելով, որ շարժիչն ու ջոյսթիկը հակառակ նշաններ ունեն, այսինքն ՝ շարժիչը դրական է, իսկ ժոյսթիկը ՝ բացասական, կամ հակառակը: Այն նաև ստուգում է, որ ջոյսթիկի և շարժիչի բացարձակ (այսինքն ՝ դրական արժեքների) գումարը 180 ° -ից բարձր է:

Եթե այս երկու պնդումներն էլ ճշմարիտ են, ապա ֆունկցիան ստուգում է ՝ արդյոք շարժիչը պետք է շարժվի ժամացույցի սլաքի ուղղությամբ (շարժիչի արժեքը բացասական է), թե՞ հակառակ ուղղությամբ (եթե շարժիչի արժեքը դրական է):

Շարժիչի անկյունի և ջոյսթիկի անկյունի բացարձակ արժեքները ընդհանուր են և հանվում են 360 ° -ից `շարժման հեռավորությունը որոշելու համար: Վերջապես, շարժիչի անկյունը (որն այժմ արտացոլում է ջոյսթիկի անկյունը) թարմացվում է որպես այդպիսին:

Քայլ 3: ԱՎԱՐՏՎԱ:

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

Եթե օգտագործում եք ծածկագիրը, խնդրում եմ ինձ տեղյակ պահեք, և եթե որևէ տեղ տեսնում եք, որտեղ կարելի է կատարելագործել կոդը, ես կցանկանայի լսել ձեր կարծիքը:

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