Obsah:

PID regulátor teploty: 7 kroků
PID regulátor teploty: 7 kroků

Video: PID regulátor teploty: 7 kroků

Video: PID regulátor teploty: 7 kroků
Video: XMT 7100 PID teplotní regulátor 2024, Červenec
Anonim
PID regulátor teploty
PID regulátor teploty

Můj přítel staví plastový extrudér pro recyklaci plastů (https://preciousplastic.com). Potřebuje kontrolovat teplotu vytlačování. Za tímto účelem používá pás ohřívače trysek. V této trysce je termočlánek a topná jednotka, které nám umožňují měřit teplotu a nakonec dosáhnout požadované teploty (vytvořit smyčku zpětného působení).

Když jsem slyšel, že potřebuje několik PID regulátorů ovládat všechny tyto pásy ohřívačů trysek, okamžitě mi to dalo chuť zkusit si vyrobit vlastní.

Krok 1: Nástroje a materiál

Nástroje

  • páječka, pájecí drát a tavidlo
  • pinzeta
  • frézka (pro prototypování DPS je možné i chemické leptání) (DPS si můžete objednat také pomocí mého souboru orla)
  • teploměr (pro kalibraci)
  • arduino (jakýkoli typ) nebo programátor AVR
  • Sériový kabel FTDI TTL-232 USB
  • laserová řezačka (volitelně)
  • multimetr (ohmmetr a voltmetr)

Materiál

  • Bakelitová jednostranná měděná deska (minimálně 60 x 35 mm) (zničil jsem pilu koupí sklolaminátu, takže buďte opatrní: bakelit)
  • Mikrokontrolér Attiny45
  • Regulátor napětí LM2940IMP-5
  • Operační zesilovač AD8605
  • Tranzistor NDS356AP
  • spousta rezistorů a kondenzátorů (mám knihu adafruit SMT 0603)
  • AC-DC transformátor 230V-9V
  • Diody 1N4004
  • polovodičové relé
  • lak na nehty (volitelně)

Krok 2: Leptejte desku plošných spojů

Leptejte desku plošných spojů
Leptejte desku plošných spojů
Leptejte desku plošných spojů
Leptejte desku plošných spojů
Leptejte desku plošných spojů
Leptejte desku plošných spojů

K frézování DPS jsem použil svůj CNC transformovaný Proxxon MF70 CNC a kónický koncový bit. Myslím, že jakýkoli koncový bit pro gravírování by fungoval. Soubor Gcode byl přímo generován orlem a pluginem pcb-gcode. Byly provedeny pouze tři průchody, aby se zajistilo dobré oddělení trasy, ale bez trávení hodin mletím veškeré mědi. Když PCB vyšla z CNC stroje, vyčistil jsem cesty řezačkou a otestoval je multimetrem.

Parametry: rychlost posuvu 150 mm/min, hloubka 0,2 mm, rychlost otáčení 20 000 t/min

Krok 3: Pájejte součásti

Pájejte součásti
Pájejte součásti

Pinzetou a páječkou umístěte součásti na správná místa a připájejte je pomocí tavidla (pomáhá) a počínaje nejmenšími součástkami. Znovu zkontrolujte pomocí multimetru, zda nemáte zkrat nebo nepřipojené prvky.

Zisk zesilovače můžete zvolit výběrem požadovaného odporu (zisk = (R3+R4)/R4). Vzal jsem 1M a 2,7k, takže v mém případě je zisk přibližně 371. Nemohu znát přesnou hodnotu, protože používám 5% toleranční odpor.

Můj termočlánek je typu J. To znamená, že dává 0,05 mV pro každý stupeň. Se ziskem 371 získám 18,5 mV na stupeň z výstupu zesilovače (0,05*371). Chci měřit kolem 200 ° C, takže výstup zesilovače by měl být kolem 3,7V (0,0185*200). Výsledek by neměl překročit 5V, protože používám referenční napětí 5V (externí).

Obrázek odpovídá první (nefungující) verzi, kterou jsem vytvořil, ale princip je stejný. V této první verzi jsem použil relé a dal jej přímo doprostřed desky. Jakmile jsem přepínal s vysokým napětím, měl jsem hroty, díky nimž se ovladač restartoval.

Krok 4: Naprogramujte mikrokontrolér

Naprogramujte mikrokontrolér
Naprogramujte mikrokontrolér

Pomocí arduina jako v tomto instructables: https://www.instructables.com/id/How-to-Program-a… můžete načíst kód.

K programování Attiny 45 jsem použil profesionální cetku s kabelem FTDI-USB, ale tato metoda je ekvivalentní. Poté jsem zapojil pin PB1 a GDN přímo do RX a GND kabelu FTDI-USB, abych přijal sériová data a mohl ladit.

Ve skici arduina byste měli nastavit všechny parametry na nulu (P = 0, I = 0, D = 0, K = 0). Budou nastaveny během kroku ladění.

Pokud nevidíte spálený kouř nebo zápach, můžete přeskočit na další krok!

Krok 5: Sestavení a kalibrace

Sestavování a kalibrace
Sestavování a kalibrace
Sestavování a kalibrace
Sestavování a kalibrace

Pozor: Nikdy nezapojujte napájecí zdroj a 5V z programátoru současně! Jinak uvidíte kouř, který jsem v předchozím kroku kouřil. Pokud si nejste jisti, že to můžete respektovat, můžete jednoduše odstranit 5v pin pro programátora. Nechal jsem to, protože pro mě bylo pohodlnější naprogramovat ovladač bez napájení a testovat ovladač, aniž by se mi ohřívač ohříval před obličejem jako blázen.

Nyní můžete rozpojit termočlánek na zesilovači a zjistit, zda něco měříte (respektujte polaritu). Pokud má váš topný systém pokojovou teplotu, měli byste naměřit nulu. Zahřívání rukou by již mělo vést k některým malým hodnotám.

Jak číst tyto hodnoty? Jednoduše zapojte piny PB1 a GDN přímo do RX a GND kabelu FTDI-USB a otevřete sériový monitor arduino.

Když se ovladač spustí, odešle červenou hodnotu vnitřním teploměrem čipu. Takto kompenzuji teplotu (bez použití vyhrazeného čipu). To znamená, že pokud se teplota během provozu změní, nebude brána v úvahu. Tato hodnota se u jednotlivých čipů velmi liší, takže je třeba je zadat ručně v definici REFTEMPERATURE na začátku skici.

Před připojením polovodičového relé ověřte, zda je napěťový výstup v rozsahu podporovaném vaším relé (v mém případě 3V až 25V obvod generuje kolem 11V). (respektujte polaritu)

Tyto hodnoty nejsou teplotami ve stupních nebo Fahrenheitech, ale výsledkem analogově -digitální konverze, takže se pohybují mezi 0 a 1024. Používám referenční napětí 5 V, takže když je výstup zesilovače blízko 5 V, výsledek převodu je blízko 1024.

Krok 6: Ladění PID

Ladění PID
Ladění PID

Musím zmínit, že nejsem odborník na ovládání, takže jsem našel některé parametry, které pro mě fungují, ale nezaručuji, že to funguje pro všechny.

Nejprve musím vysvětlit, co program dělá. Implementoval jsem jakýsi softwarový PWM: čítač se zvyšuje při každé iteraci, dokud nedosáhne 20 000 (v takovém případě se resetuje na 0). Zpoždění zpomalí smyčku na milisekundu. Nejnáročnější z nás si všimne, že kontrolní období je přibližně 20 sekund. Každá smyčka začíná porovnáním mezi čítačem a prahovou hodnotou. Pokud je čítač nižší než prahová hodnota, pak relé vypnu. Pokud je větší, zapnu ho. Výkon tedy reguluji nastavením prahu. Výpočet prahu probíhá každou sekundu.

Co je to PID regulátor?

Chcete -li řídit proces, máte hodnotu, kterou měříte (analogData), hodnotu, které chcete dosáhnout (tempCommand), a způsob, jak upravit stav tohoto procesu (seuil). V mém případě se to provádí pomocí prahu (ve francouzštině „seuil“, ale mnohem snáze se píše a vyslovuje (vyslovuje „sey“)), který určuje, jak dlouho bude vypínač zapnutý a vypnutý (pracovní cyklus), tedy množství energie. vložte do systému.

Všichni souhlasí s tím, že pokud jste daleko od bodu, kam chcete dosáhnout, můžete provést velkou opravu a pokud jste blízko, je potřeba malá oprava. To znamená, že oprava je funkcí chyby (chyba = analogData-tempComand). Ano, ale za kolik? Řekněme, že chybu vynásobíme faktorem (P). Toto je proporcionální ovladač. Mechanicky pružina provádí proporcionální korekci, protože síla pružiny je úměrná stlačení pružiny.

Pravděpodobně víte, že vaše zavěšení kol se skládá z pružiny a tlumiče (tlumiče). Úkolem tohoto tlumiče je zabránit tomu, aby se vaše auto odrazilo jako trampolína. Přesně to derivační výraz dělá. Jako tlumič generuje reakci, která je úměrná odchylce chyby. Pokud se chyba rychle mění, oprava se sníží. Snižuje oscilace a překmity.

Termín integrátor je zde proto, aby se vyhnul trvalé chybě (chybu integruje). Konkrétně se jedná o čítač, který se zvyšuje nebo snižuje, pokud je chyba kladná nebo záporná. Poté je korekce zvýšena nebo snížena podle tohoto čítače. Nemá žádnou mechanickou ekvivalenci (nebo máte nápad?). Možná dojde k podobnému efektu, když přivezete auto do servisu a mechanik si všimne, že jsou otřesy systematicky příliš nízké a rozhodne se přidat další předpětí.

To vše je shrnuto ve vzorci: oprava = P*e (t)+I*(de (t)/dt)+D*integrál (e (t) dt), P, I a D jsou tři parametry, které mají být naladěn.

Ve své verzi jsem přidal čtvrtý výraz, což je příkaz „a priori“(feed forward) potřebný k udržení určité teploty. Zvolil jsem proporcionální příkaz k teplotě (je to dobrá aproximace tepelných ztrát. Je to pravda, pokud zanedbáme ztráty radiací (T^4)). S tímto termínem je integrátor odlehčen.

Jak tyto parametry zjistit?

Zkoušel jsem konvenční metodu, kterou můžete najít googlováním „regulátoru teploty ladění pid“, ale přišlo mi obtížné ji použít a skončil jsem s vlastní metodou.

Moje metoda

Nejprve dejte P, I, D na nulu a vložte „K“a „tempCommand“na malé hodnoty (například K = 1 a tempCommand = 100). Zapněte systém a počkejte, počkejte, počkejte … až se teplota ustálí. V tomto okamžiku víte, že s „seuilem“1*100 = 100 má teplota tendenci k X. Takže víte, že s příkazem 100/20000 = 5% můžete dosáhnout X. Ale cílem je dosáhnout 100 protože je to „tempCommand“. Pomocí poměru můžete vypočítat K, abyste dosáhli 100 (tempCommand). Z opatrnosti jsem použil menší hodnotu, než byla vypočítaná. Ve skutečnosti je snazší více zahřívat než ochlazovat. Tak konečně

Kfinal = K*tempCommand*0,9/X

Když nyní spustíte regulátor, měl by se přirozeně pohybovat na požadovanou teplotu, ale je to opravdu pomalý proces, protože kompenzujete pouze tepelné ztráty. Pokud chcete přecházet z jedné teploty na druhou, musíte do systému přidat určité množství tepelné energie. P určuje, jakou rychlostí vložíte energii do systému. Nastavte P na malou hodnotu (například P = 10). Zkuste (téměř) studený start. Pokud nemáte velké přestřelení, zkuste to s dvojitým (P = 20), pokud teď máte jeden, zkuste něco mezi. Pokud máte 5% překročení, je to dobré.

Nyní zvyšujte D, dokud nedojde k žádnému překročení. (vždy zkoušky, vím, že to není věda) (vzal jsem D = 100)

Poté přidejte I = P^2/(4*D) (Je založen na Ziegler-Nicholtsově metodě, měl by zaručit stabilitu) (pro mě I = 1)

Proč všechny tyto zkoušky, proč ne věda?

Já vím, já vím! Existuje obrovská teorie a můžete vypočítat přenosovou funkci a Z transformaci a blablabla. Chtěl jsem vygenerovat unitární skok a poté zaznamenat 10 minut reakci a napsat přenosovou funkci a pak co? Nechci dělat aritmetiku s 200 výrazy. Pokud tedy někdo má nápad, rád se naučím, jak to udělat správně.

Také jsem myslel na své nejlepší přátele Zieglera a Nicholse. Řekli mi, abych našel P, které generuje oscilace, a pak použil jejich metodu. Nikdy jsem tyto oscilace nenašel. Jediné, co jsem našel, bylo oooooooovershoot do nebe.

A jak modelovat fakt, že ohřev není stejný proces jako chlazení?

Budu pokračovat ve svém výzkumu, ale nyní pojďme zabalit váš ovladač, pokud jste spokojeni s dosaženým výkonem.

Krok 7: Zabalte to

Zabalit
Zabalit
Zabalit to
Zabalit to
Zabalit to
Zabalit to
Zabalit
Zabalit

Měl jsem přístup k moskevskému fablabu (fablab77.ru) a jejich laserové řezačce a jsem vděčný. Tato příležitost mi umožnila vytvořit pěkný balíček vygenerovaný na jedno kliknutí pluginem, který vyrobí krabice požadovaných rozměrů (v = 69 l = 66 d = 42 mm). V horní části jsou dva otvory (průměr = 5 mm) pro LED a spínač a jednu štěrbinu na straně pro programovací kolíky. Transformátor jsem zajistil dvěma kusy dřeva a DPS dvěma šrouby. Svorkovnici jsem připájel na vodiče a na desku plošných spojů, přidal přepínač mezi transformátorem a napájecím vstupem desky plošných spojů, zapojil led do PBO s odporem (300 ohmů) v sérii. Na elektrickou izolaci jsem použil také lak na nehty. Po posledním testu jsem krabici nalepil. A je to.

Doporučuje: