Sisukord:
- Samm: tööriistad ja materjal
- Samm: söövitage PCB
- Samm: jootke komponendid
- Samm: programmeerige mikrokontroller
- Samm: kokkupanek ja kalibreerimine
- 6. samm: PID -häälestus
- 7. samm: pakkige see kokku
Video: PID temperatuuri regulaator: 7 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
Mu sõber ehitab plastist ekstruuderit plasti ringlussevõtuks (https://preciousplastic.com). Ta peab kontrollima ekstrusiooni temperatuuri. Sel eesmärgil kasutab ta otsiku soojendusriba. Selles otsikus on termopaar ja kütteseade, mis võimaldavad meil temperatuuri mõõta ja lõpuks soovitud temperatuurini jõuda (teha tagasilöögitsükkel).
Kui ma kuulsin, et tal oli vaja mitmete PID -kontrollerite abil kõiki neid otsiku soojendusribasid juhtida, tekitas see minus kohe soovi proovida ise teha.
Samm: tööriistad ja materjal
Tööriistad
- jootekolb, jootetraat ja voog
- pintsetid
- freespink (keemiline söövitus on võimalik ka PCB prototüüpimiseks) (PCB saab tellida ka minu kotkafailiga)
- termomeeter (kalibreerimiseks)
- arduino (mis tahes tüüpi) või AVR -i programmeerija
- FTDI jada TTL-232 USB-kaabel
- laserlõikur (valikuline)
- multimeeter (ohmmeeter ja voltmeeter)
Materjal
- Bakeliit ühepoolne vaskplaat (vähemalt 60*35 mm) (ma rikkusin oma sae klaaskiust ostes, nii et olge ettevaatlik: bakeliit)
- Mikrokontroller Attiny45
- LM2940IMP-5 pingeregulaator
- AD8605 operatsioonivõimendi
- NDS356AP transistor
- hunnik takistid ja kondensaatorid (mul on raamat SMT 0603 adafruit)
- 230V-9V vahelduvvoolu trafo
- 1N4004 dioodid
- tahkis -relee
- küünelakk (valikuline)
Samm: söövitage PCB
PCB freesimiseks kasutasin oma Proxxon MF70 CNC transformeeritud ja koonilist otsaotsikut. Ma arvan, et mis tahes graveeringu lõppotsik töötab. Gcode-faili genereerisid otse kotkas ja pcb-gcode'i pistikprogramm. Vaid kolm läbimist on tehtud, et tagada hea marsruudi eraldamine, kuid kulutamata tunde kogu vase jahvatamisele. Kui trükkplaat CNC -masinast välja läks, puhastasin trassid lõikuriga ja katsetasin multimeetriga.
Parameetrid: etteandekiirus 150 mm/min, sügavus 0,2 mm, pöörlemiskiirus 20 000 t/min
Samm: jootke komponendid
Pintseti ja jootekolvi abil asetage komponendid õigetesse kohtadesse ja jootke see voo abil (see aitab) ja alustage kõige väiksematest komponentidest. Jällegi kontrollige multimeetriga, kas teil pole lühiseid ega ühendamata elemente.
Võimendi võimenduse saate valida soovitud takisti abil (võimendus = (R3+R4)/R4). Võtsin 1M ja 2,7k, nii et minu puhul on võimendus ligikaudu 371. Ma ei saa täpset väärtust teada, sest kasutan 5% tolerantsitakistit.
Minu termopaar on J tüüpi. See tähendab, et see annab iga kraadi kohta 0,05 mV. Võimendusega 371 saan võimendi väljundist 18,5 mV kraadi kohta (0,05*371). Ma tahan mõõta umbes 200 ° C, nii et võimendi väljund peaks olema umbes 3,7 V (0,0185*200). Tulemus ei tohiks ületada 5 V, kuna kasutan 5V võrdluspinget (väline).
Pilt vastab esimesele (mitte töötavale) versioonile, mille tegin, kuid põhimõte on sama. Selles esimeses versioonis kasutasin releed ja panin selle otse plaadi keskele. Niipea, kui ma kõrgepingega ümber lülitasin, tekkisid mul naelu, mis panid kontrolleri taaskäivitama.
Samm: programmeerige mikrokontroller
Kasutades arduinot, nagu käesolevas juhendis: https://www.instructables.com/id/How-to-Program-a… saate koodi laadida.
Kasutasin Attiny 45 programmeerimiseks FTDI-USB-kaabliga professionaalset nipsasja, kuid see meetod on samaväärne. Seejärel ühendasin tihvti PB1 ja GDN otse FTDI-USB-kaabli RX-i ja GND-ga, et saada jadaandmeid ja saaks siluda.
Arduino visandis peaksite kõik parameetrid nulli panema (P = 0, I = 0, D = 0, K = 0). Need seadistatakse häälestamisetapi ajal.
Kui te ei näe suitsu ega põletatud lõhna, võite hüpata järgmisele sammule!
Samm: kokkupanek ja kalibreerimine
Ettevaatust: Ärge kunagi ühendage programmeerija toiteallikat ja 5 V korraga! Vastasel juhul näete suitsu, mida ma eelmises etapis kasutasin. Kui te pole kindel, et suudate seda järgida, võite programmeerija jaoks lihtsalt 5 -voldise kontakti eemaldada. Lasin, sest mul oli mugavam kontrollerit ilma toiteallikata programmeerida ja kontrollerit testida, ilma et kütteseade mu näo ees hullult kuumeneks.
Nüüd saate võimendi termopaari hargneda ja vaadata, kas mõõdate midagi (austage polaarsust). Kui teie küttesüsteem on toatemperatuuril, peaksite mõõtma nulli. Käega kuumutamine peaks juba viima mõne väikese väärtuseni.
Kuidas neid väärtusi lugeda? Lihtsalt ühendage tihvtid PB1 ja GDN otse FTDI-USB-kaabli RX ja GND-ga ning avage arduino jadamonitor.
Kui kontroller käivitub, saadab see kiibi sisemise termomeetri abil punase väärtuse. Nii kompenseerin temperatuuri (ilma spetsiaalset kiipi kasutamata). See tähendab, et kui temperatuur operatsiooni ajal muutub, ei võeta seda arvesse. See väärtus on kiibiti väga erinev, nii et see tuleb visandi alguses REFTEMPERATURE definitsiooni käsitsi sisestada.
Enne tahkisrelee ühendamist kontrollige, kas väljundpinge jääb teie relee toetatud vahemikku (minu puhul 3–25 V, vooluahel genereerib umbes 11 V). (austa polaarsust)
Need väärtused ei ole temperatuurid kraadides ega Fahrenheiti järgi, vaid analoog -digitaalse muundamise tulemus, nii et need varieeruvad vahemikus 0 kuni 1024. Ma kasutan 5 V võrdluspinget, seega kui võimendi väljund on 5 V lähedal, on muundamise tulemus 1024 lähedal.
6. samm: PID -häälestus
Pean mainima, et ma ei ole kontrolliekspert, seega leidsin mõned parameetrid, mis minu jaoks töötavad, kuid ma ei garanteeri, et see sobib kõigile.
Kõigepealt pean selgitama, mida programm teeb. Rakendasin omamoodi tarkvara PWM -i: loendurit suurendatakse igal iteratsioonil, kuni see jõuab 20'000 -ni (sel juhul lähtestatakse 0). Viivitus aeglustab silmust millisekundini. Kõige tähelepanelikumad meist märkavad, et kontrollperiood on umbes 20 sekundit. Iga silmus algab loenduri ja läve võrdlemisega. Kui loendur on künnisest madalam, lülitan relee välja. Kui see on suurem, lülitan selle sisse. Seega reguleerin võimsust läve seadmisega. Künnise arvutamine toimub iga sekund.
Mis on PID -kontroller?
Kui soovite protsessi juhtida, on teil mõõdetav väärtus (analogData), väärtus, milleni soovite jõuda (tempCommand), ja võimalus protsessi olekut muuta (seuil). Minu puhul tehakse seda künnisega (prantsuse keeles "seuil", kuid palju lihtsam kirjutada ja hääldada (hääldada "sey")), mis määrab, kui kaua lüliti sisse ja välja lülitatakse (töötsükkel), seega energiakogus süsteemi sisse panna.
Kõik nõustuvad, et kui olete kaugel punktist, kuhu soovite jõuda, saate teha suure paranduse ja kui olete lähedal, on vaja väikest parandust. See tähendab, et parandus on vea funktsioon (error = analogData-tempComand). Jah, aga kui palju? Oletame, et korrutame vea teguriga (P). See on proportsionaalne kontroller. Mehaaniliselt muudab vedru proportsionaalset korrektsiooni, kuna vedru jõud on võrdeline vedru surumisega.
Tõenäoliselt teate, et teie auto vedrustus koosneb vedrust ja amortisaatorist (amortisaator). Selle siibri ülesanne on vältida auto tagasilööki nagu batuut. Just seda teeb tuletisinstrument. Siibrina tekitab see reaktsiooni, mis on proportsionaalne vea variatsiooniga. Kui viga muutub kiiresti, vähendatakse parandust. See vähendab võnkumisi ja ületamisi.
Integraatori termin on siin, et vältida püsivat viga (see integreerib vea). Konkreetselt on see loendur, mida suurendatakse või vähendatakse, kui viga on positiivne või negatiivne. Seejärel korrigeerimist suurendatakse või vähendatakse vastavalt sellele loendurile. Sellel pole mehaanilist samaväärsust (või on teil idee?). Võib -olla on sarnane efekt ka siis, kui viite oma auto teenindusse ja mehaanik märkab, et amordid on süstemaatiliselt liiga madalad, ja otsustab lisada veel mõne eellaadimise.
Kõik see on kokku võetud valemis: parandus = P*e (t)+I*(de (t)/dt)+D*integraal (e (t) dt), P, I ja D on kolm parameetrit, millel on häälestada.
Lisasin oma versiooni neljanda termini, mis on teatud temperatuuri hoidmiseks vajalik käsk "a priori" (etteandmine). Valisin temperatuuri suhtes proportsionaalse käsu (see on hea ligikaudne küttekaod. See on tõsi, kui jätta tähelepanuta kiirguskaod (T^4)). Selle mõistega on integraator kergem.
Kuidas neid parameetreid leida?
Proovisin tavalist meetodit, mille leiate googeldades "pid tuning Temperature Controller", kuid mul oli seda raske rakendada ja jõudsin oma meetodini.
Minu meetod
Kõigepealt pange P, I, D nulli ja pange "K" ja "tempCommand" väikesteks väärtusteks (näiteks K = 1 ja tempCommand = 100). Lülitage süsteem sisse ja oodake, oodake, oodake… kuni temperatuur on stabiliseerunud. Siinkohal teate, et kui "seuil" on 1*100 = 100, kipub temperatuur olema X. Seega teate, et käsuga 100/20000 = 5% võite jõuda X -ni. Kuid eesmärk on saavutada 100 sest see on "tempCommand". Proportsiooni kasutades saate arvutada K, et jõuda 100 -ni (tempCommand). Ettevaatusabinõuna kasutasin väiksemat väärtust kui arvutatud. Tõepoolest, kergem on rohkem soojendada kui jahtuda. Nii et lõpuks
Kfinaal = K*tempCommand*0,9/X
Nüüd, kui käivitate kontrolleri, peaks see loomulikult kalduma soovitud temperatuurini, kuid see on tõesti aeglane protsess, kuna kompenseerite ainult küttekaod. Kui soovite minna ühelt temperatuurilt teisele, tuleb süsteemi lisada soojusenergia kogus. P määrab, millise kiirusega te süsteemi energiat sisestate. Määrake P väikeseks väärtuseks (näiteks P = 10). Proovige (peaaegu) külma käivitamist. Kui teil pole suurt ületamist, proovige kahekordselt (P = 20), kui nüüd proovite midagi vahepealset. Kui teil on 5% ületamine, on see hea.
Nüüd suurendage D, kuni ületamist pole. (alati katsed, ma tean, et see pole teadus) (võtsin D = 100)
Seejärel lisage I = P^2/(4*D) (See põhineb Ziegler-Nicholtsi meetodil, see peaks tagama stabiilsuse) (minu jaoks I = 1)
Miks kõik need katsed, miks mitte teadus?
Ma tean, ma tean! Seal on tohutu teooria ja saate arvutada ülekandefunktsiooni ning Z -teisenduse ja blablabla. Tahtsin genereerida ühtse hüppe ja seejärel salvestada 10 minutit reaktsiooni ja kirjutada ülekandefunktsioon ja mis siis? Ma ei taha aritmeetikat teha 200 terminiga. Nii et kui kellelgi on idee, siis õpiksin hea meelega, kuidas seda õigesti teha.
Mõtlesin ka oma parimatele sõpradele Zieglerile ja Nicholsile. Nad käskisid mul leida võnkumisi tekitava P ja seejärel rakendada nende meetodit. Ma ei leidnud neid võnkumisi kunagi. Ainus, mis ma leidsin, oli oooooooovershoot taevasse.
Ja kuidas modelleerida asjaolu, et kuumutamine ei ole sama protsess kui jahutamine?
Jätkan oma uurimistööd, kuid nüüd pakime teie kontrolleri kokku, kui olete saavutatud jõudlusega rahul.
7. samm: pakkige see kokku
Mul oli juurdepääs Moskva fablabile (fablab77.ru) ja nende laserlõikurile ning olen tänulik. See võimalus võimaldas mul teha ühe klõpsuga genereeritud kena paketi, mille valmistas soovitud mõõtmetega kastid (h = 69 l = 66 d = 42 mm). LED -i ja lüliti jaoks on ülaosas kaks auku (diam = 5 mm) ja küljel üks pilu programmeerimisnõelte jaoks. Kinnitasin trafo kahe puutükiga ja trükkplaadi kahe kruviga. Jootsin klemmiploki juhtmetele ja trükkplaadile, lisasin lüliti trafo ja trükkplaadi toitesisendi vahel, ühendasin juhtmed PBO -ga takistiga (300 oomi) järjestikku. Elektriisolatsiooniks kasutasin ka küünelakki. Pärast viimast katset liimisin kasti. See on kõik.
Soovitan:
Muutuva mootorikiiruse regulaator: 8 sammu
Muutuva mootorikiiruse regulaator: Selles projektis näitan teile, kuidas ma tegin mootori kiiruse regulaatori & Samuti demonstreerin, kui lihtne võib olla IC 555 abil muutuva mootorikiiruse regulaatori ehitamine. Alustame
Lihtne toite LED lineaarne voolu regulaator, muudetud ja täpsustatud: 3 sammu
Lihtne toite LED -i lineaarse voolu regulaator, muudetud ja täpsustatud: see juhend on sisuliselt Dani lineaarse voolu regulaatori ahela kordus. Tema versioon on muidugi väga hea, kuid puudub selgus. See on minu katse sellega tegeleda. Kui saate aru ja saate Dani versiooni luua
EHITA SMD 7805 PCB REGULAATOR: 9 sammu
EHITADA SMD 7805 PCB REGULATOR: tere ja tere tulemast teise põhilise, kuid kasuliku juhendi juurde. Kas olete mõelnud, kas proovida SMD komponentide jootmist või luua 78XX pingeregulaatori jaoks mini PCB? Ütle rohkem … Ma näitan kuidas teha ilusa LED -indikaatoriga mini -trükkplaati
Termilise ventilaatori kiiruse regulaator: 4 sammu
Termilise ventilaatori kiiruse regulaator: täna, jumal lubab, näitan videot, milles selgitatakse olulist vooluahelat arvuti ventilaatori või pideva vooluga töötava ventilaatori pöörlemiskiiruse reguleerimiseks, kasutades lineaarset pingeregulaatorit LM7812 BD139 transistor, mis
Automaatne temperatuuri regulaator: 4 sammu
Automaatne temperatuuriregulaator: selle projekti eesmärk on aidata teil automaatselt ja elektrooniliselt kontrollida ja hoida sama temperatuuri õiglases vahemikus, ka inimeste jaoks mugavas temperatuuris. Pideval alal või konkreetselt ruumis ilma tegurita