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, Juli
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 termopar i jedinica za grijanje koji nam omogućuju mjerenje temperature i konačno postizanje željene temperature (napravite retroakcijsku petlju).

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

Korak 1: Alati i materijal

Alati

  • lemilica, lemna žica i fluks
  • pinceta
  • glodalica (hemijsko jetkanje je takođe moguće za izradu prototipa na PCB -u) (možete naručiti i PCB sa 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)
  • Attiny45 mikrokontroler
  • LM2940IMP-5 regulator napona
  • Operativno pojačalo AD8605
  • NDS356AP tranzistor
  • hrpa otpornika i kondenzatora (imam knjigu adafruta SMT 0603)
  • 230V-9V ac-dc transformator
  • 1N4004 diode
  • poluprovodnički relej
  • lak za nokte (opcionalno)

Korak 2: Izvucite 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 direktno 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, oč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. Opet 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 otprilike 371. Ne mogu znati točnu vrijednost jer koristim otpornik tolerancije od 5%.

Moj termoelement je J tipa. To znači da daje 0,05 mV za svaki stepen. S pojačanjem od 371, dobivam 18,5 mV po stupnju s izlaza pojačala (0,05*371). Želim mjeriti oko 200 ° C tako da bi izlaz pojačala trebao biti oko 3,7 V (0,0185*200). Rezultat ne bi trebao 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 tačno na sredinu ploče. Čim sam prešao na visoki napon, imao sam šiljke koji su učinili da se kontroler ponovo pokrene.

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 sa FTDI-USB kablom 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) na arduino skici. Oni će biti postavljeni tokom koraka ugađanja.

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

Korak 5: Sklapanje i kalibracija

Sklapanje i kalibracija
Sklapanje i kalibracija
Sklapanje i kalibracija
Sklapanje i kalibracija

Oprez: Nikada nemojte istovremeno uključivati napajanje i 5V iz programatora! U suprotnom ćete vidjeti dim koji sam uzimao u prethodnom koraku. Ako niste sigurni da to možete poštovati, možete jednostavno ukloniti 5v pin programatora. Dopustio sam to jer mi je bilo prikladnije programirati kontroler bez napajanja i testirati kontroler 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š sistem grijanja na sobnoj temperaturi, trebali biste izmjeriti nulu. Grijanje ručno 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.

Kada se kontroler pokrene, on šalje vrijednost crvenu pomoću internog 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 vrijednost se 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 (3V do 25V u mom slučaju, krug generira oko 11V). (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 5V, pa je, kada je izlaz pojačala blizu 5V, rezultat konverzije blizu 1024.

Korak 6: PID podešavanje

PID podešavanje
PID podešavanje

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

Prije svega, moram objasniti šta program radi. Implementirao sam neku vrstu softverskog PWM -a: brojač se povećava na svakoj iteraciji sve dok ne dostigne 20'000 (u tom slučaju se resetuje na 0). Odgoda usporava petlju do milisekunde. Najizbirljiviji od nas primijetit će da je kontrolni period 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 se događa svake sekunde.

Šta 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 sa 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 sistem.

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 ispravljanje funkcija greške (error = analogData-tempComand). Da, ali koliko? Recimo da grešku pomnožimo sa faktorom (P). Ovo je proporcionalni kontroler. Mehanički opruga vrši proporcionalnu korekciju jer je sila opruge proporcionalna pritisku opruge.

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

Pojam integratora je ovdje kako bi se izbjegla trajna greška (integrira grešku). Konkretno, to je brojač koji se povećava ili smanjuje ako je greška pozitivna ili negativna. Zatim se korekcija povećava ili smanjuje prema ovom brojaču. Nema mehaničku ekvivalentnost (ili imate ideju?). Možda postoji sličan učinak kada automobil dovedete u servis, a mehaničar primijeti da su šokovi sustavno preniski i odluče dodati još prednapona.

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

U moju verziju sam 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)). Ovim pojmom integrator postaje lakši.

Kako pronaći ove parametre?

Isprobao sam konvencionalnu metodu koju možete pronaći guglanjem "pid tuning temperature controller", ali mi je bilo teško primijeniti je i završio sam sa svojom 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 sistem i čekajte, čekajte, čekajte … dok se temperatura ne stabilizuje. U ovom trenutku znate da sa "seuil" od 1*100 = 100, temperatura teži X. Dakle, znate da sa naredbom 100/20000 = 5% možete doći do X. Ali cilj je doseći 100 jer je "tempCommand". Koristeći proporciju možete izračunati K da biste dosegli 100 (tempCommand). Iz opreza sam upotrijebio manju vrijednost od izračunate. Zaista 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 zaista spor proces jer samo nadoknađujete gubitke grijanja. Ako želite preći s jedne temperature na drugu, u sustav morate dodati određenu količinu toplinske energije. P određuje kojom brzinom unosite energiju u sistem. Postavite P na malu vrijednost (na primjer P = 10). Isprobajte (skoro) hladan 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 nauka) (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 ova iskušenja, zašto ne nauka?

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

Razmišljao sam i o svojim najboljim prijateljima Ziegleru i Nicholsu. 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 je oooooooo pucanje u nebo.

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

Nastavit ću s istraživanjem, ali sada hajde da upakujemo vaš kontroler ako ste zadovoljni performansama koje postižete.

Korak 7: Spakujte ga

Pack It
Pack It
Pack It
Pack It
Pack It
Pack It
Pack It
Pack It

Imao sam pristup moskovskom fablabu (fablab77.ru) i njihovom laserskom rezaču i zahvalan sam. Ova prilika mi je omogućila da napravim lijep paket generiran jednim klikom od strane dodatka koji izrađuje kutije željenih dimenzija (h = 69 l = 66 d = 42 mm). Postoje dvije rupe (prečnik = 5 mm) na vrhu za LED i prekidač i jedan prorez sa strane za iglice za programiranje. Osigurao sam transformator s dva komada drveta, a PCB s dva vijka. Lemio sam terminalni blok na žice i na PCB, dodao prekidač između transformatora i ulaza za PCB, serijski spojio LED na PBO sa otpornikom (300 Ohma). Koristio sam i lak za nokte za električnu izolaciju. Nakon zadnjeg testa, zalijepio sam kutiju. To je to.

Preporučuje se: