Close

Rychlé seznámení s PID regulátorem

Arduino PID regulátor

Asi jste už někdy zaslechli pojmy jako regulátor, PID regulátor a další. Ale co to znamená? Pojďme si je v rychlosti osvětlit.

Regulátor

Regulátor je zařízení pro ovlivňování regulovaného systému, automatizovanou regulaci, k dosažení a udržení jeho požadovaného stavu (Wikipedie).

Můžeme si ho tedy představit jako krabičku, která pozoruje náš regulovaný systém. Této krabičce „sdělíme“ naši představu o tom, jaký by měl být stav systému a ona se na základě pozorování systému rozhodne, jak na něj působit, aby dosáhl požadovaného stavu.

Příklad 1: Máme motor, ke kterému je připojený enkodér. Jsme tedy schopni změřit aktuální úhel natočení motoru. Sdělíme mu, že má udržovat úhel 90°. Regulátor zjistí, že je úhel natočení 45° a patřičně podle toho otočí osou motoru, aby byl dosažen požadovaný úhel.

Příklad 2: Chceme řídit domácí topení. Máme k dispozici aktuální teplotu a také možnost ovládat kotel. Ze znalosti aktuální a požadované teploty pak regulátor ví, kdy má zatopit a kdy naopak vypnout kotel (tak funguje termostat).

Srozumitelné? Jdeme dál!

PID regulátor

Regulátorů je více typů. My se dnes budeme zabývat jedním typem spojitých regulátorů, konkrétně PID regulátorem. Schéma PID regulátoru vidíme níže. Skládá se z několika částí.

Schéma PID regulátoru
Schéma PID regulátoru (zdroj: https://commons.wikimedia.org/wiki/File:Pid-feedback-nct-int-correct.png)

Nenechte se vyděsit matematickým zápisem. Princip částí je docela jednoduchý. 

Požadovaná hodnota a její odchylka od reálu

Když se podíváme na levou stranu obrázku, uvidíme vstup regulátoru Setpoint. To je informace o tom, jaké hodnoty zkoumané veličiny chceme dosáhnout (třeba požadovaná teplota). Od hodnoty Setpoint odečteme skutečnou hodnotu veličiny v systému (Output). Tento výpočet naznačuje levý modrý kruh se znakem suma (Σ). Tím získáme informaci o tom, jak moc se skutečná hodnota veličiny liší od požadované.

Části PID regulátoru

PID regulátor je složený ze tří menších regulátorů, které mohou být pro některé aplikace použity samostatně. Jsou to Proporcionální, Integrační a Derivační složka.

Proporcionální složka je ze všech tří nejjednodušší. Výstup tohoto regulátoru je přímo úměrný vstupu (tedy odchylce). Na příkladu s teplotou si funkci proporcionálního regulátoru můžeme představit tak, že když je odchylka velká, tak topíme/chladíme hodně, když je malá, tak topíme/chladíme málo. Problémem tohoto regulátoru je fakt, že regulátor může celkem jednoduše „přestřelit“, tedy například začít topit tolik, že požadovanou teplotu výrazně překročíme. Kvůli tomu může odchylka kmitat kolem nuly a nemusí nikdy dosáhnout ustálení na nule.

Integrační složka nepracuje pouze s aktuální hodnotou, ale i s předchozími hodnotami odchylky (s jejich integrálem, který se snaží minimalizovat). Díky tomu je schopný včas upravit řízení systému, aby bylo přibližování k ideálu plynulejší a odchylka tolik nekmitala kolem nuly.

Derivační složka zkoumá to, jak se odchylka vyvíjela v poslední době, tedy jak moc rychle klesá, nebo roste a podle toho je schopna upravit svůj výstup. Vliv této složky je nejvíce patrný v případě, kdy se stav systému blíží našemu optimu (a tedy se odchylka blíží k nule) a je schopna ještě více potlačit kmitání odchylky kolem nuly.

Tyto představené regulátory je možné někdy použít i samostatně, ale obecně nejlepší výsledky dává právě jejich kombinace – PID. V tomto případě ještě nastavíme ke každému regulátoru váhu, kterou přikládáme jeho výstupu a výsledky sečteme. Tím získáme informaci o tom, jak moc musíme na náš systém působit (třeba zatopením), aby dosáhnul Setpointu.

Vyzkoušejte si

Kutil MR Inovative pro ukázku PID regulátoru vytvořil program, který umí ovládat obyčejný DC motor tak, aby se natočil na požadovaný úhel (zkoušeli jste to někdy s DC motorem?). K jeho řízení využívá desku Arduino UNO, na které běží software s PID regulátorem. Ten je dostupný v knihovně Arduino_PID (ale najdete i další). Jako zpětná vazba pro regulátor je použit enkodér. Zařízení komunikuje přes Bluetooth s aplikací, která slouží k jeho řízení.

Kód je dostupný zde. Další informace naleznete pod videem.

Přeloženo z https://blog.arduino.cc/2018/12/03/simple-pid-control-intro-device/ a rozšířeno.

Zbyšek Voda

Napsat komentář