Kazalo:

PID regulator temperature: 7 korakov
PID regulator temperature: 7 korakov

Video: PID regulator temperature: 7 korakov

Video: PID regulator temperature: 7 korakov
Video: PID demo 2024, Julij
Anonim
PID regulator temperature
PID regulator temperature

Moj prijatelj gradi plastični ekstruder za recikliranje plastike (https://preciousplastic.com). On mora nadzorovati temperaturo iztiskanja. V ta namen uporablja trak za gretje šob. V tej šobi sta termoelement in grelna enota, ki nam omogočata merjenje temperature in končno doseganje želene temperature (naredite povratno zanko).

Ko sem slišal, da mora več krmilnikov PID nadzorovati vse te pasove grelnikov šob, mi je takoj vzbudilo željo, da bi poskusil narediti svoje.

Korak: Orodja in material

Orodja

  • spajkalnik, spajkalna žica in fluks
  • pinceto
  • rezkalni stroj (kemično jedkanje je možno tudi za izdelavo prototipov PCB) (lahko naročite tudi tiskano vezje z mojo datoteko eagle)
  • termometer (za umerjanje)
  • arduino (katere koli vrste) ali AVR programer
  • Serijski TTL-232 USB kabel FTDI
  • laserski rezalnik (neobvezno)
  • multimeter (ohmmeter in voltmeter)

Material

  • Bakelitna enostranska bakrena plošča (najmanj 60*35 mm) (pokvaril sem žago, ko sem kupil eno stekleno vlakno, zato bodite previdni: bakelit)
  • Mikrokrmilnik Attiny45
  • LM2940IMP-5 regulator napetosti
  • Operacijski ojačevalnik AD8605
  • Tranzistor NDS356AP
  • kup uporov in kondenzatorjev (imam knjigo adafruit SMT 0603)
  • 230V-9V AC-dc transformator
  • 1N4004 diode
  • polprevodniški rele
  • lak za nohte (neobvezno)

2. korak: Odstranite tiskano vezje

Odstranite tiskano vezje
Odstranite tiskano vezje
Odstranite tiskano vezje
Odstranite tiskano vezje
Odstranite tiskano vezje
Odstranite tiskano vezje

Za rezkanje tiskanega vezja sem uporabil svoj CNC pretvornik Proxxon MF70 in stožčasto konico. Mislim, da bi kateri koli konec graviranja deloval. Datoteko Gcode sta neposredno ustvarila eagle in vtičnik pcb-gcode. Za zagotovitev dobre ločitve poti so opravljeni le trije prehodi, vendar brez porabe ur za rezkanje celotnega bakra. Ko je tiskano vezje izstopilo iz CNC stroja, sem poti očistil z rezalnikom in jih preizkusil z multimetrom.

Parametri: hitrost podajanja 150 mm/min, globina 0,2 mm, hitrost vrtenja 20'000 t/min

Korak: Spajkajte komponente

Spajkajte komponente
Spajkajte komponente

S pinceto in spajkalnikom postavite komponente na prava mesta in jih spajkajte s fluksom (pomaga) in začenši z najmanjšimi sestavnimi deli. Še enkrat preverite z multimetrom, da nimate kratkega stika ali nepovezanih elementov.

Dobiček ojačevalnika lahko izberete tako, da izberete želeni upor (dobiček = (R3+R4)/R4). Vzel sem 1M in 2,7k, tako da je v mojem primeru dobiček enak približno 371. Ne morem vedeti natančne vrednosti, ker uporabljam 5% tolerančni upor.

Moj termoelement je tipa J. To pomeni, da daje 0,05 mV za vsako stopnjo. Z dobičkom 371 dobim 18,5 mV na stopnjo iz izhoda ojačevalnika (0,05*371). Izmeriti želim okoli 200 ° C, tako da mora biti izhod ojačevalnika okoli 3,7 V (0,0185*200). Rezultat ne sme presegati 5V, ker uporabljam referenčno napetost 5V (zunanja).

Slika ustreza prvi (ne delujoči) različici, ki sem jo naredil, vendar je načelo enako. V tej prvi različici sem uporabil rele in ga postavil na sredino plošče. Takoj, ko sem preklopil na visoko napetost, sem imel konice, zaradi katerih se je krmilnik znova zagnal.

4. korak: Programirajte mikrokrmilnik

Programirajte mikrokrmilnik
Programirajte mikrokrmilnik

Z arduinom, kot je v teh navodilih: https://www.instructables.com/id/How-to-Program-a…, lahko naložite kodo.

Za programiranje Attiny 45 sem uporabil profesionalno drobtinico s kablom FTDI-USB, vendar je ta metoda enakovredna. Nato sem pin PB1 in GDN priključil neposredno v RX in GND kabla FTDI-USB, da sem prejel serijske podatke in odpravil napake.

Vse parametre morate postaviti na arduino skico na nič (P = 0, I = 0, D = 0, K = 0). Nastavljeni bodo med korakom uglaševanja.

Če ne vidite dima ali vonja po zažganem, lahko skočite na naslednji korak!

5. korak: Sestavljanje in kalibracija

Sestavljanje in kalibracija
Sestavljanje in kalibracija
Sestavljanje in kalibracija
Sestavljanje in kalibracija

Pozor: Nikoli ne priključite napajalnika in 5V iz programatorja hkrati! V nasprotnem primeru boste videli dim, o katerem sem govoril v prejšnjem koraku. Če niste prepričani, da boste tega spoštovali, lahko preprosto odstranite 5v pin za programer. Dovolil sem, ker mi je bilo bolj priročno programirati krmilnik brez napajanja in preizkusiti krmilnik, ne da bi se mi grelec kot noro segreval pred obrazom.

Zdaj lahko razcepite termoelement na ojačevalniku in preverite, ali kaj merite (upoštevajte polarnost). Če je vaš ogrevalni sistem pri sobni temperaturi, morate izmeriti ničlo. Ogrevanje z roko bi moralo že prinesti nekaj majhnih vrednosti.

Kako prebrati te vrednosti? Samo priključite zatiča PB1 in GDN neposredno v RX in GND kabla FTDI-USB in odprite serijski monitor arduino.

Ko se regulator zažene, notranji termometer čipa pošlje rdečo vrednost. Tako kompenziram temperaturo (brez uporabe namenskega čipa). To pomeni, da se temperatura med delovanjem ne bo upoštevala. Ta vrednost se med posameznimi čipi zelo razlikuje, zato jo je treba ročno vnesti v definicijo REFTEMPERATURE na začetku skice.

Preden priključite polprevodniški rele, preverite, ali je izhodna napetost v območju, ki ga podpira vaš rele (3 V do 25 V v mojem primeru vezje ustvari okoli 11 V). (upoštevajte polarnost)

Te vrednosti niso temperature v stopinjah ali Fahrenheitu, ampak rezultat analogno -digitalne pretvorbe, zato se razlikujejo med 0 in 1024. Uporabljam referenčno napetost 5V, zato je, ko je izhod ojačevalnika blizu 5V, rezultat pretvorbe blizu 1024.

Korak 6: Nastavitev PID

PID uglaševanje
PID uglaševanje

Moram omeniti, da nisem strokovnjak za nadzor, zato sem našel nekaj parametrov, ki delujejo zame, vendar ne jamčim, da deluje za vse.

Najprej moram razložiti, kaj program počne. Izvedel sem nekakšen programski PWM: števec se pri vsaki ponovitvi povečuje, dokler ne doseže 20'000 (v tem primeru se ponastavi na 0). Zamuda upočasni zanko na milisekundo. Najbolj preudarni od nas bodo opazili, da je kontrolno obdobje okoli 20 sekund. Vsaka zanka se začne s primerjavo med števcem in pragom. Če je števec nižji od praga, potem izklopim rele. Če je večji, ga vklopim. Tako moč reguliram z nastavitvijo praga. Izračun praga se zgodi vsako sekundo.

Kaj je PID krmilnik?

Ko želite nadzorovati proces, imate vrednost, ki jo izmerite (analogData), vrednost, ki jo želite doseči (tempCommand) in način za spreminjanje stanja tega procesa (seuil). V mojem primeru se to naredi s pragom ("seuil" v francoščini, vendar veliko lažje napisati in izgovoriti (izgovoriti "sey")), ki določa, kako dolgo bo stikalo vklopljeno in izklopljeno (obratovalni cikel), torej količina energije vstaviti v sistem.

Vsi se strinjajo, da če ste daleč od točke, ki jo želite doseči, lahko naredite velik popravek, če pa ste blizu, je potreben majhen popravek. To pomeni, da je popravek funkcija napake (error = analogData-tempComand). Ja ampak koliko? Recimo, da napako pomnožimo s faktorjem (P). To je proporcionalni krmilnik. Mehansko vzmet naredi sorazmeren popravek, ker je sila vzmeti sorazmerna s stiskanjem vzmeti.

Verjetno veste, da so vzmetenja vašega avtomobila sestavljena iz vzmeti in lopute (amortizerja). Vloga tega blažilnika je preprečiti, da bi se vaš avtomobil odbil kot trampolin. To je točno tisto, kar počne izraz izpeljanka. Kot dušilec povzroči reakcijo, ki je sorazmerna variaciji napake. Če se napaka hitro spreminja, se popravek zniža. Zmanjša nihanja in prekoračitve.

Izraz integrator je tukaj, da se izogne trajni napaki (napako integrira). Konkretno gre za števec, ki se poveča ali zmanjša, če je napaka pozitivna ali negativna. Nato se popravek po tem števcu poveča ali zniža. Nima mehanske enakovrednosti (ali imate idejo?). Morda pride do podobnega učinka, ko avto pripeljete na servis, mehanik pa opazi, da so šoki sistematično prenizki in se odločijo dodati še nekaj prednapetosti.

Vse to je povzeto v formuli: popravek = P*e (t)+I*(de (t)/dt)+D*integral (e (t) dt), P, I in D so trije parametri, ki imajo za uglaševanje.

V svoji različici sem dodal četrti izraz, ki je ukaz "a priori" (podajanje naprej), potreben za vzdrževanje določene temperature. Izbral sem proporcionalni ukaz temperaturi (to je dober približek toplotnih izgub. Res je, če zanemarimo izgube sevanja (T^4)). S tem izrazom se integrator olajša.

Kako najti te parametre?

Poskusil sem s konvencionalno metodo, ki jo lahko poiščete z googlom "regulator temperature pid tuning", vendar sem jo težko uporabil in končal z lastno metodo.

Moja metoda

Najprej postavite P, I, D na nič in nastavite "K" in "tempCommand" na majhne vrednosti (na primer K = 1 in tempCommand = 100). Vklopite sistem in počakajte, počakajte, počakajte … dokler se temperatura ne ustali. Na tej točki veste, da se pri "seuilu" 1*100 = 100 temperatura nagiba k X. Torej veste, da z ukazom 100/20000 = 5% lahko dosežete X. Toda cilj je doseči 100 ker je "tempCommand". Z uporabo deleža lahko izračunate K, da dosežete 100 (tempCommand). Previdnostno sem uporabil manjšo vrednost od izračunane. Dejansko je lažje več ogreti kot ohladiti. Tako končno

Kfinal = K*tempCommand*0,9/X

Ko zaženete regulator, bi moral biti naravno nagnjen k želeni temperaturi, vendar je to zelo počasen proces, saj le kompenzirate izgube pri ogrevanju. Če želite preiti iz ene temperature v drugo, morate v sistem dodati količino toplotne energije. P določa, s kakšno hitrostjo dajete energijo v sistem. Nastavite P na majhno vrednost (na primer P = 10). Poskusite (skoraj) hladen zagon. Če nimate velikega presežka, poskusite z dvojico (P = 20), če imate zdaj eno, poskusite nekaj vmes. Če imate prekoračitev 5%, je to dobro.

Zdaj povečajte D, dokler ne pride do prekoračitve. (vedno preizkušnje, vem, da to ni znanost) (vzel sem D = 100)

Nato dodajte I = P^2/(4*D) (Temelji na metodi Ziegler-Nicholts, mora zagotoviti stabilnost) (zame I = 1)

Zakaj vse te preizkušnje, zakaj ne znanost?

Vem, vem! Obstaja velika teorija in lahko izračunate prenosno funkcijo in Z transformacijo ter blablabla. Želel sem ustvariti enotni skok in nato 10 minut zapisovati reakcijo ter zapisati prenosno funkcijo in kaj potem? Ne želim delati aritmetike z 200 izrazi. Torej, če ima kdo kakšno idejo, bi z veseljem izvedel, kako to pravilno narediti.

Pomislil sem tudi na svoja najboljša prijatelja Zieglerja in Nicholasa. Rekli so mi, naj najdem P, ki ustvarja nihanja, in nato uporabim njihovo metodo. Nikoli nisem zasledil teh nihanj. Edino, kar sem našel, je bil oooooooo prestrezanje v nebo.

In kako modelirati dejstvo, da ogrevanje ni enak postopek kot hlajenje?

Nadaljeval bom z raziskovanjem, zdaj pa zapakirajmo vaš krmilnik, če ste zadovoljni s svojimi zmogljivostmi.

7. korak: Spakirajte ga

Spakiraj
Spakiraj
Spakiraj
Spakiraj
Spakiraj
Spakiraj
Spakiraj
Spakiraj

Imel sem dostop do moskovskega fablaba (fablab77.ru) in njihovega laserskega rezalnika in hvaležen sem. Ta priložnost mi je omogočila, da naredim lep paket, ki ga z enim klikom ustvari vtičnik, ki izdeluje škatle želenih dimenzij (h = 69 l = 66 d = 42 mm). Na vrhu sta dve luknji (premer = 5 mm) za led in stikalo ter ena reža na strani za programske zatiče. Transformator sem pritrdil z dvema lesoma, tiskano vezje pa z dvema vijakoma. Spojil sem priključni blok na žice in na tiskano vezje, dodal stikalo med transformatorjem in vhodom za tiskano vezje, serijsko priključil vodnik na PBO z uporom (300 ohmov). Za električno izolacijo sem uporabil tudi lak za nohte. Po zadnjem testu sem zalepil škatlo. To je to.

Priporočena: