Përmbajtje:

Kontrolluesi PID VHDL: 10 hapa
Kontrolluesi PID VHDL: 10 hapa

Video: Kontrolluesi PID VHDL: 10 hapa

Video: Kontrolluesi PID VHDL: 10 hapa
Video: Java Tech Talk: Hand-made Spring Boot Starter 2024, Nëntor
Anonim
Kontrolluesi PID VHDL
Kontrolluesi PID VHDL
Kontrolluesi PID VHDL
Kontrolluesi PID VHDL

Ky projekt ishte projekti im i fundit për të përfunduar Diplomën time Bachelor nga Instituti i Teknologjisë në Kork. Ky Udhëzues është i ndarë në dy seksione, i pari do të mbulojë trupin kryesor të kodit PID i cili është qëllimi kryesor i projektit dhe seksioni i dytë mbulon ndërfaqen e kodit i cili u zbatua në një bord zhvillimi Basys 3 dhe më pas u ndërlidh me një top ping pongu platformë levitimi. Struktura teorike dhe e ndërtuar janë treguar në imazhet e bashkangjitura.

Furnizimet

Simulim

Suite Dizajn Vivado

Zbatimi (në kllapa është ajo që është përdorur për projektin tim)

  • Bordi FPGA i cili mund të hyjë dhe dalë sinjale dixhitale/analoge (Basys 3)
  • një sistem i cili është i kontrollueshëm me një burim të vetëm reagimesh (Pig Ping Pong Levitation Rig)

Rig

  • Tub polikarbonat
  • Tifoz 5V
  • Sensori IR
  • Baza e Shtypur 3D (Ky udhëzues dokumenton ndërtimin e platformës, sensori u shtua për të siguruar reagime, por pajisja në përgjithësi ishte e njëjtë)
  • Rezistenca 1k
  • Breadboard me 5V dhe hekurudhë GND

Hapi 1: Teoria themelore e kontrollit

Teoria themelore e kontrollit
Teoria themelore e kontrollit

Mendova se shtimi i disa teorive themelore të kontrollit do t'i jepte kujtdo që dëshiron të provojë dhe zbatojë këtë kod një bazë të mirë për të filluar.

Diagrami i bashkangjitur është paraqitja e një kontrolluesi të vetëm të lakut.

r- theshtë referencë. Kjo përcakton se ku dëshiron të shkojë kontrolluesi.

e-Isshtë gabimi. Ky është ndryshimi midis vlerës në sensorin tuaj dhe referencës suaj. p.sh. e = r- (d+dalja e sensorit).

K-Ky është kontrolluesi. Një kontrollues mund të përbëhet nga tre terma. Këto terma janë P, I dhe D. Të tre termat kanë shumëzues të quajtur Kp, Ki dhe Kd. Këto vlera përcaktojnë përgjigjen e kontrolluesit.

  • P-Proporcionale. Një kontrollues rreptësisht P do të ketë një dalje proporcionale me gabimin aktual. Një kontrollues P është i thjeshtë për t’u zbatuar dhe punuar shpejt, por kurrë nuk do të arrijë vlerën që keni vendosur (referencë).
  • I-Integral. Një kontrollues rreptësisht integral do të përmbledh gabimin e mëparshëm i cili përfundimisht do të arrijë referencën e dëshiruar. Ky kontrollues në përgjithësi është shumë i ngadalshëm për t’u zbatuar. Shtimi i një termi P do të zvogëlojë kohën e marrë për të arritur referencën. Koha në të cilën po merret mostra e hyrjes duhet të merret parasysh kur termi integral është i integruar në lidhje me kohën.
  • D-Derivat. Termi Derivativ do të ketë një dalje e cila varet nga shkalla e ndryshimit të gabimit. Ky term në përgjithësi përdoret me një term P ose me një term PI. Meqenëse kjo është proporcionale me shkallën e ndryshimit të gabimit, atëherë një zhurmë të zhurmshme do të përforcohet zhurma e tij, gjë që mund të bëjë që sistemi të jetë i paqëndrueshëm. Koha gjithashtu duhet të merret parasysh pasi termi derivativ është gjithashtu në lidhje me kohën.

U- Ky është sinjali i kontrollit. Ky sinjal është një hyrje në rig. Në rastin e këtij projekti, u është një sinjal PWM për ventilatorin për të ndryshuar shpejtësinë.

G- Ky është sistemi i cili kontrollohet. Ky sistem mund të modelohet matematikisht në Domain S ose Z. Sistemet mund të jenë të rendit të nëntë, por për dikë që fillon me kontrollin, një sistem i rendit të parë ndoshta duhet të supozohet pasi kjo është shumë më e lehtë për t'u llogaritur. Isshtë një bollëk informacioni mbi sistemin e modelimit që gjendet në internet. Në varësi të kohës së marrjes së mostrave të sensorit, modeli i sistemit është ose diskret ose i vazhdueshëm. Kjo ka një efekt drastik mbi kontrolluesin kështu që këshillohet kërkimi për të dyja.

d- Ky është shqetësim i cili i shtohet sistemit. Shqetësimi është forcat e jashtme të cilat modeli i sistemit nuk i merr parasysh. Një shembull i thjeshtë i kësaj do të ishte një dron që do të donit të rri pezull në 5 metra një erë e fortë vjen dhe bie dronin 1 metër kontrolluesi do të ripozicionojë dronin pasi të ketë ndodhur shqetësimi. Kjo njihet si shqetësim pasi era është e papërsëritshme kështu që kjo nuk mund të modelohet.

Për të rregulluar kontrolluesin ka shumë rregulla për të emëruar, por disa nga ato të mirat me të cilat jam nisur janë Cohen Coon dhe Zieger Nichols.

Modelimi i një sistemi është në përgjithësi pjesa më e rëndësishme pa një model të saktë, kontrolluesi i projektuar nuk do të përgjigjet sipas dëshirës.

Duhet të ketë informacion të mjaftueshëm këtu për të kuptuar se si funksionon kontrolluesi së bashku me disa kërkime individuale dhe kodi më poshtë mund të zbatohet një kontrollues me çdo kombinim të tre termave.

Hapi 2: Shkrimi i Kodit PID

Shkrimi i kodit PID
Shkrimi i kodit PID

Parimi bazë i kodit të gjetur në lidhjen e mëposhtme u mor dhe u modifikua pasi ky kod nuk funksionoi, por kishte shumë nga parimet e duhura të cilat dhanë një pikënisje të mirë. PID origjinal Kodi kishte disa gabime si p.sh

  • Funksionimi i vazhdueshëm - kontrolluesi është trashëgues diskret, kështu që kontrolluesi duhej të konfigurohej për të llogaritur vetëm të tre termat kur një input i ri ishte i disponueshëm. Puna për këtë simulim ishte për të kontrolluar nëse inputi kishte ndryshuar që nga hera e fundit. kjo funksionon vetëm për të simuluar funksionimin e saktë të kodit.
  • Koha e mostrës nuk kishte asnjë efekt në termin integral dhe derivativ - Kontrolluesi gjithashtu nuk e mori parasysh kohën në të cilën mostra po merrej, kështu që një vlerë e quajtur ndarës për kohën u shtua për të siguruar që termat integralë dhe derivativë po funksiononin në mënyrë korrekte intervali
  • Gabimi mund të jetë vetëm postiv - kur llogaritni gabimin ka pasur edhe një problem pasi gabimi nuk mund të ketë kuptim negativ kur sinjali i reagimit ka tejkaluar vlerën e referencës që kontrolluesi do të vazhdojë të rrisë daljen kur duhet të zvogëlohet.
  • Vlerat e fitimit për 3 termat ishin numra të plotë - në përvojën time kam gjetur gjithmonë se vlerat për 3 termat në kontrollues të jenë gjithmonë numra të pikave lundruese për shkak se Basys 3 nuk ka numër të pikave lundruese, vlerave duhet t'u jepet një vlerë numëruese dhe një vlerë emëruese e cila do të shërbente si një vepër për të tejkaluar këtë problem.

Kodi është i bashkangjitur më poshtë ka pjesën kryesore të kodit dhe një tryezë për të simuluar kodin. Dosja zip përmban kodin dhe testbench tashmë në Vivado në mënyrë që të hapet për të kursyer kohë. ekziston gjithashtu një test i simuluar i kodit i cili tregon daljen e përcjelljes së referencës kjo dëshmon se kodi po funksionon ashtu siç është menduar.

Hapi 3: Si të modifikoni për sistemin tuaj

Së pari jo të gjitha sistemet janë të njëjta, duhet analizuar hyrjet dhe daljet e sistemit. Në rastin tim dalja e pajisjes sime e cila më dha një vlerë për pozicionin ishte një sinjal analog dhe hyrja nga sistemi ishte një sinjal PWM. Do të thotë se ishte i nevojshëm një konvertim ADC. Për fat të mirë Basys 3 ka një ADC të integruar kështu që ky nuk ishte problem dalja e sensorit IR duhej të zvogëlohej në 0V-1V pasi kjo është diapazoni maksimal i ADC në bord. Kjo u bë duke përdorur një qark ndarës të tensionit i cili ishte bërë nga rezistenca 1k të ngritur si një rezistencë 3k në seri me një rezistencë 1k. Sinjali analog tani ishte brenda rrezes së ADC. Hyrja PWM në tifoz është në gjendje të drejtohet drejtpërdrejt nga dalja e një porte PMOD në Basys 3.

Hapi 4: Përfitimi i I/O në Basys 3

Ekziston një numër I/O në Basys 3 i cili lejoi korrigjim më të lehtë kur kodi po funksiononte. hyrja/dalja u krijua si më poshtë.

  • Shfaqja e Shtatë Segmenteve - Kjo u përdor për të treguar vlerën e referencës dhe vlerën në ADC në volt. Dy shifrat e para të ekranit të shtatë segmenteve tregojnë dy shifrat pas vendit dhjetor të vlerës ADC pasi vlera është midis 0-1V. Shifrat tre dhe katër në ekranin e shtatë segmenteve tregojnë vlerën e referencës në volt, kjo gjithashtu tregon dy shifrat e para pas vendimit dhjetor pasi diapazoni është gjithashtu midis 0-1V.
  • 16 LED - LED janë përdorur për të treguar vlerën e daljes për të siguruar që dalja ishte e ngopur dhe prodhimi po ndryshonte në mënyrë korrekte.

Hapi 5: Zhurma në daljen e sensorit IR

Kishte zhurmë në daljen e sensorit për të rregulluar këtë problem u vendos një bllok mesatar, pasi kjo ishte e mjaftueshme dhe kërkonte shumë pak punë për të përfunduar.

Hapi 6: Paraqitja e përgjithshme e kodit

Paraqitja e përgjithshme e Kodit
Paraqitja e përgjithshme e Kodit

Ekziston një pjesë e kodit për të cilën nuk është folur ende. Ky kod është një ndarës i orës i quajtur shkaktues. kjo pjesë e kodit nxit kodin ADC të marrë shembull. Kodi ADC kërkon një maksimum prej 2us për të përfunduar, kështu që hyrja aktuale dhe hyrja e mëparshme janë mesatare. 1us pas këtij mesatarizimi kontrolluesi llogarit termat P, I dhe D. paraqitja e përgjithshme e kodit dhe ndërfaqja tregohet në diagramin e lidhjes së improvizuar.

Hapi 7: Testimi

Duke testuar
Duke testuar

Kodi u vendos në Basys 3 dhe përgjigja e mëposhtme u regjistrua. referenca ndryshoi midis 2 vlerave. që është rasti në kodin e përfunduar të projektit bashkëngjitur. Videoja e bashkangjitur tregon këtë përgjigje në kohë reale. Lëkundjet prishen më shpejt në pjesën e sipërme të tubit pasi kontrolluesi ishte krijuar për këtë rajon, por kontrolluesi nuk punon aq më poshtë tubit pasi sistemi është jo-linear.

Hapi 8: Modifikimet për të përmirësuar projektin

Projekti funksionoi siç ishte menduar, por kishte disa modifikime të cilat do t'i kisha bërë nëse projekti mund të ishte zgjatur.

  • Zbatoni filtrin dixhital për të zbutur plotësisht zhurmën
  • vendosni kodin ADC, kodin mesatar dhe kodin e integrimit për të aktivizuar në mënyrë të njëpasnjëshme.
  • përdorni një sensor të ndryshëm për reagime pasi përgjigja jo-lineare e këtij sensori shkaktoi një larmi të gjerë problemesh me këtë projekt, por kjo është më shumë në anën e kontrollit jo në anën e kodimit.

Hapi 9: Punë shtesë

Gjatë verës unë shkrova kod për një kontrollues kaskade dhe zbatova modifikimet që rekomandova për kontrolluesin PID me një lak të vetëm.

Ndryshimet e bëra në kontrolluesin e rregullt PID

· Modeli i filtrit FIR i zbatuar koeficientët duhet të ndryshohen për të arritur frekuencën e dëshiruar të ndërprerjes. Zbatimi aktual është një filtër bredhi me 5 trokitje.

· Koha e kodit është vendosur në mënyrë që filtri të përhapë mostrën e re përmes dhe kur dalja të jetë gati termi integral do të aktivizohet që do të thotë se kodi mund të modifikohet për të punuar në intervale të ndryshme kohore me më pak përpjekje për të ndryshuar kodin.

· Rrjeti kryesor për lakun që drejton programin është zvogëluar gjithashtu pasi ky për lakun mori 7 cikle më parë kjo ngadalësoi shpejtësinë maksimale të funksionimit të Kontrolluesit, por duke zvogëluar gjendjet për lakun t 4 kjo do të thotë që blloku kryesor i kodit mund të funksionojë brenda 4 cikleve të orës.

Duke testuar

Ky kontrollues u testua dhe u krye ashtu siç ishte menduar. Unë nuk e fotografova këtë provë pasi kjo pjesë e projektit ishte vetëm për të mbajtur mendjen aktive. Kodi për testimin gjithashtu si tryezë do të jetë në dispozicion këtu, kështu që ju mund të testoni programin para zbatimit.

Pse të përdorni një kontrollues kaskade

Një kontrollues kaskade kontrollon dy pjesë të sistemit. Në këtë rast një kontrollues kaskade do të kishte një lak të jashtëm i cili është një kontrollues i cili ka reagime nga sensori IR. Lak i brendshëm ka reagime në formën e kohës midis pulseve nga tahometri i cili përcakton shpejtësinë e rrotullimit të ventilatorit. Duke zbatuar kontrollin, një përgjigje më e mirë mund të arrihet jashtë sistemit.

Si funksionon kontrolluesi i kaskadës?

Laku i jashtëm i kontrolluesit do të japë një vlerë për kohën midis puleve në kontrolluesin e lakut të brendshëm. Ky kontrollues do të rrisë ose zvogëlojë ciklin e punës për të arritur kohën e dëshiruar midis pulseve.

Zbatimi i modifikimeve në rig

Fatkeqësisht, unë nuk isha në gjendje t'i zbatoja këto modifikime në platformë pasi nuk kisha qasje në të. Unë testova kontrolluesin e rishikuar të një lak i cili funksionon siç ishte menduar. Unë nuk e kam testuar akoma kontrolluesin e kaskadës. Unë jam i bindur që kontrolluesi do të funksionojë, por mund të kërkojë disa modifikime të vogla për të punuar siç është menduar.

Duke testuar

Unë nuk isha në gjendje të testoja kontrolluesin pasi ishte e vështirë të simuloja dy burime hyrëse. Problemi i vetëm që mund të shoh me kontrolluesin e kaskadës është se ndërsa laku i jashtëm përpiqet të rrisë pikën e caktuar të furnizuar në lakun e brendshëm se një pikë e caktuar më e madhe është në fakt një RPS më e ulët për tifozin, por kjo mund të rregullohet lehtë. merrni pikën e caktuar nga vlera maksimale e sinjalit të pikës së caktuar (4095 - pika e caktuar - tacho_result).

Hapi 10: Përfundimi

Në përgjithësi projekti funksionon ashtu siç kam menduar kur filloi projekti kështu që jam i kënaqur me rezultatin. Faleminderit që morët kohë për të lexuar përpjekjen time për të zhvilluar një kontrollues PID në VHDL. Nëse dikush po përpiqet të zbatojë disa ndryshime të këtij sistemi dhe kërkon ndihmë për të kuptuar kodin, më kontaktoni, unë do të përgjigjem sa më shpejt. Kushdo që provon punën shtesë që është përpiluar, por nuk është zbatuar, ju lutem më kontaktoni për çdo dorë. Do ta vlerësoja shumë nëse dikush që e zbaton më njofton se si shkon.

Recommended: