Sadržaj:

PID regulator temperature: 7 koraka
PID regulator temperature: 7 koraka

Video: PID regulator temperature: 7 koraka

Video: PID regulator temperature: 7 koraka
Video: PID Control Basics in 10 Minutes 2024, Srpanj
Anonim
PID regulator temperature
PID regulator temperature

Moj prijatelj gradi plastični ekstruder za recikliranje plastike (https://preciousplastic.com). On mora kontrolirati temperaturu istiskivanja. U tu svrhu koristi grijač mlaznica. U ovoj mlaznici nalazi se termoelement i jedinica za grijanje koji nam omogućuju mjerenje temperature i konačno postizanje željene temperature (napravite petlju za povratno djelovanje).

Kad sam čuo da mu je potrebno nekoliko PID kontrolera da kontrolira sve ove pojaseve grijača mlaznica, odmah mi je dalo želju da probam napraviti svoje.

Korak 1: Alati i materijal

Alati

  • lemilica, lemna žica i fluks
  • pinceta
  • glodalica (kemijsko jetkanje je također moguće za izradu prototipa PCB -a) (možete naručiti i PCB s mojom datotekom za orlove)
  • termometar (za kalibraciju)
  • arduino (bilo koje vrste) ili AVR programer
  • FTDI serijski TTL-232 USB kabel
  • laserski rezač (opcionalno)
  • multimetar (ohmmetar i voltmetar)

Materijal

  • Bakelit jednostrana bakrena ploča (minimalno 60*35 mm) (pokvario sam pilu kupujući onu od stakloplastike pa budite oprezni: bakelit)
  • Mikrokontroler Attiny45
  • LM2940IMP-5 regulator napona
  • Operativno pojačalo AD8605
  • Tranzistor NDS356AP
  • hrpa otpornika i kondenzatora (imam knjigu adafruit SMT 0603)
  • 230V-9V ac-dc transformator
  • 1N4004 diode
  • poluprovodnički relej
  • lak za nokte (izborno)

Korak 2: Izvadite PCB

Izvadite PCB
Izvadite PCB
Izvadite PCB
Izvadite PCB
Izvadite PCB
Izvadite PCB

Koristio sam svoj Proxxon MF70 CNC transformiran i konusni završni bit za glodanje PCB -a. Mislim da bi svaki završni dio za graviranje uspio. Gcode datoteku izravno su generirali eagle i dodatak pcb-gcode. Urađena su samo tri prolaza kako bi se osiguralo dobro odvajanje rute, ali bez trošenja sati na glodanje cijelog bakra. Kad je PCB izašao iz CNC stroja, čistio sam trase rezačem i testirao ih multimetrom.

Parametri: brzina uvlačenja 150 mm/min, dubina 0,2 mm, brzina rotacije 20'000 t/min

Korak 3: Lemite komponente

Lemiti komponente
Lemiti komponente

Pincetom i lemilicom postavite komponente na prava mjesta i lemite ih pomoću fluksa (pomaže), počevši od najmanjih komponenti. Ponovno provjerite multimetrom da nemate kratkih spojeva ili nepovezanih elemenata.

Dobit pojačala možete odabrati odabirom otpornika koji želite (dobitak = (R3+R4)/R4). Uzeo sam 1M i 2.7k pa je u mom slučaju dobitak jednak približno 371. Ne mogu znati točnu vrijednost jer koristim otpornik tolerancije 5%.

Moj termoelement je J tipa. To znači da daje 0,05 mV za svaki stupanj. S pojačanjem od 371, dobivam 18,5 mV po stupnju s izlaza pojačala (0,05*371). Želim mjeriti oko 200 ° C pa bi izlaz pojačala trebao biti oko 3,7 V (0,0185*200). Rezultat ne smije prelaziti 5V jer koristim referentni napon od 5V (vanjski).

Slika odgovara prvoj (ne radi) verziji koju sam napravio, ali princip je isti. U ovoj prvoj verziji koristio sam relej i stavio ga točno na sredinu ploče. Čim sam se prebacio na visoki napon, imao sam šiljke zbog kojih se kontroler ponovno pokrenuo.

Korak 4: Programirajte mikrokontroler

Programirajte mikrokontroler
Programirajte mikrokontroler

Koristeći arduino kao u ovim uputama: https://www.instructables.com/id/How-to-Program-a… možete učitati kôd.

Koristio sam profesionalnu sitnicu s FTDI-USB kabelom za programiranje Attiny 45, ali ova metoda je ekvivalentna. Zatim sam priključio pin PB1 i GDN izravno u RX i GND FTDI-USB kabela kako bih primio serijske podatke i mogao otkloniti pogreške.

Sve parametre trebate postaviti na nulu (P = 0, I = 0, D = 0, K = 0) u arduino skici. Oni će biti postavljeni tijekom koraka ugađanja.

Ako ne vidite dim ili miris izgorjelog, možete prijeći na sljedeći korak!

Korak 5: Sklapanje i kalibriranje

Sklapanje i kalibriranje
Sklapanje i kalibriranje
Sklapanje i kalibriranje
Sklapanje i kalibriranje

Oprez: Nikada nemojte istovremeno uključivati napajanje i 5V iz programatora! Inače ćete vidjeti dim koji sam uzimao u prethodnom koraku. Ako niste sigurni da to možete poštivati, možete jednostavno ukloniti 5v pin programatora. Dopustio sam to jer mi je bilo prikladnije programirati regulator bez napajanja i testirati regulator bez da mi se grijač grijao kao lud pred licem.

Sada možete razgranati termoelement na pojačalu i vidjeti mjerite li nešto (poštujte polaritet). Ako je vaš sustav grijanja na sobnoj temperaturi, trebali biste izmjeriti nulu. Zagrijavanje rukom već bi trebalo dovesti do nekih malih vrijednosti.

Kako čitati ove vrijednosti? Jednostavno priključite pinove PB1 i GDN izravno u RX i GND FTDI-USB kabela i otvorite arduino serijski monitor.

Kad se regulator pokrene, on šalje vrijednost crvenom pomoću unutarnjeg termometra čipa. Ovako kompenziram temperaturu (bez korištenja namjenskog čipa). To znači da ako se temperatura promijeni tijekom rada, to se neće uzeti u obzir. Ova se vrijednost jako razlikuje od jednog do drugog čipa pa se mora ručno unijeti u definiciju REFTEMPERATURE na početku skice.

Prije spajanja poluprovodničkog releja provjerite je li izlazni napon u rasponu koji podržava vaš relej (3 V do 25 V u mom slučaju, krug generira oko 11 V). (poštujte polaritet)

Ove vrijednosti nisu temperature u stupnjevima ili Fahrenheitu, već su rezultat analogno -digitalne konverzije pa variraju između 0 i 1024. Ja koristim referentni napon od 5 V, pa kada je izlaz pojačala blizu 5 V, rezultat pretvorbe je blizu 1024.

Korak 6: PID ugađanje

PID ugađanje
PID ugađanje

Moram napomenuti da nisam stručnjak za kontrolu, pa sam pronašao neke parametre koji mi odgovaraju, ali ne jamčim da djeluje za sve.

Prije svega, moram objasniti što program radi. Implementirao sam neku vrstu softverskog PWM -a: brojač se povećava na svakoj iteraciji sve dok ne dosegne 20'000 (u tom slučaju se resetira na 0). Odgoda usporava petlju do milisekunde. Najizbirljiviji od nas primijetit će da je kontrolno razdoblje oko 20 sekundi. Svaka petlja započinje usporedbom brojača i praga. Ako je brojač niži od praga, tada isključujem relej. Ako je veći, palim ga. Tako ja reguliram snagu postavljanjem praga. Izračun praga događa se svake sekunde.

Što je PID kontroler?

Kada želite kontrolirati proces, imate vrijednost koju mjerite (analogData), vrijednost koju želite doseći (tempCommand) i način da promijenite stanje tog procesa (seuil). U mom slučaju to se radi s pragom ("seuil" na francuskom, ali mnogo lakšim za pisanje i izgovaranje (izgovaranje "sey")) koji određuje koliko dugo će prekidač biti uključen i isključen (radni ciklus), a time i količina energije staviti u sustav.

Svi se slažu da ako ste daleko od točke do koje želite doći, možete napraviti veliku korekciju, a ako ste blizu, potrebna je mala ispravka. To znači da je ispravak funkcija pogreške (error = analogData-tempComand). Da ali koliko? Recimo da grešku pomnožimo s faktorom (P). Ovo je proporcionalni kontroler. Mehanički opruga vrši proporcionalnu korekciju jer je sila opruge proporcionalna tlaku opruge.

Vjerojatno znate da se ovjesi vašeg automobila sastoje od opruge i amortizera (amortizera). Uloga ovog amortizera je izbjegavanje da vam automobil odskoči poput trampolina. To je upravo ono što termin izvedenica čini. Kao prigušivač, on generira reakciju koja je proporcionalna varijaciji pogreške. Ako se pogreška brzo mijenja, ispravak se smanjuje. Smanjuje oscilacije i prekoračenja.

Pojam integratora služi za izbjegavanje trajne pogreške (integrira pogrešku). Konkretno, to je brojač koji se povećava ili smanjuje ako je pogreška pozitivna ili negativna. Zatim se korekcija povećava ili smanjuje prema ovom brojaču. Nema mehaničku ekvivalenciju (ili imate ideju?). Možda postoji sličan učinak kada automobil dovedete u servis, a mehaničar primijeti da su udarci sustavno preniski i odluče dodati još prednapona.

Sve je to sažeto u formuli: ispravak = P*e (t)+I*(de (t)/dt)+D*integral (e (t) dt), P, I i D su tri parametra koji imaju za ugađanje.

U svoju sam verziju dodao četvrti izraz koji je naredba "apriori" (feed forward) potrebna za održavanje određene temperature. Odabrao sam proporcionalnu naredbu temperaturi (to je dobra aproksimacija gubitaka grijanja. Istina je ako zanemarimo gubitke zračenja (T^4)). S ovim pojmom integrator postaje lakši.

Kako pronaći te parametre?

Isprobao sam konvencionalnu metodu koju možete pronaći googlanjem "pid tuning temperature controller", ali mi se to teško primijenilo i završio sam s vlastitom metodom.

Moja metoda

Prvo postavite P, I, D na nulu i stavite "K" i "tempCommand" na male vrijednosti (na primjer K = 1 i tempCommand = 100). Uključite sustav i čekajte, čekajte, čekajte … dok se temperatura ne stabilizira. U ovom trenutku znate da s "seuilom" od 1*100 = 100 temperatura teži X. Dakle, znate da s naredbom 100/20000 = 5% možete doći do X. Ali cilj je doseći 100 jer je "tempCommand". Pomoću proporcije možete izračunati K kako biste dosegli 100 (tempCommand). Iz mjere opreza upotrijebio sam manju vrijednost od izračunate. Doista je lakše zagrijati nego ohladiti. Pa konačno

Kfinal = K*tempCommand*0,9/X

Kad pokrenete regulator, on bi prirodno trebao težiti željenoj temperaturi, ali to je jako spor proces jer samo nadoknađujete gubitke grijanja. Ako želite prijeći s jedne temperature na drugu, u sustav je potrebno dodati određenu količinu toplinske energije. P određuje kojom brzinom unosite energiju u sustav. Postavite P na malu vrijednost (na primjer P = 10). Isprobajte (gotovo) hladni start. Ako nemate preveliko prekoračenje, pokušajte s dvostrukim (P = 20) ako sada pokušate nešto između. Ako imate prekoračenje od 5%, to je dobro.

Sada povećavajte D dok ne dođe do prekoračenja. (uvijek suđenja, znam da ovo nije znanost) (uzeo sam D = 100)

Zatim dodajte I = P^2/(4*D) (Temelji se na Ziegler-Nicholtsovoj metodi, trebalo bi jamčiti stabilnost) (za mene I = 1)

Zašto sva ta iskušenja, zašto ne znanost?

Ja znam ja znam! Postoji ogromna teorija i možete izračunati prijenosnu funkciju i Z transformaciju i blablabla. Htio sam generirati unitarni skok, a zatim 10 minuta snimiti reakciju i napisati funkciju prijenosa, a što onda? Ne želim raditi aritmetiku s 200 pojmova. Pa ako netko ima ideju, bilo bi mi drago naučiti kako to ispravno učiniti.

Također sam mislio na svoje najbolje prijatelje Zieglera i Nicholesa. Rekli su mi da pronađem P koje generiraju oscilacije, a zatim primijenim njihovu metodu. Nikada nisam pronašao ove oscilacije. Jedino što sam pronašao bio je oooooooo pucanj u nebo.

I kako modelirati činjenicu da grijanje nije isti proces kao hlađenje?

Nastavit ću s istraživanjem, ali sada upakirajte vaš kontroler ako ste zadovoljni performansama koje ste postigli.

Korak 7: Spakirajte ga

Spakiraj ga
Spakiraj ga
Spakiraj ga
Spakiraj ga
Spakiraj ga
Spakiraj ga
Spakiraj ga
Spakiraj ga

Imao sam pristup moskovskom fablabu (fablab77.ru) i njihovom laserskom rezaču i zahvalan sam. Ova mi je prilika omogućila da napravim lijep paket koji je jednim klikom generirao dodatak koji izrađuje kutije željenih dimenzija (h = 69 l = 66 d = 42 mm). Postoje dvije rupe (promjer = 5 mm) na vrhu za LED i prekidač i jedan prorez sa strane za iglice za programiranje. Transformator sam učvrstio s dva komada drveta, a PCB s dva vijka. Lemio sam terminalni blok na žice i na tiskanu ploču, dodao prekidač između transformatora i ulazne snage PCB -a, serijski spojio LED na PBO s otpornikom (300 Ohma). Lak za nokte sam koristila i za električnu izolaciju. Nakon zadnjeg testa, zalijepila sam kutiju. To je to.

Preporučeni: