instructables-logo

instructables VHDL Շարժիչի արագության կառավարում Որոշում է ուղղությունը և արագությունը ձախ և աջ արագության կարգավորիչ

instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-PRODUCT

ԾԱՆՈԹՈՒԹՅՈՒՆ. Այս էջը ավելի մեծ կառուցվածքի մի մասն է: Համոզվեք, որ սկսել եք ԱՅՍՏԵՂ, որպեսզի հասկանաք, թե որտեղ է հետևյալը տեղավորվում ավելի մեծ նախագծի շրջանակներում

Ավարտվել էview

Շարժիչի արագության և ուղղության կառավարումը ֆոտոդետեկտոր ռոբոտի երկու հիմնական ստորաբաժանումներից մեկն է, մյուսը ֆոտոդետեկտորի կամ լույսի դետեկտորի բաժինն է: Մինչ ֆոտոդետեկտորի բաժինը կենտրոնանում է ռոբոտի տեսողության վրա, շարժիչի արագության և ուղղության վերահսկման բաժինը կենտրոնանում է ռոբոտի շարժման վրա: Շարժիչի արագության և ուղղության վերահսկման գործընթացի տվյալները տրված են ֆոտոդետեկտորի բաժանմունքից և տալիս են ֆիզիկական արդյունք շարժիչի շարժման տեսքով:

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

Դրան հասնելու համար դուք պետք է պատրաստեք այս VHDL մոդուլները (նաև ստորև նշված են).

  1. Վերահսկողությունը
  2. Սխալի հաշվարկ
  3. Երկուական փոխակերպում
  4.  Լույսի աղբյուրի բացակայություն

Դուք կարող եք դիտել այս բաժնի VHDL կոդը այստեղ:

Պաշարներ
Խորհուրդ ենք տալիս կոդավորել ISE Design Suite 14.7-ով, քանի որ այն կարող է օգտագործվել նաև VHDL-ում կոդը փորձարկելու համար: Այնուամենայնիվ, կոդը BASYS 3-ում վերբեռնելու համար անհրաժեշտ է տեղադրել Vivado-ն (ver. 2015.4 կամ 2016.4) և գրել սահմանափակում .xdc ընդլայնմամբ:instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-1

VHDL շարժիչի արագության կառավարում. որոշեք ուղղությունը և արագությունը, ձախ և աջ արագության կարգավորիչ. Էջ 1

ՀՐԱՀԱՆՄԱՆ ՔԱՅԼ

Քայլ 1. Վերահսկում
Հասկանալու համար, թե ինչպես կառավարել լույս փնտրող ռոբոտի վարքագիծը, մենք կբացատրենք ռոբոտի ցանկալի պահվածքը, երբ նա տեսնում է լույսի աղբյուր: Այս վարքագիծը կվերահսկվի ըստ լույսի աղբյուրի դիրքի և չափի:instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-

Օգտագործված ալգորիթմը նման է RC ռոբոտի վերահսկիչին, մեկ լծակով, որը կարող է շրջվել ձախ կամ աջ, և մեկ այլ լծակ, որը կարող է շրջվել առաջ կամ հետ:

Լույս փնտրելու համար դուք ցանկանում եք, որ այս ռոբոտը շարժվի ուղիղ գծով, եթե լույսի աղբյուրի դիրքը հենց ռոբոտի դիմաց է: Դա անելու համար դուք ցանկանում եք նույն արագությունը և՛ ձախ, և՛ աջ շարժիչների վրա: Եթե ​​լույսը գտնվում է ռոբոտի ձախ կողմում, դուք ցանկանում եք, որ աջ շարժիչն ավելի արագ շարժվի, քան ձախ շարժիչը, որպեսզի ռոբոտը կարողանա դեպի ձախ թեքվել դեպի լույսը: Եվ հակառակը, եթե լույսը գտնվում է ռոբոտի աջ կողմում, դուք ցանկանում եք, որ ձախ շարժիչը շարժվի ավելի արագ, քան աջ շարժիչը, որպեսզի ռոբոտը կարողանա շրջվել դեպի աջ դեպի լույսը: Սա նման է RC կարգավորիչի ձախ լծակի, որտեղ դուք կարող եք վերահսկել, թե արդյոք ցանկանում եք ռոբոտը տեղափոխել ձախ, աջ կամ ուղիղ:

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

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

Դա այս ռոբոտի շարժման հիմնական ալգորիթմն է: Այս մոդուլի մասին ավելին իմանալու համար սեղմեք այստեղ:

