Obsah:
- Zásoby
- Krok 1: Základná teória ovládania
- Krok 2: Napíšte kód PID
- Krok 3: Ako upraviť váš systém
- Krok 4: Využitie výhod I/O na základniach 3
- Krok 5: Hluk na výstupe infračerveného senzora
- Krok 6: Celkové rozloženie kódu
- Krok 7: Testovanie
- Krok 8: Úpravy na zlepšenie projektu
- Krok 9: Práca navyše
- Krok 10: Záver
Video: PID regulátor VHDL: 10 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:58
Tento projekt bol mojím posledným projektom na dokončenie bakalárskeho titulu Honors z Cork Institute of Technology. Tento návod je rozdelený do dvoch sekcií, prvá bude pokrývať hlavnú časť kódu PID, čo je hlavným účelom projektu, a druhá časť bude zahŕňať prepojenie kódu, ktorý bol implementovaný na vývojovej doske Basys 3 a potom prepojený s pingpongovou loptou. levitačná súprava. Teoretická a zostrojená zostava je zobrazená na priložených obrázkoch.
Zásoby
Simulácia
Suita Vivado Design Suite
Implementácia (v zátvorkách je to, čo bolo použité pre môj projekt)
- Doska FPGA, ktorá môže vstupovať a vystupovať z digitálnych/analógových signálov (základy 3)
- systém, ktorý je ovládateľný jediným zdrojom spätnej väzby (Ping Pong Ball Levitation Rig)
Zostava
- Polykarbonátová trubica
- 5V ventilátor
- IR senzor
- 3D tlačená základňa (Tento tutoriál dokumentuje konštrukciu zariadenia, do ktorého bol pridaný senzor, aby poskytoval spätnú väzbu, ale zariadenie bolo vo všeobecnosti rovnaké)
- 1k odpory
- Breadboard s 5V a GND lištou
Krok 1: Základná teória ovládania
Myslel som si, že pridanie základnej teórie ovládania poskytne každému, kto by sa chcel pokúsiť implementovať tento kód, dobrý základ, od ktorého môže začať.
Priložený diagram je rozložením jednosmyčkového regulátora.
r- Je referencia. To určuje, kam sa má ovládač dostať.
e-je chyba. Toto je rozdiel medzi hodnotou na vašom senzore a vašou referenciou. napr. e = r- (d+výstup senzora).
K-Toto je ovládač. Ovládač sa môže skladať z troch pojmov. Tieto výrazy sú P, I a D. Všetky tri výrazy majú multiplikátory nazývané Kp, Ki a Kd. Tieto hodnoty určujú odozvu regulátora.
- P-proporcionálne. Striktne regulátor P bude mať výstup úmerný aktuálnej chybe. Regulátor P sa ľahko implementuje a pracuje rýchlo, ale nikdy nedosiahne vami nastavenú hodnotu (referencia).
- I-Integral. Prísne integrálny regulátor zhrnie predchádzajúcu chybu, ktorá nakoniec dosiahne požadovanú referenciu. Tento ovládač je vo všeobecnosti príliš pomalý na implementáciu. Pridaním výrazu P sa skráti čas potrebný na dosiahnutie referencie. Musí sa vziať do úvahy čas, z ktorého sa vstup vzorkuje. Integrovaný termín je integrovaný vzhľadom na čas.
- D-derivát. Derivačný termín bude mať výstup, ktorý závisí od rýchlosti zmeny chyby. Tento termín sa spravidla používa s výrazom P alebo s výrazom PI. Pretože je to úmerné rýchlosti zmeny chýb, hlučný singel bude mať zosilnený hluk, čo môže spôsobiť, že systém bude nestabilný. Je tiež potrebné vziať do úvahy čas, pretože odvodený výraz je tiež vzhľadom na čas.
U- Toto je riadiaci signál. Tento signál je vstupom do súpravy. V prípade tohto projektu u je vstup signálu PWM do ventilátora na zmenu rýchlosti.
G- Toto je systém, ktorý je kontrolovaný. Tento systém je možné matematicky modelovať v doméne S alebo Z. Systémy môžu byť n -tého poriadku, ale pre niekoho, kto začína s ovládaním, by sa mal pravdepodobne domnievať, že ide o systém prvého rádu, pretože je oveľa jednoduchšie ho vypočítať. Toto je súhrn informácií o modelovom systéme, ktoré nájdete na internete. V závislosti od času vzorkovania senzora je model systému buď diskrétny alebo kontinuálny. To má drastický vplyv na ovládač, preto sa odporúča skúmať oba.
d- Ide o poruchu, ktorá sa pridáva do systému. Porucha je vonkajšími silami, s ktorými model systému nepočíta. Jednoduchým príkladom by bol dron, ktorý by ste chceli vznášať v 5 metroch, pričom príde nárazový vietor a spustí dron o 1 meter. Ovládač premiestni dron potom, čo dôjde k rušeniu. Toto je známe ako rušenie, pretože vietor je neopakovateľný, takže to nemožno modelovať.
Na vyladenie ovládača je príliš veľa pravidiel na pomenovanie, ale niektoré dobré, s ktorými som začal, sú Cohen Coon a Zieger Nichols.
Modelovanie systému je vo všeobecnosti najdôležitejšou súčasťou bez presného modelu, ktorý ovládač, ktorý bol navrhnutý, nebude reagovať podľa potreby.
Tu by malo byť dostatok informácií na pochopenie toho, ako kontrolér funguje, spolu s individuálnym prieskumom a nižšie uvedeným kódom je možné implementovať ovládač s ľubovoľnou kombináciou troch výrazov.
Krok 2: Napíšte kód PID
Základný princíp kódu, ktorý sa nachádza na nasledujúcom odkaze, bol prevzatý a upravený, pretože tento kód nefungoval, ale mnohé zásady boli správne, čo poskytlo dobrý východiskový bod. Pôvodný PID Kód mal niekoľko chýb ako napr
- Nepretržitá prevádzka - regulátor je inherentne diskrétny, takže regulátor musel byť nastavený tak, aby počítal všetky 3 výrazy iba vtedy, keď bol k dispozícii nový vstup. Úlohou tejto simulácie bolo skontrolovať, či sa vstup od posledného času zmenil. toto funguje iba na simuláciu správneho fungovania kódu.
- Čas vzorky nemal žiadny vplyv na integrálny a derivačný výraz - kontrolér tiež nezohľadnil čas, v ktorom sa vzorka preberala, takže bola pridaná hodnota nazývaná delič času, aby sa zaistilo, že integrálne a derivačné termíny fungujú správne. interval.
- Chyba mohla byť iba postuitívna - pri výpočte chyby bol tiež problém, pretože chyba nikdy nemohla byť záporná, čo znamená, že keď signál spätnej väzby prekročil referenčnú hodnotu, regulátor bude naďalej zvyšovať výstup, aj keď by sa mal znižovať.
- Ziskové hodnoty pre 3 termíny boli celé čísla - podľa mojich skúseností som vždy zistil, že hodnoty pre 3 termíny v regulátore majú byť vždy čísla s pohyblivou rádovou čiarkou, pretože základy 3 nemajú číslo s pohyblivou rádovou čiarkou, hodnotám musí byť priradená hodnota čitateľa a hodnota menovateľa, ktorá by slúžila ako riešenie tohto problému.
Kód je priložený nižšie, tam je hlavná časť kódu a testovací stôl na simuláciu kódu. Priečinok zip obsahuje kód a testovací stôl, ktoré už sú vo Vivado, takže ho môžete otvoriť, aby ste ušetrili čas. existuje aj simulovaný test kódu, ktorý ukazuje výstup sledujúci referenciu, čo dokazuje, že kód funguje tak, ako mal.
Krok 3: Ako upraviť váš systém
Po prvé, nie všetky systémy sú rovnaké, jeden musí analyzovať vstupy a výstupy systému. V mojom prípade bol výstup z môjho zariadenia, ktorý mi dal hodnotu polohy, analógový signál a vstup zo systému bol signál PWM. To znamená, že bola potrebná konverzia ADC. Našťastie Basys 3 má vstavaný ADC, takže to nebol žiadny problém. Výstup IR senzora musel byť zmenšený na 0V-1V, pretože to je maximálny rozsah palubného ADC. To sa uskutočnilo pomocou obvodu deliča napätia, ktorý bol vyrobený z 1k odporov nastavených ako 3k odpor v sérii s 1k odporom. Analógový signál bol teraz v dosahu ADC. Vstup PWM do ventilátora je schopný priamo ovládať výstup z portu PMOD na Basys 3.
Krok 4: Využitie výhod I/O na základniach 3
Existuje niekoľko I/O na základniach 3, ktoré umožňovali jednoduchšie ladenie pri spustenom kóde. I/O bol nastavený nasledovne.
- Sedemsegmentový displej - Toto sa používa na zobrazenie hodnoty referencie a hodnoty na ADC vo voltoch. Prvé dve číslice sedemsegmentového displeja zobrazujú dve číslice za desatinným miestom hodnoty ADC, pretože hodnota je v rozsahu 0-1V. Číslice tri a štyri na sedemsegmentovom displeji zobrazujú referenčnú hodnotu vo voltoch, čo tiež ukazuje prvé dve číslice za desatinným miestom, pretože rozsah je tiež medzi 0-1V.
- 16 LED diód - LED diódy slúžili na zobrazenie hodnoty výstupu, aby sa zabezpečilo, že výstup bude nasýtený a výstup sa zmení správne.
Krok 5: Hluk na výstupe infračerveného senzora
Na vyriešení tohto problému bol hluk na výstupe snímača, pričom bol zavedený priemerovací blok, pretože to bolo dostatočné a na dokončenie bolo potrebné veľmi málo práce.
Krok 6: Celkové rozloženie kódu
Existuje jeden kus kódu, o ktorom sa ešte nehovorilo. Tento kód je oddeľovač hodín nazývaný spúšťač. tento kúsok kódu spustí vzorkovanie kódu ADC. dokončenie kódu ADC trvá maximálne 2us, takže súčasný a predchádzajúci vstup sa spriemerujú. 1us po tomto spriemerovaní regulátor vypočíta P, I a D termíny. celkové rozloženie kódu a rozhrania je zobrazené v provizórnom diagrame pripojenia.
Krok 7: Testovanie
Kód bol nasadený na základni 3 a bola zaznamenaná nasledujúca odpoveď. referencia sa zmenila medzi 2 hodnotami. čo je prípad v priloženom kóde projektu. Priložené video ukazuje túto reakciu v reálnom čase. Oscilácie sa v hornej časti trubice rozkladajú rýchlejšie, pretože regulátor bol navrhnutý pre túto oblasť, ale regulátor nefunguje tak dobre v trubici, pretože systém je nelineárny.
Krok 8: Úpravy na zlepšenie projektu
Projekt fungoval podľa plánu, ale došlo k niekoľkým úpravám, ktoré by som urobil, keby bolo možné projekt predĺžiť.
- Implementujte digitálny filter na úplné zníženie hluku
- nastavte kód ADC, priemerný kód a integračný kód na postupné spúšťanie.
- použite iný snímač na spätnú väzbu, pretože nelineárna odozva tohto senzora spôsobila celý rad problémov s týmto projektom, ale to je viac na strane ovládania, nie na strane kódovania.
Krok 9: Práca navyše
V lete som napísal kód pre kaskádový regulátor a implementoval som úpravy, ktoré som odporučil pre jednosmyčkový PID regulátor.
Úpravy vykonané na bežnom PID regulátore
· Implementovaná šablóna filtra FIR koeficienty musia byť zmenené, aby sa dosiahla požadovaná medzná frekvencia. Aktuálnou implementáciou je jedľový filter s 5 klepnutiami.
· Načasovanie kódu bolo nastavené tak, aby filter šíril novú vzorku a keď je výstup pripravený, spustí sa integrálny termín, čo znamená, že kód je možné upraviť tak, aby pracoval v rôznych časových intervaloch s menším úsilím o zmenu. kód.
· Bola znížená aj hlavná slučka for, ktorá poháňa program, pretože táto slučka predtým trvala 7 cyklov, čím sa spomalila maximálna prevádzková rýchlosť ovládača, ale znížením stavov for loop t 4 to znamená, že hlavný blok kódu môže fungovať do 4 hodinových cyklov.
Testovanie
Tento ovládač bol testovaný a vykonaný podľa plánu. Tento dôkaz som nevyfotil, pretože táto časť projektu slúžila iba na udržanie aktívnej mysle. Tu bude k dispozícii kód na testovanie aj testovací stôl, aby ste si mohli program pred implementáciou vyskúšať.
Prečo používať kaskádový ovládač
Kaskádový ovládač ovláda dve časti systému. V tomto prípade by kaskádový regulátor mal vonkajšiu slučku, ktorou je regulátor so spätnou väzbou od infračerveného senzora. Vnútorná slučka má spätnú väzbu vo forme času medzi impulzmi z tachometra, ktorý určuje rýchlosť otáčania ventilátora. Implementáciou kontroly je možné zo systému dosiahnuť lepšiu odozvu.
Ako funguje kaskádový regulátor?
Vonkajšia slučka regulátora privedie hodnotu času medzi pulami do regulátora vnútornej slučky. Tento regulátor potom zvýši alebo zníži pracovný cyklus, aby sa dosiahol požadovaný čas medzi impulzmi.
Implementácia úprav na súprave
Tieto úpravy sa mi bohužiaľ nepodarilo implementovať na súpravu, pretože som k nej nemal prístup. Otestoval som revidovaný jednosmyčkový ovládač, ktorý funguje podľa plánu. Kaskádový ovládač som ešte netestoval. Som si istý, že ovládač bude fungovať, ale môže vyžadovať určité mierne úpravy, aby fungoval podľa plánu.
Testovanie
Nepodarilo sa mi otestovať ovládač, pretože bolo ťažké simulovať dva vstupné zdroje. Jediný problém, ktorý na kaskádovom ovládači vidím, je ten, že keď sa vonkajšia slučka pokúša zvýšiť žiadanú hodnotu dodávanú do vnútornej slučky, že väčšia požadovaná hodnota je v skutočnosti nižší RPS pre ventilátor, ale dá sa to ľahko opraviť. vezmite požadovanú hodnotu z maximálnej hodnoty signálu požadovanej hodnoty (4095 - požadovaná hodnota - výsledok tacho).
Krok 10: Záver
Celkovo projekt funguje tak, ako som chcel, keď sa projekt začal, takže som s výsledkom spokojný. Ďakujem, že ste si našli čas na prečítanie môjho pokusu o vývoj PID regulátora vo VHDL. Ak sa niekto pokúša implementovať nejakú variáciu tohto systému a vyžaduje istotu v porozumení kódu, kontaktujte ma, čo najskôr. Každý, kto vyskúša prácu navyše, ktorá bola vykonaná, ale nebola implementovaná, kontaktujte ma pre akúkoľvek ruku. Veľmi by som ocenil, keby mi ktokoľvek, kto ho implementuje, dal vedieť, ako to prebieha.
Odporúča:
Nastaviteľný regulátor napätia LM317: 6 krokov
LM317 Nastaviteľný regulátor napätia: Tu by sme chceli hovoriť o nastaviteľných regulátoroch napätia. Vyžadujú komplikovanejšie obvody ako lineárne. Môžu byť použité na výrobu rôznych výstupov pevného napätia v závislosti od obvodu a tiež nastaviteľného napätia pomocou potenciometra. Ja
Regulátor otáčok motora: 8 krokov
Regulátor otáčok motora: V tomto projekte vám ukážem spôsob, akým som vyrobil regulátor otáčok motora & Tiež ukážem, aké ľahké môže byť zostavenie regulátora otáčok motora pomocou IC 555. Začnime
Regulátor napätia 12 až 3 V: 8 krokov
Regulátor napätia 12 až 3 V: Môžete jednoducho prerušiť akékoľvek napájanie jednosmerným prúdom pomocou dvoch rezistorov. Delič napätia je základný a najľahšie zapojený obvod na zníženie napájania jednosmerným prúdom. V tomto článku vytvoríme jednoduchý obvod na zníženie napätia 12 V na 3
VYROBTE REGULÁTOR DPS SMD 7805: 9 krokov
VYROBTE REGULÁTOR DPS SMD 7805: Dobrý deň, vitajte pri inom základnom, ale užitočnom návode Zaujímalo by vás, či skúsite spájkovať súčiastky SMD alebo vytvoriť mini PCB pre regulátor napätia 78XX? Povedzte, že nič viac … Ukážem u ako vyrobiť mini PCB s krásnou LED diódou
Regulátor teploty PID: 7 krokov
Regulátor teploty PID: Môj priateľ stavia plastový extrudér na recykláciu plastov (https://preciousplastic.com). Potrebuje ovládať teplotu extrúzie. Na tento účel používa pás ohrievača trysiek. V tejto tryske je termočlánok a vykurovací uni