navrhuji PID regulátor teploty vody. Buď přidá teplou nebo chladnou a tak nastaví správnou hodnotu na výstupu s čidlem. Program pro řízení je takovýto:
Kód: Vybrat vše
Ek = zadana - skutecna; //výpočet chyby
sum = sum + Ek;
Pk = Kp * Ek; //např 8 * chyba
Ik = (Ki) * (sum); //vypocet integracni slozky
Dk = Kd * ((Ek) - (Ekp)); //vypocet derivacni slozky
Uk = (Pk + Ik + Dk); //vysledna regulace
Ekp = Ek; //ulozeni
Ek = 0;
pohon pro regulaci má konstatntní rychlost přetáčení. Zatím si to zkouším s potenciometrem místo senzoru. K konstanty se snažím nějak vhodně nastavit, ale steně výsledná hodnota (Uk) regulace má určité překmity. Když se totiž hodnota skutečná blíží reálné, při změně i o pouhý stupeň okamžitě na chvilku vyskočí složka derivační a změní smysl otáčení. Hned potom se zase hodnota vrátí k původní a otáčí správně. Jde mi o to, jestli je to normální chování, či něco nastavuji špatně. Do oscilace se to podle mě nedostane. Regulátor zasahuje po 1sec. Jde mi o to, jestli ty překmity mám řešit v konstanách PID, anebo dalším kódem. Je takové zvláštní, že by to chtělo otáčet jako že přidávat studenou a pak na vteřinu zase přidalo teplou a hned zase přidávalo studenou atd. do požadované teploty.
Je mi jasné, že v zapojení s vodou se konstanty změní, jde mi spíš o ty překmity.