Talaan ng mga Nilalaman:

Temperatura Controller ng PID: 7 Mga Hakbang
Temperatura Controller ng PID: 7 Mga Hakbang

Video: Temperatura Controller ng PID: 7 Mga Hakbang

Video: Temperatura Controller ng PID: 7 Mga Hakbang
Video: The Ultimate Guide to set STC-1000 Temperature Controller 2024, Nobyembre
Anonim
Temperatura Controller ng PID
Temperatura Controller ng PID

Ang aking kaibigan ay nagtatayo ng isang plastic extruder para sa plastic na pag-recycle (https://preciousplastic.com). Kailangan niyang makontrol ang temperatura ng pagpilit. Para sa hangaring iyon ay gumagamit siya ng isang banda ng heater heater. Sa nozzle na ito, mayroong isang thermocouple at isang unit ng pag-init na nagbibigay-daan sa amin upang masukat ang temperatura at sa wakas ay maabot ang nais na temperatura (gumawa ng isang loop ng pag-urong).

Nang marinig ko na kailangan niya ng maraming mga kontrolado ng PID upang makontrol ang lahat ng mga banda ng pampainit ng nguso ng gripo, binigyan kaagad ako ng pagnanais na subukang gumawa ng sarili namin.

Hakbang 1: Mga tool at Materyal

Mga kasangkapan

  • soldering iron, solder wire at pagkilos ng bagay
  • tweezer
  • milling machine (posible din ang kemikal na pag-ukit para sa prototyping ng PCB) (maaari mo ring orderin ang PCB gamit ang aking eagle file)
  • thermometer (para sa pagkakalibrate)
  • arduino (anumang uri) o isang AVR programmer
  • FTDI serial TTL-232 USB cable
  • pamutol ng laser (opsyonal)
  • multimeter (ohmmeter at voltmeter)

Materyal

  • Bakelite solong panig na plato ng tanso (minimum na 60 * 35 mm) (Nasira ko ang aking lagari na binili ang isang fiberglass kaya mag-ingat: Bakelite)
  • Attiny45 microcontroller
  • LM2940IMP-5 boltahe regulator
  • AD8605 pagpapatakbo amplifier
  • NDS356AP transistor
  • isang bungkos ng resistors at capacitor (mayroon akong SMT 0603 adafruit book)
  • 230V-9V ac-dc transpormer
  • 1N4004 diode
  • relay ng solidong estado
  • polish ng kuko (opsyonal)

Hakbang 2: Etch ang PCB

Etch ang PCB
Etch ang PCB
Etch ang PCB
Etch ang PCB
Etch ang PCB
Etch ang PCB

Ginamit ko ang aking Proxxon MF70 CNC na binago at isang korteng pangwakas na pagtatapos upang gilingan ang PCB. Sa palagay ko ay gagana ang anumang pag-ukit sa pagtatapos. Ang file ng Gcode ay direktang nabuo ng agila at ng plugin ng pcb-gcode. Tatlong mga pass lamang kung saan tapos na upang matiyak ang isang mahusay na paghihiwalay ng ruta ngunit hindi gumugol ng oras sa paggiling ng lahat ng tanso. Nang lumabas ang PCB sa makina ng CNC, nilinis ko ang mga ruta gamit ang isang pamutol at sinubukan ang mga ito gamit ang isang multimeter.

Mga Parameter: rate ng feed na 150mm / min, lalim 0.2mm, bilis ng pag-ikot 20'000 t / min

Hakbang 3: Maghinang ng Mga Bahagi

Maghinang ang Mga Bahagi
Maghinang ang Mga Bahagi

Gamit ang tweezer at ang soldering iron, ilagay ang mga bahagi sa mga tamang lugar at maghinang ito gamit ang pagkilos ng bagay (makakatulong ito) at magsisimula sa pinakamaliit na sangkap. Muli, suriin sa isang multimeter na wala kang anumang mga maikling circuit o hindi magkakaugnay na mga elemento.

Maaari mong piliin ang nakuha ng amplifier sa pamamagitan ng pagpili ng resistor na gusto mo (makakuha = (R3 + R4) / R4). Kinuha ko ang 1M at 2.7k kaya't sa aking kaso ang nakuha na pantay na humigit-kumulang na 371. Hindi ko alam ang eksaktong halaga dahil gumagamit ako ng 5% tolerance resistor.

Ang aking thermocouple ay isang uri ng J. Nangangahulugan ito na nagbibigay ito ng 0.05mV para sa bawat degree. Sa pagkakaroon ng 371, nakakakuha ako ng 18.5mV bawat degree mula sa output ng amplifier (0.05 * 371). Nais kong sukatin ang paligid ng 200 ° C kaya ang output ng amplifier ay dapat na nasa 3.7V (0.0185 * 200). Ang resulta ay hindi dapat lumagpas sa 5V dahil ginagamit ko ang boltahe ng sanggunian na 5V (panlabas).

Ang imahe ay tumutugma sa unang (hindi gumagana) na bersyon na aking ginawa ngunit ang prinsipyo ay pareho. Sa unang bersyon na ito, gumamit ako ng isang relay at ilagay ito sa gitna mismo ng board. Sa lalong madaling paglipat ko ng mataas na boltahe, mayroon akong mga spike na gumawa ng controller sa pag-reboot.

Hakbang 4: I-program ang Microcontroller

I-program ang Microcontroller
I-program ang Microcontroller

Paggamit ng isang arduino tulad ng mga itinuturo na ito: https://www.instructables.com/id/How-to-Program-a… maaari mong mai-load ang code.

Gumamit ako ng isang pro trinket na may isang FTDI-USB cable upang mai-program ang Attiny 45 ngunit ang pamamaraang ito ay katumbas. Pagkatapos ay isinaksak ko ang pin PB1 at GDN nang direkta sa RX at GND ng FTDI-USB cable upang matanggap ang serial data at makapag-debug.

Dapat mong ilagay ang lahat ng mga parameter sa zero (P = 0, I = 0, D = 0, K = 0) sa arduino sketch. Itatakda ang mga ito sa hakbang ng pag-tune.

Kung hindi mo nakikita ang usok o amoy nasunog, maaari kang tumalon sa susunod na hakbang!

Hakbang 5: Pagtitipon at Pag-calibrate

Assembling at Calibrating
Assembling at Calibrating
Assembling at Calibrating
Assembling at Calibrating

Pag-iingat: Huwag kailanman plug ang power supply at ang 5V mula sa programmer nang sabay! Kung hindi man ay makikita mo ang usok na ginagawa ko sa nakaraang hakbang. Kung hindi ka sigurado na magagalang iyon, maaari mo lamang alisin ang 5v pin para sa programmer. Hinayaan ko ito sapagkat mas maginhawa para sa akin na i-program ang controller nang walang supply ng kuryente at upang subukan ang controller nang hindi nagkakaroon ng pampainit na pampainit na parang baliw sa harap ng aking mukha.

Ngayon ay maaari mong i-sangay ang thermocouple sa amplifier at tingnan kung may sinusukat ka (igalang ang polarity). Kung ang iyong sistema ng pag-init ay nasa temperatura ng kuwarto, dapat mong sukatin ang zero. Ang pag-init nito gamit ang kamay ay dapat na humantong sa ilang maliit na halaga.

Paano basahin ang mga halagang ito? I-plug lamang ang mga pin na PB1 at GDN nang direkta sa RX at GND ng FTDI-USB cable at buksan ang arduino serial monitor.

Kapag nagsimula ang tagakontrol, ipinapadala nito ang pulang halaga ng panloob na termometro ng maliit na tilad. Ganito ko binabayaran ang temperatura (nang hindi gumagamit ng isang nakalaang maliit na tilad). Nangangahulugan ito na kung ang temperatura ay nagbabago sa panahon ng operasyon, hindi ito isasaalang-alang. Ang halagang ito ay ibang-iba mula sa isang maliit na tilad patungo sa isa pa kaya kailangan itong ipasok nang manu-mano sa kahulugan ng REFTEMPERATURE sa simula ng sketch.

Bago ikonekta ang solidong relay ng estado, i-verify na ang output ng boltahe ay nasa saklaw na suportado ng iyong relay (3V hanggang 25V sa aking kaso, bumubuo ang circuit sa paligid ng 11V). (igalang ang polarity)

Ang mga halagang ito ay hindi temperatura sa degree o Fahrenheit ngunit ang resulta ng analog sa digital conversion kaya't nag-iiba sila sa pagitan ng 0 at 1024. Ginagamit ko ang boltahe ng sanggunian na 5V kung gayon kapag ang output ng amplifier ay malapit sa 5V, ang resulta ng conversion ay malapit sa 1024.

Hakbang 6: Pag-tune ng PID

Pag-tune ng PID
Pag-tune ng PID

Kailangan kong banggitin na hindi ako isang dalubhasa sa pagkontrol, kaya natagpuan ko ang ilang mga parameter na gumagana para sa akin ngunit hindi ko ginagarantiyahan na gumagana ito para sa lahat.

Una sa lahat, kailangan kong ipaliwanag kung ano ang ginagawa ng programa. Nagpatupad ako ng isang uri ng software PWM: isang counter ay nadagdagan sa bawat pag-ulit hanggang sa umabot ito sa 20'000 (kung saan ay na-reset sa 0). Ang isang pagkaantala ay nagpapabagal ng loop pababa sa isang millisecond. Mapapansin ng pinakanakakilala sa atin na ang panahon ng pagkontrol ay nasa 20 segundo. Ang bawat loop ay nagsisimula sa isang paghahambing sa pagitan ng counter at isang threshold. Kung ang counter ay mas mababa kaysa sa threshold, pagkatapos ay pinapatay ko ang relay. Kung ito ay mas malaki, buksan ko ito. Kaya kinokontrol ko ang lakas sa pamamagitan ng pagtatakda ng threshold. Ang pagkalkula ng threshold ay nangyayari bawat segundo.

Ano ang isang PID controller?

Kung nais mong kontrolin ang isang proseso, mayroon kang halagang sinusukat mo (analogData), ang halagang nais mong maabot (tempCommand) at isang paraan upang mabago ang estado ng prosesong iyon (seuil). Sa aking kaso ito ay tapos na sa threshold ("seuil" sa pranses ngunit mas madaling isulat at bigkasin (bigkasin ang "sey")) na tumutukoy kung gaano katagal ang switch at on (ang duty cycle) kaya ang dami ng enerhiya ilagay sa system.

Sumasang-ayon ang lahat na kung malayo ka sa puntong nais mong maabot, maaari kang gumawa ng isang malaking pagwawasto at kung malapit ka, kailangan ng kaunting pagwawasto. Nangangahulugan ito na ang pagwawasto ay isang pagpapaandar ng error (error = analogData-tempComand). Oo pero magkano? Sabihin nating pinarami natin ang error sa pamamagitan ng isang factor (P). Ito ay isang proporsyonal na controller. Sa mekanikal na isang spring ay gumagawa ng proporsyonal na pagwawasto dahil ang puwersang spring ay proporsyonal sa compression ng spring.

Marahil alam mo na ang iyong mga suspensyon ng kotse ay binubuo ng isang spring at isang damper (shock absorber). Ang papel na ginagampanan ng damper na ito ay upang maiwasan ang iyong kotse rebounding tulad ng isang trampolin. Ito mismo ang ginagawa ng derivative term. Bilang damper, bumubuo ito ng isang reaksyon na proporsyonal sa pagkakaiba-iba ng error. Kung ang error ay nagbabago nang mabilis, ibababa ang pagwawasto. Binabawasan nito ang mga oscillation at overshoot.

Ang termino ng integrator ay narito upang maiwasan ang permanenteng error (isinasama nito ang error). Concretely, ito ay isang counter na nadagdagan o nabawasan kung ang error ay positibo o negatibo. Pagkatapos ang pagwawasto ay nadagdagan o binabaan alinsunod sa counter na ito. Wala itong katumbas na mekanikal (o mayroon kang ideya?). Marahil ay may isang katulad na epekto kapag dinala mo ang iyong sasakyan sa serbisyo at napansin ng mekaniko na ang mga pagkabigla ay sistematikong masyadong mababa at nagpasyang magdagdag ng higit pang paunang preload.

Ang lahat ng ito ay binubuod sa pormula: pagwawasto = P * e (t) + I * (de (t) / dt) + D * integral (e (t) dt), P, I at D na tatlong mga parameter na mayroon upang mai-tono

Sa aking bersyon nagdagdag ako ng isang pang-apat na term na kung saan ay ang "isang priori" (feed forward) na utos na kinakailangan upang mapanatili ang isang tiyak na temperatura. Pinili ko ang isang proporsyonal na utos sa temperatura (ito ay isang mahusay na paglapit sa mga pagkalugi sa pag-init. Totoo kung napapabayaan natin ang pagkawala ng radiation (T ^ 4)). Sa term na ito, ang integrator ay gumagaan.

Paano makahanap ng mga parameter na ito?

Sinubukan ko ang isang maginoo na pamamaraan na mahahanap mo sa pamamagitan ng pag-google ng "pid tuning temperatura controller" ngunit nahirapan akong mag-apply at napunta sa aking sariling pamamaraan.

Ang pamamaraan ko

Una ilagay ang P, I, D sa zero at ilagay ang "K" at "tempCommand" sa maliliit na halaga (halimbawa K = 1 at tempCommand = 100). Buksan ang system at maghintay, maghintay, maghintay … hanggang sa ang temperatura ay tumatag. Sa puntong ito alam mo na sa isang "seuil" na 1 * 100 = 100, ang temperatura ay may gawi sa X. Kaya't alam mo na sa isang utos na 100/20000 = 5% maaabot mo ang X. Ngunit ang layunin ay maabot ang 100 sapagkat ito ay "tempCommand". Gamit ang isang proporsyon maaari mong kalkulahin ang K upang maabot ang 100 (tempCommand). Sa pamamagitan ng pag-iingat gumamit ako ng isang mas maliit na halaga kaysa sa kinakalkula. Sa katunayan mas madaling magpainit kaysa sa magpalamig. Kaya sa wakas

Kfinal = K * tempCommand * 0.9 / X

Ngayon kapag sinimulan mo ang controller, dapat natural na may kaugaliang ito sa temperatura na gusto mo ngunit ito ay isang talagang mabagal na proseso sapagkat binabayaran mo lamang ang mga pagkawala ng pag-init. Kung nais mong pumunta mula sa isang temperatura patungo sa isa pa, isang dami ng thermal energy ang dapat idagdag sa system. Tinutukoy ng P kung aling rate ang inilalagay mo ng enerhiya sa system. Itakda ang P sa isang maliit na halaga (para sa exemple P = 10). Subukan ang isang (halos) malamig na pagsisimula. Kung wala kang isang malaking overshoot, subukan sa doble (P = 20) kung ngayon mayroon kang isang pagsubok sa pagitan. Kung mayroon kang 5% overshoot, mabuti.

Ngayon dagdagan ang D hanggang sa wala kang labis na pag-overshoot. (laging pagsubok, alam kong hindi ito agham) (Kinuha ko ang D = 100)

Pagkatapos idagdag ang I = P ^ 2 / (4 * D) (Ito ay batay sa pamamaraan ng Ziegler-Nicholts, dapat itong garantiya ng katatagan) (para sa akin I = 1)

Bakit lahat ng pagsubok na ito, bakit hindi agham?

Alam ko alam ko! Mayroong isang malaking teorya at maaari mong kalkulahin ang pagpapaandar ng paglipat at ang Z na magbago at blablabla. Nais kong makabuo ng isang unitary jump at pagkatapos ay itala sa loob ng 10 minuto ang reaksyon at isulat ang transfer function at pagkatapos ano? Ayokong gumawa ng arithmetic na may 200 na term. Kaya't kung may may ideya, masisiyahan akong malaman kung paano ito gawin nang maayos.

Naisip ko rin ang matalik kong kaibigan na sina Ziegler at Nichols. Sinabi nila sa akin na maghanap ng isang P na makakabuo ng mga oscillation at pagkatapos ay ilapat ang kanilang pamamaraan. Hindi ko natagpuan ang mga oscillation na ito. Ang natagpuan ko lamang ay isang ooooooooverhoot sa kalangitan.

At kung paano i-modelo ang katotohanang ang pag-init ay hindi pareho ng proseso tulad ng paglamig?

Ipagpapatuloy ko ang aking pagsasaliksik ngunit ngayon ay i-package natin ang iyong tagakontrol kung masaya ka sa pagganap na nakukuha mo.

Hakbang 7: I-pack Ito

Ibalot Mo
Ibalot Mo
Ibalot Mo
Ibalot Mo
Ibalot Mo
Ibalot Mo
Ibalot Mo
Ibalot Mo

May access ako sa Moscow fablab (fablab77.ru) at ang kanilang laser cutter at nagpapasalamat ako. Pinapayagan ako ng pagkakataong ito na gumawa ng isang magandang pakete na nabuo sa isang pag-click ng isang plugin na gumagawa ng mga kahon ng mga nais na sukat (h = 69 l = 66 d = 42 mm). Mayroong dalawang mga butas (diam = 5mm) sa tuktok para sa led at ang switch at isang slit sa gilid para sa mga pin ng programa. Siniguro ko ang transpormer na may dalawang piraso ng kahoy at ang PCB na may dalawang turnilyo. In-solder ko ang terminal block sa mga wire at sa PCB, idinagdag ang switch sa pagitan ng transpormer at ang input ng lakas ng PCB, nakakonekta ang humantong sa PBO na may isang risistor (300 Ohms) sa serye. Gumamit din ako ng nail polish para sa pagkakabukod ng elektrisidad. Matapos ang huling pagsubok, idinikit ko ang kahon. Ayan yun.

Inirerekumendang: