Obsah:

Regulátor teploty PID: 7 krokov
Regulátor teploty PID: 7 krokov

Video: Regulátor teploty PID: 7 krokov

Video: Regulátor teploty PID: 7 krokov
Video: XMT 7100 PID teplotní regulátor 2024, November
Anonim
PID regulátor teploty
PID regulátor teploty

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 vykurovacia jednotka, ktoré nám umožňujú zmerať teplotu a nakoniec dosiahnuť požadovanú teplotu (vytvorte spätnú slučku).

Keď som počul, že niekoľko PID regulátorov potrebuje ovládať všetky tieto pásy ohrievačov trysiek, okamžite mi vošlo chuť skúsiť si vyrobiť vlastné.

Krok 1: Nástroje a materiál

Nástroje

  • spájkovačka, spájkovací drôt a tavidlo
  • pinzeta
  • frézka (chemické leptanie je možné aj pri prototypovaní DPS) (DPS si môžete objednať aj pomocou môjho súboru orla)
  • teplomer (na kalibráciu)
  • arduino (akýkoľvek typ) alebo programátor AVR
  • Sériový kábel FTDI TTL-232 USB
  • laserová rezačka (voliteľné)
  • multimetr (ohmmeter a voltmeter)

Materiál

  • Bakelitová jednostranná medená doska (minimálne 60 x 35 mm) (zničil som pílu kúpou sklolaminátu, takže buďte opatrní: bakelit)
  • Mikrokontrolér Attiny45
  • Regulátor napätia LM2940IMP-5
  • Operačný zosilňovač AD8605
  • Tranzistor NDS356AP
  • veľa rezistorov a kondenzátorov (mám knihu adafruit SMT 0603)
  • Transformátor AC-DC 230V-9V
  • Diódy 1N4004
  • polovodičové relé
  • lak na nechty (voliteľné)

Krok 2: Leptajte DPS

Leptajte DPS
Leptajte DPS
Leptajte DPS
Leptajte DPS
Leptajte DPS
Leptajte DPS

Na frézovanie DPS som použil CNC transformovaný Proxxon MF70 CNC a kužeľový koncový bit. Myslím si, že akýkoľvek koncový bit pre gravírovanie by fungoval. Súbor Gcode bol vygenerovaný priamo orlom a doplnkom pcb-gcode. Vykonali sa iba tri priechody, aby sa zaistilo dobré oddelenie trasy, ale bez toho, aby sa hodiny mleli všetka meď. Keď PCB vyšla z CNC stroja, vyčistil som cesty frézou a otestoval som ich multimetrom.

Parametre: posuv 150 mm/min, hĺbka 0,2 mm, rýchlosť otáčania 20 000 t/min

Krok 3: Spájkujte súčasti

Spájkujte súčiastky
Spájkujte súčiastky

Pinzetou a spájkovačkou umiestnite súčiastky na správne miesta a spájkujte ich pomocou tavidla (pomáha) a začínajúc od najmenších súčiastok. Znova skontrolujte pomocou multimetra, či nemáte skrat alebo nespojené prvky.

Zosilňovač môžete zvoliť zvolením požadovaného odporu (zisk = (R3+R4)/R4). Vzal som 1M a 2,7k, takže v mojom prípade je zisk približne 371. Neviem presnú hodnotu, pretože používam 5% tolerančný odpor.

Môj termočlánok je typu J. To znamená, že pre každý stupeň dáva 0,05 mV. So ziskom 371 získam 18,5 mV na stupeň z výstupu zosilňovača (0,05*371). Chcem namerať okolo 200 ° C, takže výstup zosilňovača by mal byť okolo 3,7V (0,0185*200). Výsledok by nemal prekročiť 5V, pretože používam referenčné napätie 5V (externé).

Obrázok zodpovedá prvej (nefungujúcej) verzii, ktorú som urobil, ale princíp je rovnaký. V tejto prvej verzii som použil relé a umiestnil ho priamo do stredu dosky. Hneď ako som prepínal s vysokým napätím, mal som hroty, vďaka ktorým sa ovládač reštartoval.

Krok 4: Naprogramujte mikrokontrolér

Naprogramujte mikrokontrolér
Naprogramujte mikrokontrolér

Pomocou arduina ako v tomto návode: https://www.instructables.com/id/How-to-Program-a… môžete načítať kód.

Na programovanie Attiny 45 som použil profesionálnu drobnosť s káblom FTDI-USB, ale táto metóda je ekvivalentná. Potom som zapojil kolík PB1 a GDN priamo do RX a GND kábla FTDI-USB, aby som mohol prijímať sériové údaje a byť schopný ladiť.

V arduino skici by ste mali dať všetky parametre na nulu (P = 0, I = 0, D = 0, K = 0). Budú nastavené počas kroku ladenia.

Ak nevidíte spálený dym alebo zápach, môžete skočiť na ďalší krok!

Krok 5: Zostavenie a kalibrácia

Zostavovanie a kalibrácia
Zostavovanie a kalibrácia
Zostavovanie a kalibrácia
Zostavovanie a kalibrácia

Pozor: Nikdy nezapájajte napájanie a 5V z programátora súčasne! V opačnom prípade uvidíte dym, ktorý som v predchádzajúcom kroku robil. Ak si nie ste istí, že to dokážete rešpektovať, môžete jednoducho odstrániť 5v kolík programátora. Nechal som to, pretože bolo pre mňa pohodlnejšie naprogramovať regulátor bez napájania a testovať regulátor bez toho, aby sa mi ohrievač ohrievača šialene pred tvárou.

Teraz môžete rozložiť termočlánok na zosilňovači a zistiť, či niečo meriate (rešpektujte polaritu). Ak má váš vykurovací systém izbovú teplotu, mali by ste namerať nulu. Zahrievanie rukou by už malo viesť k niektorým malým hodnotám.

Ako čítať tieto hodnoty? Jednoducho zapojte kolíky PB1 a GDN priamo do konektorov RX a GND kábla FTDI-USB a otvorte sériový monitor arduino.

Keď sa ovládač spustí, vnútorným teplomerom čipu pošle červenú hodnotu. Takto kompenzujem teplotu (bez použitia vyhradeného čipu). To znamená, že ak sa teplota počas prevádzky zmení, nebude sa to brať do úvahy. Táto hodnota je u každého čipu veľmi odlišná, takže ho musíte zadať ručne v definícii REFTEMPERATURE na začiatku náčrtu.

Pred pripojením polovodičového relé skontrolujte, či je výstup napätia v rozsahu podporovanom vašim relé (v mojom prípade 3 V až 25 V obvod generuje približne 11 V). (rešpektujte polaritu)

Tieto hodnoty nie sú teploty v stupňoch alebo Fahrenheite, ale sú výsledkom analógovo -digitálnej konverzie, takže sa pohybujú medzi 0 a 1024. Používam referenčné napätie 5 V, takže keď je výstup zosilňovača blízko 5 V, výsledok prevodu je blízko 1024.

Krok 6: Ladenie PID

Ladenie PID
Ladenie PID

Musím spomenúť, že nie som odborník na kontrolu, a tak som našiel niektoré parametre, ktoré fungujú pre mňa, ale nezaručujem, že fungujú pre každého.

Najprv musím vysvetliť, čo program robí. Implementoval som akýsi softvérový PWM: počítadlo sa zvyšuje pri každej iterácii, kým nedosiahne 20 000 (v takom prípade sa resetuje na 0). Oneskorenie spomaľuje slučku na milisekundu. Tí najnáročnejší z nás si všimnú, že kontrolné obdobie je zhruba 20 sekúnd. Každá slučka začína porovnaním medzi počítadlom a prahom. Ak je počítadlo nižšie ako prahová hodnota, potom relé vypnem. Ak je väčší, zapnem ho. Výkon teda regulujem nastavením prahu. Výpočet prahu prebieha každú sekundu.

Čo je to regulátor PID?

Ak chcete ovládať proces, máte k dispozícii nameranú hodnotu (analogData), hodnotu, ktorú chcete dosiahnuť (tempCommand), a spôsob, ako zmeniť stav tohto procesu (seuil). V mojom prípade sa to robí pomocou prahu („seuil“vo francúzštine, ale oveľa jednoduchšie písanie a vyslovovanie (vyslovuje „sey“)), ktorý určuje, ako dlho bude vypínač zapnutý a vypnutý (pracovný cyklus), teda množstvo energie. dať do systému.

Všetci súhlasia s tým, že ak ste ďaleko od bodu, kam chcete dosiahnuť, môžete vykonať veľkú opravu a ak ste blízko, je potrebná malá oprava. To znamená, že oprava je funkciou chyby (chyba = analogData-tempComand). Ano ale kolko? Povedzme, že chybu vynásobíme faktorom (P). Toto je proporcionálny ovládač. Pružina mechanicky vykonáva proporcionálnu korekciu, pretože sila pružiny je úmerná stlačeniu pružiny.

Pravdepodobne viete, že vaše zavesenie automobilov pozostáva z pružiny a tlmiča (tlmiča). Úlohou tohto tlmiča je zabrániť tomu, aby sa vaše auto odrazilo ako trampolína. Presne to derivačný výraz robí. Ako tlmič generuje reakciu, ktorá je úmerná variácii chyby. Ak sa chyba rýchlo mení, oprava sa zníži. Znižuje kmity a prekmity.

Integrátorový výraz je tu na to, aby sa vyhol trvalej chybe (chybu integruje). Konkrétne ide o počítadlo, ktoré sa zvyšuje alebo znižuje, ak je chyba kladná alebo záporná. Potom sa korekcia zvýši alebo zníži podľa tohto počítadla. Nemá mechanickú ekvivalenciu (alebo máte nápad?). Možno dôjde k podobnému účinku, keď uvediete svoje auto do servisu a mechanik si všimne, že tlmiče sú systematicky príliš nízke a rozhodne sa pridať ďalšie predpätie.

Toto všetko je zhrnuté vo vzorci: korekcia = P*e (t)+I*(de (t)/dt)+D*integrál (e (t) dt), P, I a D sú tri parametre, ktoré majú byť naladený.

Do mojej verzie som pridal štvrtý výraz, ktorý je príkazom „a priori“(spätný chod) potrebným na udržanie určitej teploty. Zvolil som proporcionálny príkaz k teplote (je to dobrá aproximácia tepelných strát. Je to pravda, ak zanedbáme straty žiarením (T^4)). S týmto pojmom sa integrátor odľahčí.

Ako nájsť tieto parametre?

Skúsil som konvenčnú metódu, ktorú môžete nájsť googlením „regulátora teploty ladenia pid“, ale ťažko sa mi aplikovala a skončil som s vlastnou metódou.

Moja metóda

Najprv dajte P, I, D na nulu a dajte „K“a „tempCommand“na malé hodnoty (napríklad K = 1 a tempCommand = 100). Zapnite systém a čakajte, čakajte, čakajte …, kým sa teplota nestabilizuje. V tomto bode viete, že s „seuilom“1*100 = 100 má teplota tendenciu k X. Takže viete, že s príkazom 100/20000 = 5% môžete dosiahnuť X. Cieľom je však dosiahnuť 100 pretože je to „tempCommand“. Pomocou podielu môžete vypočítať K, aby ste dosiahli 100 (tempCommand). Preventívne som použil menšiu hodnotu, ako je vypočítaná. Skutočne je jednoduchšie viac zahriať ako vychladnúť. Takže konečne

Kfinal = K*tempCommand*0,9/X

Teraz, keď spustíte regulátor, mal by mať prirodzene teplotu, ktorú chcete, ale je to skutočne pomalý proces, pretože kompenzujete iba tepelné straty. Ak chcete prejsť z jednej teploty na druhú, do systému musíte pridať množstvo tepelnej energie. P určuje, akým tempom vložíte energiu do systému. Nastavte P na malú hodnotu (napríklad P = 10). Skúste (takmer) studený štart. Ak nemáte veľké prestrelenie, skúste to s dvojitým (P = 20), ak máte teraz jedného, skúste niečo medzi tým. Ak máte 5% prekročenie, je to dobré.

Teraz zvyšujte D, kým neprestanete. (vždy skúšky, viem, že to nie je veda) (vzal som D = 100)

Potom pridajte I = P^2/(4*D) (Je založená na Ziegler-Nicholtsovej metóde, mala by zaručiť stabilitu) (pre mňa I = 1)

Prečo všetky tieto skúšky, prečo nie veda?

Ja viem, ja viem! Existuje obrovská teória a môžete vypočítať prenosovú funkciu a Z transformáciu a blablabla. Chcel som vygenerovať unitárny skok a potom 10 minút zaznamenať reakciu a napísať funkciu prenosu a potom čo? Nechcem robiť aritmetiku s 200 výrazmi. Ak má teda niekto nápad, rád sa naučím, ako to urobiť správne.

Myslel som aj na svojich najlepších priateľov Zieglera a Nicholsa. Povedali mi, aby som našiel P, ktoré generuje kmity, a potom použil ich metódu. Nikdy som tieto oscilácie nenašiel. Jediné, čo som našiel, bola ooooooooverná strela do neba.

A ako modelovať skutočnosť, že vykurovanie nie je rovnaký proces ako chladenie?

Budem pokračovať vo svojom výskume, ale teraz poďme zabaliť váš ovládač, ak ste spokojní s výkonom, ktorý získate.

Krok 7: Zabaľte to

Zabaliť to
Zabaliť to
Zabaliť to
Zabaliť to
Zabaliť to
Zabaliť to
Zabaliť to
Zabaliť to

Mal som prístup k moskovskej fablabe (fablab77.ru) a ich laserovej rezačke a som vďačný. Táto príležitosť mi umožnila vytvoriť pekný balík, ktorý na jedno kliknutie vygeneruje doplnok, ktorý vyrobí škatule požadovaných rozmerov (v = 69 l = 66 d = 42 mm). V hornej časti sú dva otvory (priemer = 5 mm) pre LED a vypínač a jeden výrez na boku pre programovacie kolíky. Transformátor som zaistil dvoma kusmi dreva a DPS dvoma skrutkami. Svorkovnicu som spájkoval na vodiče a na dosku plošných spojov, pridal prepínač medzi transformátorom a vstupom na dosku plošných spojov, zapojil led do PBO s odporom (300 ohmov) do série. Na elektrickú izoláciu som použil aj lak na nechty. Po poslednom teste som krabicu zlepil. To je všetko.

Odporúča: