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

PID վերահսկիչ VHDL: 10 քայլ
PID վերահսկիչ VHDL: 10 քայլ

Video: PID վերահսկիչ VHDL: 10 քայլ

Video: PID վերահսկիչ VHDL: 10 քայլ
Video: Թե ինչպես կարելի է կատարել մի հպում switch դուրս սովորական, օգտագործելով պարզ ttp223 վերահսկիչ 2024, Հուլիսի
Anonim
PID վերահսկիչ VHDL
PID վերահսկիչ VHDL
PID վերահսկիչ VHDL
PID վերահսկիչ VHDL

Այս նախագիծը իմ վերջին ծրագիրն էր `ավարտելու իմ գերազանցության բակալավրի աստիճանը Կորկի տեխնոլոգիական ինստիտուտից: Այս ձեռնարկը բաժանված է երկու մասի, առաջինը կներառի PID ծածկագրի հիմնական տեքստը, որը ծրագրի հիմնական նպատակն է, իսկ երկրորդ հատվածը `ծածկույթի ծածկագիրը, որն իրականացվել է Basys 3 զարգացման տախտակի վրա, այնուհետև միացվել է պինգ -պոնգի գնդակին: լևիտացիոն սարք Տեսական և կառուցված սարքը ցուցադրվում է կցված պատկերներում:

Պարագաներ

Մոդելավորում

Vivado Design Suite

Իրականացում (փակագծերում այն է, ինչ օգտագործվել է իմ նախագծի համար)

  • FPGA տախտակ, որը կարող է մուտքագրել և թողնել թվային/անալոգային ազդանշաններ (Basys 3)
  • համակարգ, որը վերահսկելի է հետադարձ կապի մեկ աղբյուրի միջոցով (Ping Pong Ball Levitation Rig)

Ռիգ

  • Պոլիկարբոնատային խողովակ
  • 5V օդափոխիչ
  • IR սենսոր
  • 3D տպագիր բազա (այս ձեռնարկը փաստում է սարքի կառուցումը, որի վրա սենսորը ավելացվել է ՝ հետադարձ կապ ապահովելու համար, սակայն սարքը, ընդհանուր առմամբ, նույնն էր)
  • 1k դիմադրիչներ
  • Breadboard 5V և GND երկաթուղով

Քայլ 1: Հիմնական վերահսկման տեսություն

Հիմնական վերահսկման տեսություն
Հիմնական վերահսկման տեսություն

Ես կարծում էի, որ վերահսկողության որոշ հիմնական տեսության մեջ ավելացնելը կտա յուրաքանչյուրին, ով կցանկանա փորձել և կիրառել այս ծածկագիրը, լավ հիմք `սկզբից:

Կցված դիագրամը մեկ հանգույց վերահսկիչի դասավորությունն է:

r- Տեղեկանք է. Սա որոշում է, թե որտեղ է ցանկալի գնալ վերահսկիչին:

e-Is the error. Սա ձեր սենսորի արժեքի և տեղեկանքի արժեքի տարբերությունն է: օրինակ e = r- (դ+տվիչի ելք):

K-Սա վերահսկիչն է: Կարգավորիչը կարող է բաղկացած լինել երեք տերմինից. Այս տերմիններն են P, I և D. Բոլոր երեք տերմիններն ունեն բազմապատկիչներ, որոնք կոչվում են Kp, Ki և Kd: Այս արժեքները որոշում են վերահսկիչի արձագանքը:

  • P- համաչափ. Խիստ P կարգավորիչը կունենա ելք `համաչափ ընթացիկ սխալին: P կարգավորիչը պարզ է իրագործման և արագ աշխատանքի համար, բայց երբեք չի հասնի ձեր սահմանած արժեքին (տեղեկանք):
  • I-Integral: Խիստ ինտեգրալ վերահսկիչը կամփոփի նախորդ սխալը, որն ի վերջո կհասնի ցանկալի հղմանը: Այս վերահսկիչն ընդհանուր առմամբ չափազանց դանդաղ է իրականացնելու համար: P տերմին ավելացնելը կնվազեցնի հղմանը հասնելու ժամանակը: Theամանակը, երբ մուտքագրվում է նմուշառումը, պետք է հաշվի առնել, որ ինտեգրալ տերմինը ինտեգրված է ժամանակի նկատմամբ:
  • D- ածանցյալ: Ածանցյալ տերմինը կունենա ելք, որը կախված է սխալի փոփոխության արագությունից: Այս տերմինը հիմնականում օգտագործվում է P տերմինով կամ PI տերմինով: Քանի որ դա համաչափ է սխալի փոփոխության տոկոսադրույքին, ապա աղմկոտ սինգլը կբարձրացնի իր աղմուկը, ինչը կարող է հանգեցնել համակարգի անկայունության: Timeամանակը նույնպես պետք է հաշվի առնել, քանի որ ածանցյալ տերմինը նույնպես վերաբերում է ժամանակին:

U- Սա կառավարման ազդանշանն է: Այս ազդանշանը մուտք է սարքի համար: Այս նախագծի դեպքում u- ն PWM ազդանշան է, որը մուտքագրվում է երկրպագուին `արագությունը փոխելու համար:

G- Սա այն համակարգն է, որը վերահսկվում է: Այս համակարգը կարող է մաթեմատիկորեն մոդելավորվել S կամ Z տիրույթում: Համակարգերը կարող են լինել 9 -րդ կարգի, բայց ինչ -որ մեկի համար, ով սկսում է վերահսկողությունը, առաջին կարգի համակարգը, հավանաբար, պետք է ենթադրել, քանի որ դա շատ ավելի հեշտ է հաշվարկել: Մոդելավորման համակարգի վերաբերյալ տեղեկատվության բազմազանությունը կարելի է գտնել առցանց: Կախված սենսորի նմուշառման ժամանակից, համակարգի մոդելը կամ դիսկրետ է, կամ շարունակական: Սա կտրուկ ազդեցություն ունի վերահսկիչի վրա, ուստի խորհուրդ է տրվում երկուսի հետազոտություն կատարել:

դ- Սա խանգարում է, որն ավելացվում է համակարգին: Խանգարումը արտաքին ուժեր են, որոնց համակարգի մոդելը հաշվի չի առնում: Դրա հեշտ օրինակը կլիներ անօդաչու թռչող սարքը, որի վրա կցանկանայիք սավառնել 5 մետր բարձրության վրա, քամու պոռթկում է գալիս և անօդաչուն իջնում 1 մետր, և վերահսկիչը կտեղափոխի անօդաչու թռչող սարքը խանգարումից հետո: Սա հայտնի է որպես խանգարում, քանի որ քամին անկրկնելի է, այնպես որ դա չի կարող մոդելավորվել:

Հսկիչը կարգավորելու համար չափազանց շատ կանոններ կան անվանելու, բայց մի քանի լավը, որոնցից ես սկսեցի, Քոեն Կունն ու ieիգեր Նիկոլսն են:

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

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

Քայլ 2: PID կոդի գրառում

PID կոդի գրառում
PID կոդի գրառում

Հետևյալ հղման վրա գտնված ծածկագրի հիմնական սկզբունքն ընդունվեց և փոփոխվեց, քանի որ այս ծածկագիրը չէր գործում, բայց ուներ շատ սկզբունքներ, որոնք լավ ելակետ էին տալիս: Սկզբնական PID ծածկագիրը մի քանի սխալներ ուներ, ինչպիսիք են

  • Շարունակական գործողություն. Վերահսկիչը ժառանգաբար դիսկրետ է, ուստի վերահսկիչը պետք է ստեղծվեր այնպես, որ հաշվարկեր բոլոր 3 տերմինները, երբ առկա էր նոր մուտքագրում: Այս մոդելավորման շուրջ աշխատանքն էր ստուգել, արդյոք մուտքագրումը փոխվել է վերջին անգամից: սա միայն աշխատում է կոդի ճիշտ աշխատանքի նմանակման համար:
  • Նմուշի ժամանակը ոչ մի ազդեցություն չի ունեցել ինտեգրալ և ածանցյալ տերմինի վրա. Վերահսկիչը նաև հաշվի չի առել նմուշը վերցնելու ժամանակը, ուստի ժամանակի համար բաժանարար կոչվող արժեք է ավելացվել `ապահովելու համար, որ ինտեգրալ և ածանցյալ տերմինները գործում են ճիշտ ընդմիջում
  • Սխալը կարող էր լինել միայն պոստատիվ. Սխալը հաշվարկելիս կար նաև խնդիր, քանի որ սխալը երբեք չէր կարող բացասական նշանակություն ունենալ, երբ հետադարձ ազդանշանը գերազանցեր այն տեղեկատու արժեքը, որ վերահսկիչը կշարունակի ավելացնել ելքը, երբ այն պետք է նվազեցվի:
  • 3 տերմինների ձեռքբերման արժեքները եղել են ամբողջ թվեր. Իմ փորձի համաձայն ես միշտ գտնում էի, որ վերահսկիչի 3 տերմինների արժեքները միշտ լողացող կետերի համարներ են `Basys 3 -ի պատճառով լողացող կետի համար չունենալու դեպքում արժեքներին պետք է տրվի համարիչ և ա հայտարարարար արժեք, որը կծառայի որպես այս խնդրին գերազանցող աշխատանք:

Ստորև բերված ծածկագիրը կցված է ծածկագրի հիմնական տեքստին և ծածկարանին `ծածկագիրը նմանակելու համար: Փոստային թղթապանակը պարունակում է կոդը և testbench- ն արդեն Vivado- ում, որպեսզի հնարավոր լինի բացել ՝ ժամանակ խնայելու համար: կա նաև կոդի մոդելավորված փորձարկում, որը ցույց է տալիս ելքը, որը հետևում է տեղեկանքին, ինչը ապացուցում է, որ կոդը գործում է ըստ նախատեսվածի:

Քայլ 3: Ինչպես փոփոխել ձեր համակարգի համար

Նախ, ոչ բոլոր համակարգերն են նույնը, պետք է վերլուծել համակարգի մուտքերն ու ելքերը: Իմ դեպքում իմ սարքավորման ելքը, որն ինձ արժեք է տվել դիրքի համար, անալոգային ազդանշան էր, իսկ համակարգից մուտքը `PWM ազդանշան: Նշանակում է, որ ADC- ի փոխակերպում էր անհրաժեշտ: Բարեբախտաբար, Basys 3-ը ունի ներկառուցված ADC, այնպես որ դա ոչ մի խնդիր չէր, IR սենսորի ելքը պետք է նվազեցվեր մինչև 0V-1V, քանի որ սա ինքնաթիռի ADC- ի առավելագույն տիրույթն է: Դա արվել է լարման բաժանարար սխեմայի միջոցով, որը պատրաստված էր 1 կ ռեզիստորներից, որոնք ստեղծվել էին որպես 3 կ ռեզիստոր ՝ 1 կ ռեզիստորով շարքով: Անալոգային ազդանշանն այժմ ADC- ի սահմաններում էր: Օդափոխիչի PWM մուտքը կարող է ուղղակիորեն առաջնորդվել Basys 3 -ի PMOD նավահանգստի ելքով:

Քայլ 4. Մուտքի/ելքի առավելությունները Basys 3 -ում

Basys 3 -ում կան մի շարք մուտքային/ելքային համակարգեր, որոնք թույլ են տալիս ավելի հեշտ կարգաբերում, երբ աշխատում էր կոդը: I/O- ն ստեղծվել է հետևյալ կերպ.

  • Յոթ հատվածի ցուցադրում - Սա օգտագործվել է ADC- ի վրա տեղեկանքի և արժեքի արժեքը վոլտերում ցույց տալու համար: Յոթ հատվածի ցուցադրման առաջին երկու թվանշանները ցույց են տալիս երկու թվանշանները ADC արժեքի տասնորդական տեղից հետո, քանի որ արժեքը 0-1V միջակայքում է: Յոթ հատվածի ցուցադրման երեք և չորս թվանշանները ցույց են տալիս տեղեկատու արժեքը վոլտերում: Սա նաև ցույց է տալիս տասնորդական տեղից հետո առաջին երկու թվանշանները, քանի որ միջակայքը նույնպես 0-1 Վ-ի միջև է:
  • 16 LED - LED- ները օգտագործվում էին ելքի արժեքը ցույց տալու համար `ապահովելու համար, որ ելքը հագեցած է, և ելքը ճիշտ փոխվում է:

Քայլ 5. Աղմուկ IR սենսորի ելքի վրա

Սենսորների ելքի վրա աղմուկ բարձրացավ `այս խնդիրը լուծելու համար տեղադրվեց միջինացված բլոկ, քանի որ դա բավարար էր և շատ քիչ աշխատանք էր պահանջում ավարտելու համար:

Քայլ 6: Ընդհանուր ծածկագրի դասավորություն

Ընդհանուր ծածկագրի դասավորություն
Ընդհանուր ծածկագրի դասավորություն

Կա մեկ կտոր ծածկագիր, որի մասին դեռ չի խոսվել: Այս կոդը ժամացույցի բաժանարար է, որը կոչվում է ձգան: այս կոդի մի մասը խթանում է ADC ծածկագրի ընտրանքը: ADC ծածկագիրը տևում է առավելագույնը 2us, այնպես որ ընթացիկ մուտքն ու նախորդ մուտքը միջինացված են: Այս միջինը միջինացնելուց հետո վերահսկիչը հաշվարկում է P, I և D տերմինները: Կոդի և միջերեսների ընդհանուր դասավորությունը ցուցադրվում է միացման ժամանակավոր դիագրամում:

Քայլ 7: Փորձարկում

Փորձարկում
Փորձարկում

Կոդը տեղադրվեց Basys 3 -ում և գրանցվեց հետևյալ պատասխանը: տեղեկանքը փոխվել է 2 արժեքների միջև: որը վերաբերում է ավարտված ծրագրի ծածկագրին կից: Կից տեսանյութը ցույց է տալիս այս արձագանքը իրական ժամանակում: Խողովակի վերին հատվածում տատանումներն ավելի արագ են քայքայվում, քանի որ վերահսկիչը նախատեսված էր այս տարածաշրջանի համար, բայց վերահսկիչը այնքան էլ չի աշխատում խողովակից ներքև, քանի որ համակարգը ոչ գծային է:

Քայլ 8 Modրագրի բարելավման փոփոխություններ

Projectրագիրն աշխատում էր ըստ նախատեսվածի, բայց կան մի քանի փոփոխություններ, որոնք ես կանեի, եթե նախագիծը երկարաձգվեր:

  • Տեղադրեք թվային զտիչ `աղմուկը լիովին թուլացնելու համար
  • կարգաբերեք ADC ծածկագիրը, միջին կոդը և ինտեգրման ծածկագիրը ՝ հաջորդականորեն գործարկելու համար:
  • օգտագործեք այլ սենսոր հետադարձ կապի համար, քանի որ այս սենսորի ոչ գծային պատասխանը առաջացրեց այս նախագծի հետ կապված բազմաթիվ խնդիրներ, բայց դա ավելի շատ վերահսկիչ, այլ ոչ թե կոդավորման կողմն է:

Քայլ 9: Լրացուցիչ աշխատանք

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

Փոփոխություններ կատարված սովորական PID վերահսկիչի վրա

· FIR զտիչի ձևանմուշը գործարկված է, գործակիցները պետք է փոխվեն `ցանկալի անջատման հաճախականությանը հասնելու համար: Ներկայիս իրականացումը եղունգների 5 թակել զտիչ է:

· Կոդի ժամանակը սահմանվել է այնպես, որ ֆիլտրը տարածի նոր նմուշը, և երբ ելքը պատրաստ լինի, ինտեգրալ տերմինը կգործարկվի, ինչը կնշանակի, որ կոդը կարող է փոփոխվել ՝ տարբեր ժամանակաշրջաններում աշխատելու համար ՝ ավելի քիչ ջանքեր գործադրելու համար: կոդը.

· Loրագիրը վարող հանգույցի հիմնական մասը նույնպես կրճատվել է, քանի որ դա հանգույցի համար տևել է 7 ցիկլ, ինչը նախկինում դանդաղեցրել է Վերահսկիչի աշխատանքային առավելագույն արագությունը, սակայն հանգույցի համար t 4 վիճակի իջեցումը նշանակում է, որ կոդի հիմնական բլոկը կարող է գործել: ժամացույցի 4 ցիկլերի ընթացքում:

Փորձարկում

Այս վերահսկիչը փորձարկվեց և կատարվեց ըստ նախատեսվածի: Ես այս ապացույցը չեմ նկարել, քանի որ նախագծի այս հատվածը պարզապես միտքը ակտիվ պահելու համար էր: Փորձարկման ծածկագիրը, ինչպես նաև թեստի նստարանը, հասանելի կլինի այստեղ, որպեսզի կարողանաք ծրագիրը փորձարկել նախքան իրականացումը:

Ինչու՞ օգտագործել կասկադի վերահսկիչ

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

Ինչպե՞ս է աշխատում կասկադի վերահսկիչը:

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

Հորատանցքում փոփոխությունների իրականացում:

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

Փորձարկում

Ես չկարողացա ստուգել վերահսկիչը, քանի որ դժվար էր երկու մուտքային աղբյուրի մոդելավորումը: Կասկադի վերահսկիչի միակ խնդիրն այն է, որ երբ արտաքին հանգույցը փորձում է մեծացնել ներքին օղակին մատակարարվող սահմանային կետը, որ ավելի մեծ սահմանային կետը իրականում ավելի ցածր RPS է երկրպագուի համար, բայց դա հեշտությամբ կարելի է ամրագրել: վերցրեք սահմանված կետը սահմանային նշանի առավելագույն արժեքից (4095 - սահմանման կետ - tacho_result):

Քայլ 10: Եզրակացություն

Ընդհանուր առմամբ նախագիծը գործում է այնպես, ինչպես ես մտադիր էի, երբ նախագիծը սկսվեց, այնպես որ ես գոհ եմ արդյունքից: Շնորհակալություն ժամանակ հատկացնելու համար VHDL- ում PID վերահսկիչ մշակելու իմ փորձը կարդալու համար: Եթե որևէ մեկը փորձում է այս համակարգի որոշ տատանումներ ներդնել համակարգի վրա և պահանջում է որոշակի օժանդակություն ՝ կոդը ինձ հետ կապվելու համար, ես արագ կպատասխանեմ: Յուրաքանչյուրը, ով փորձում է կատարել լրացուցիչ աշխատանք, որը կազմվել է, բայց չի իրականացվել, խնդրում եմ կապ հաստատել ինձ ցանկացած ձեռքի համար: Ես շատ կգնահատեի դա, եթե որևէ մեկը, ով իրականացնում է այն, ինձ տեղեկացնի, թե ինչպես է դա ընթանում:

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