regulator PID

Zaujimave ze tu este nikto neriesil takuto regulaciu. Nejake rady a nazory pripadne vzorka C kodu. Robim regulator rychlosti motora, fazovou regulaciu cez triak, a ukocirovat to aby to drzalo nastavene otacky nieje sranda. Navyse frekvencia z tacha tiez nieje nic moc. Zatial som nacucal nejake vedomosti ohladom PID, a nejaku jednoduchu verziu snad zosmolim, ale niet nad radu od niekoho kto to robil.

Před časem jsem řešil stabilizaci otáček synchronního 3f generátoru poháněného vodní turbínou. Je to podobná úloha. Hodně záleží na HW konfiguraci, t.j. jak rychle se dozvíš že otáčky/fáze se změnili a jaké máš prostředky k nápravě toho stavu. Možná by ses mohl trochu rozepsat, jak ten Tvůj systém vypadá.

No vyzera to zle, lebo frekvenciu meriam na Hz tak ze ri najmensich otackach mam 20Hz a ri max 2000Hz, kedze vyuzivam 256b timer tak som to musel osekat a kazdych 100ms zistujem otacky dostavam hodnotu 2-200, to bude asi dost zle aby to mohlo korektne fungovat kedze zmena o jeden stupen znamena zmenu otaciek o 150ot. Co sa tyka fazovej regulacie tam mam timer2 ten umoznuje regulovat fazu v 1024 krokoch co je viac ako dost. Troska mi robi starosti aj to ze fazova regulacia nieje linearna. Navyse potrebujem urcitu stabilitu a okamzitu reakciu pri zatazeni,proste asi to nepojde kedze nemam dostatocne citlive udaje o zmene otacok.

Zkus měřit periodu. Za prvé budeš rychlejší, za druhé budeš mít větší rozlišení. Pak možná bude lepší řešit regulaci otaček jako fázový závěs a z něj odvodit spínání triaku. pokud to není střídavý motor, regulovat mužeš v každé půlvlně. Doporučuju linearizovat regulační zásah tabulkou. Pro PID způsob je to zásadní.

Tak som to prekopal, timerom1 meriam cas medzi impulzma od tacha, su dost kratke, problem ale nastal ze 256 moznosti nastavenia uhla zopnutia triaku je male. res zmena o 1 hodnotu je prilis velka. Pravdu povediac uz ma to nebavi :slight_smile: nejaky napad linearizacie sinusovky ?

Nejako to chodi, nejaka finta ako odhadnut konstanty re P,D, I. ?

Říkal si že fázovou regulaco máš v 1024 stupních ne ? Udělej linerizaci tabulkou (0-99)% nebo (0-255) ze 100% V tabulce bude úhel otevření. Reguluj v každé půlperiodě (pokud už to tak neděláš). Obvykle stačí regulátor PI. Když vyladíš tento tak mužeš kvůli dynamice přidat i D složku ale musíš vědět co od toho chceš. V implementaci regulátoru nezapomeň na antiwindup v algoritmu. Jo že je s tím sraní, tak to máš pravdu. Existuji metody jak udělat samoučící PID. Já jsem ladil vždy ručně.

Ještě k tý linearizaci - Výkon jde podle U^2. Takže ty musíš sintegrovat kvadrát sinu od bodu otevření až k bodu zavření a to je průměrný výkon který jsi do systému dodal. Takže to vede na určitý interál v mezích a výsledkem je nelineární rovnice kde na jedné straně je parametrem úhel otevření a straně druhé průměrný výkon. Jestli to vyřešíš analiticky nebo numericky je na tobě.

1024 nemam som musel vymenit citac za 8b :frowning:

No kedze sa mi zdalo ze 16f628 to sprehladom zvladne (velka chyba) tak mam timer1 16b na meranie casu medzi impulzmai z tachogeneratora. A TMR0 8b pre riadenie triaku. Prerusenie od sietovej sinusovky mam kazdych 10ms, tam sa spusta casovac TMR0 pre impulz pre triak.

Silne uvazujem usmernit sietove napatie dat kondik a mosfet, a vyuzit timer2 a PWM, tym padom nemusim linearizovat sinusovku, navyse lepsi krutak otazka je ci to zvladne motor predsa len 320V. Motor je univerzalny s uhlikami z pracky.

problem je ze s rozlisenim 256 nelinearizujem sinusovku, budu tam skoky a navyse zuzim rozsah mozno na 120 hodnot a je otazne ci to potom bude stacit a ci sa stym patlat. navyse ani miesto v uP nieje kedze tam vyuzivam kniznice ktore su narocne na pamet. (to viem osekat)

Kedysi som riesil podobny problem a spravil som regulaciu jednoducho tak ze som vykon riadil tym ze som vynechaval periody, tzn. pustil som napr. 80 period a 20 som vynechal a potom sa cyklus opakoval ak bola poziadavka na vykon rovnaka. Samozrejme limity si nastavit mozes podla seba. Islo takisto o regulaciu motora, fungovalo to bezchybne no samozrejme zalezi aj na tom aku zataz ma ten motor tocit, ale tento sposob regulacie sa u motorov bezne pouziva. Inak nieje vhodne riesit to timerom, elegantnejsie je pouzit jednotku Input-Capture ktorou budes merat dlzku polperiody a pomocou Output-Compare budes hadzat impulzy na triak/tyristory ale neviem kolko bitove mas tieto jednotky vo svojom svabe

Vynechavat polvlny nemozem,to by cukalo, tym compare je dobry napad. To by mohlo chodit. Dakujem za napady. Ono pri malych otackachvto ako tak chodil ale vo vyssich nie a cuka pri zatazi.

Nojono PIC :slight_smile: Tak dej silnější, nebo nějakej malej arm. Nebo zvěč rozsah toho TMR0 přes přerušení. PWM je lepší ale budeš tam mít složitější hardware a pokud to neumíš tak to nedělej, bude to nestabilní…

Půlvny né. Ten systém by musel mít ohromnou setrvačnost aby to nevadilo.

Ja som tak reguloval motor z pracky, ktora ked bola zatazena tak ohromnu zotrvacnost teda nemala a chodilo to dobre ale tak uz rob ako vies

Momentalne mam pauzu, naahodil som pwm spinam cca 312V 230 sietovych usmernenych. Sttale to nechodi podla predstav, budem musiet zbuchat nieco z hyperterminalom aby som vedel menit priamo hodnoty PID… uz vidim ako to tam nevojde :frowning:

Tak troska som sa pohol dalej, program som nasypal do arduino nano. Res vyuzil atmega328 na moje pokusy. Vecsina PID regulatorov z netu nefunkcna zacinam mat pocit ze PID je ako volna energia kazdy o tom hovori a nikomu nefunguje.
Ale urcity uspech mam tak uvidime som vo faze skladania regulatora do krabice a montaze na stroj. Parametre som troska poladil. Tak uvidi.e ked to bude poskladane v testovacej verzii.

Ahoj.
Nevím, normálně jsem si stáhnul PID regulátor, který je uvedený v Appnote AVR221 a normálně funguje. Běhá na AtMega8.

Atlan: A co zvolit něco pořádnýho? Třeba například tohle je jako na zavolanou…

Pořád nechápu co Ti na PID nefunguje. Pokud můžeš regulovat rovnou PWM a máš tam tacho, odezva bude dobrá. Dotaz: Tacho - kolik impulsů na otačku máš ? Motor - jaký motor tam máš ? PWM - máš plnej most ?

Mahoney: to je naprosto zbytečně silný a složitý. Stačila by mu M0 ARM, třeba STM32F030. Mám ji použitou v regulátoru proudu pro LED a tam řídí pomocí dvou paralelních PID proud a napětí. Výpočet běží na 65KHz a je to napsaný v C. Pro motor by mu stačil 1KHz a to i ta ATMEGA zvládne, když to bude počítat v INTECH.

Tacho ma 20 imp na otacku. Ak by som sledoval 2 hrany tak 40.
Tu app pozriem. Motor je z pracky tj max 15500ot. A potrebujem regulovat pod od 300 do 9000ot (cim menej tak lepsie)
Nemam plny most len klasika. 230v Mostik kondik a z gnd 47n60c motor a paralelne dioda.
list.hw.cz/pipermail/hw-list/200 … 28206.html to su veci