Քայլ 2. Սխալի հաշվարկ
Քանի որ դուք արդեն ունեք շարժիչների նպատակային արագությունը և ուղղությունը, դուք նույնպես ցանկանում եք հաշվի առնել շարժիչների չափված արագությունն ու ուղղությունը: Եթե ​​այն հասել է արագության նպատակին, մենք ցանկանում ենք, որ շարժիչը շարժվի բացառապես իր թափով: Եթե ​​դա չի եղել, մենք ցանկանում ենք ավելի շատ արագություն ավելացնել շարժիչին: Վերահսկողության տեսության մեջ սա հայտնի է որպես փակ օղակի հետադարձ կապի կառավարման համակարգ:

Այս մոդուլի մասին ավելին իմանալու համար սեղմեք այստեղ:instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-2

Քայլ 3. Երկուական փոխարկում
Նախորդ հաշվարկներից դուք արդեն գիտեք, թե ինչ գործողություն է անհրաժեշտ շարժիչներից յուրաքանչյուրի համար: Այնուամենայնիվ, հաշվարկները կատարվում են ստորագրված երկուականի միջոցով: Այս մոդուլի նպատակն է փոխակերպել այս ստորագրված արժեքները մի արժեքի, որը կարող է կարդալ PWM գեներատորը, որոնք ուղղությունն են (ժամացույցի սլաքի ուղղությամբ կամ հակառակ ուղղությամբ) և արագությունը (0-ից 255-ի միջև): Բացի այդ, քանի որ շարժիչից արձագանքը չափվում է չստորագրված երկուական տարբերակով, անհրաժեշտ է մեկ այլ մոդուլ՝ չստորագրված արժեքները (ուղղությունը և արագությունը) ստորագրված արժեքի վերածելու համար, որը կարող է հաշվարկվել սխալի հաշվարկման մոդուլի միջոցով: Այս մոդուլի մասին ավելին իմանալու համար սեղմեք այստեղ:

Քայլ 4. Լույսի աղբյուրի բացակայություն
Դուք ստեղծել եք ռոբոտ, որը շարժվում է լույս փնտրելու համար, երբ լույսը հայտնաբերվում է ռոբոտի կողմից: Բայց ի՞նչ է տեղի ունենում, երբ ռոբոտը լույս չի հայտնաբերում: Այս մոդուլի նպատակն է թելադրել, թե ինչ անել, երբ առկա է նման պայման:

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

Քայլ 5. Ինչպես է այն աշխատում
Այս բացատրության համար կարող եք դիմել վերևի նկարին: Ինչպես նշվեց այս հրահանգի սկզբում, ձեզ անհրաժեշտ կլինեն «չափ» և «դիրքորոշում» մուտքերը շեմային բաժանումից: Համոզվելու համար, որ այս մուտքերը վավեր են (օրինակample, երբ դուք ստանում եք չափ = 0, չափը իսկապես զրո է, քանի որ տեսախցիկը չի հայտնաբերում լույսը, և ոչ այն պատճառով, որ տեսախցիկը դեռ սկզբնավորում էր) ձեզ նույնպես անհրաժեշտ կլինի ինչ-որ ցուցիչ, որը մենք անվանում ենք «ՊԱՏՐԱՍՏ»: Այս տվյալները կմշակվեն հսկիչի կողմից (Ctrl. vhd)՝ որոշելու յուրաքանչյուր շարժիչի նպատակային արագությունը (9 բիթ, ստորագրված):

Շարժիչի վրա ավելի կայուն ելքի համար դուք ցանկանում եք օգտագործել հետադարձ կապը փակ օղակի համակարգում: Սա պահանջում է յուրաքանչյուր շարժիչի մուտքային «ուղղությունը» և «արագությունը» շարժիչի արագության չափման բաժնից: Քանի որ դուք ցանկանում եք ներառել այս մուտքերը ձեր հաշվարկներում, դուք պետք է փոխարկեք այս չստորագրված արժեքները 9-բիթանոց ստորագրված երկուականի: Դա արվում է ստորագրված երկուական փոխարկիչի կողմից (US2S.vhd):

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

Քանի որ շարժիչի կարգավորիչին անհրաժեշտ է յուրաքանչյուր շարժիչի արագությունն ու ուղղությունը, դուք պետք է փոխակերպեք գործողության ստորագրված արժեքները երկու առանձին չստորագրված արժեքների՝ արագություն (1 բիթ) և ուղղություն (8 բիթ): Դա արվում է ստորագրվածից չստորագրված երկուական փոխարկիչով (S2US.vhd) և կդառնա շարժիչի կառավարման ստորաբաժանման մուտքեր:

Մենք նաև մոդուլ ենք ավելացրել՝ որոշելու, թե ինչ անել, երբ լույսը չի հայտնաբերվում (չկա լույսի հաշվիչ. Bhd): Քանի որ այս մոդուլը հիմնականում հաշվիչ է, այն կհաշվի, թե որքան ժամանակ է պետք ռոբոտին պտտվելու կամ տեղում մնալու համար: Սա կապահովի, որ ռոբոտը «տեսնի» իր միջավայրը, այլ ոչ թե պարզապես այն, ինչ իր առջև է, և կպահպանի մարտկոցի էներգիան, երբ իրականում լույսի աղբյուր չկա:instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-3

Քայլ 6. Միավորել Files
Համատեղելու համար files, դուք պետք է միացնեք ազդանշանները յուրաքանչյուր մոդուլից: Դա անելու համար դուք պետք է ստեղծեք նոր վերին մակարդակի մոդուլ file. Տեղադրեք նախորդ մոդուլների մուտքերն ու ելքերը որպես բաղադրիչներ, ավելացրեք ազդանշաններ կապերի համար և յուրաքանչյուր պորտ հատկացրեք համապատասխան զույգին: Դուք կարող եք հղում կատարել վերևի նկարի միացումներին և դիտել կոդը այստեղ:instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-4

Քայլ 7. Փորձարկել այն
Ամբողջ կոդն ավարտելուց հետո դուք պետք է իմանաք, թե արդյոք ձեր կոդը աշխատում է, նախքան այն ներբեռնելը գրատախտակ, հատկապես, որ կոդի մասերը կարող են պատրաստվել տարբեր մարդկանց կողմից: Սա պահանջում է թեստային նստարան, որտեղ դուք մուտքագրեք կեղծ արժեքներ և կտեսնեք, թե արդյոք կոդը վարվում է այնպես, ինչպես մենք ենք ուզում: Դուք կարող եք հանգստանալ սկսել՝ փորձարկելով յուրաքանչյուր մոդուլ, և եթե դրանք բոլորը ճիշտ են աշխատում, ապա կարող եք փորձարկել վերին մակարդակի մոդուլը:

Քայլ 8. Փորձեք այն սարքավորման վրա
Այն բանից հետո, երբ ձեր կոդը փորձարկվի ձեր համակարգչում, դուք կարող եք փորձարկել կոդը իրական սարքավորման վրա: Դուք պետք է սահմանափակում կատարեք file Vivado-ում (.xdc file BASYS 3) համար վերահսկելու, թե որ մուտքերն ու ելքերը որ նավահանգիստներն են գնում:

ԿԱՐԵՎՈՐ ԽՈՐՀՈՐԴ. Մենք սովորեցինք դժվարին ճանապարհով, որ էլեկտրական բաղադրիչները կարող են ունենալ հոսանքի կամ ծավալի առավելագույն արժեքtagէս. Համոզվեք, որ հղում կատարեք տվյալների աղյուսակին արժեքների համար: PMOD HB5-ի համար համոզվեք, որ դրեք ծավալըtagԷլեկտրաէներգիայի աղբյուրից 12 վոլտ (քանի որ սա պահանջվող ծավալն էtage շարժիչի համար), իսկ հոսանքը՝ այնքան քիչ, որքան անհրաժեշտ է շարժիչի շարժման համար:

Քայլ 9. Միավորել այն այլ մասերի հետ
Եթե ​​նախորդ քայլերը հաջողված էին, միացրեք կոդը մյուս խմբերի հետ, որպեսզի վերջնական կոդը վերբեռնվի ռոբոտում: Ապա, voila! Դուք հաջողությամբ ստեղծել եք լույս փնտրող ռոբոտ:

Քայլ 10. ներդրողներ
Ձախից աջ.

  • Անտոնիուս Գրեգորիուս Դիվեն Ռիվալդի
  • Ֆելիքս Վիգունա
  • Նիկոլաս Սանջայա
  • Ռիչարդ Մեդյանտոinstructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-6

Շատ գեղեցիկ: VHDL շարժիչի արագության կառավարում. որոշեք ուղղությունը և արագությունը, ձախ և աջ արագության կարգավորիչ. Էջ 6
Շնորհակալություն կրկինviewing! Այս նախագիծն իրականում դասի նախագծի միայն մի մասն է (Light Seeking Robot BASYS 3 տախտակով և OV7670 տեսախցիկով), այնպես որ ես շուտով կավելացնեմ դասի հղումը:

Հրաշալի: Անհամբեր սպասում եմ, թե երբ եմ ամեն ինչ հավաքված:

Փաստաթղթեր / ռեսուրսներ

instructables VHDL Շարժիչի արագության կառավարում Որոշում է ուղղությունը և արագությունը ձախ և աջ արագության կարգավորիչ [pdfՀրահանգներ
VHDL Շարժիչի արագության կարգավորիչ՝ որոշելու ուղղությունը և արագությունը ձախ և աջ արագության կարգավորիչ, VHDL շարժիչի արագությունը, վերահսկում է ուղղությունը և արագությունը ձախ և աջ արագության կարգավորիչ

Հղումներ

Թողնել մեկնաբանություն

Ձեր էլփոստի հասցեն չի հրապարակվի: Պարտադիր դաշտերը նշված են *