Satura rādītājs:

PID temperatūras kontrolieris: 7 soļi
PID temperatūras kontrolieris: 7 soļi

Video: PID temperatūras kontrolieris: 7 soļi

Video: PID temperatūras kontrolieris: 7 soļi
Video: Cómo es el control de temperatura ON-OFF & PID en la Instrumentación industrial 2024, Jūlijs
Anonim
PID temperatūras kontrolieris
PID temperatūras kontrolieris

Mans draugs būvē plastmasas ekstrūderi plastmasas pārstrādei (https://preciousplastic.com). Viņam ir jākontrolē izspiešanas temperatūra. Šim nolūkam viņš izmanto sprauslu sildītāja joslu. Šajā sprauslā ir termopārs un sildierīce, kas ļauj izmērīt temperatūru un beidzot sasniegt vēlamo temperatūru (izveidot atpakaļejošu cilpu).

Kad es dzirdēju, ka viņam vajadzēja vairākiem PID kontrolieriem kontrolēt visas šīs sprauslu sildītāju joslas, tas uzreiz radīja vēlmi mēģināt izveidot savu.

Solis: instrumenti un materiāls

Rīki

  • lodāmurs, lodēšanas stieple un plūsma
  • pincete
  • frēzmašīna (PCB prototipēšanai ir iespējama arī ķīmiska kodināšana) (PCB var pasūtīt arī ar manu ērgļa failu)
  • termometrs (kalibrēšanai)
  • arduino (jebkura veida) vai AVR programmētājs
  • FTDI sērijas TTL-232 USB kabelis
  • lāzera griezējs (pēc izvēles)
  • multimetrs (ommetrs un voltmetrs)

Materiāls

  • Bakelīta vienas puses vara plāksne (vismaz 60*35 mm) (es sabojāju savu zāģi, pērkot stikla šķiedru, tāpēc esiet uzmanīgs: bakelīts)
  • Mikrokontrolleris Attiny45
  • LM2940IMP-5 sprieguma regulators
  • AD8605 darbības pastiprinātājs
  • NDS356AP tranzistors
  • ķekars rezistoru un kondensatoru (man ir SMT 0603 adafruit grāmata)
  • 230V-9V maiņstrāvas transformators
  • 1N4004 diodes
  • cietvielu relejs
  • nagu laka (pēc izvēles)

2. darbība: iegravējiet PCB

Kodiniet PCB
Kodiniet PCB
Kodiniet PCB
Kodiniet PCB
Kodiniet PCB
Kodiniet PCB

PCB frēzēšanai es izmantoju pārveidoto Proxxon MF70 CNC un konisko gala uzgali. Es domāju, ka derētu jebkurš gravējuma gala bits. Gcode failu tieši ģenerēja ērglis un spraudnis pcb-gcode. Tikai trīs piegājieni tika veikti, lai nodrošinātu labu maršruta atdalīšanu, bet netērējot stundas visa vara malšanai. Kad PCB izgāja no CNC mašīnas, es notīrīju maršrutus ar griezēju un pārbaudīju tos ar multimetru.

Parametri: padeves ātrums 150 mm/min, dziļums 0,2 mm, rotācijas ātrums 20'000 t/min

3. solis: komponentu lodēšana

Lodējiet komponentus
Lodējiet komponentus

Izmantojot pinceti un lodāmuru, novietojiet komponentus pareizajās vietās un pielodējiet, izmantojot plūsmu (tas palīdz) un sākot ar mazākajām sastāvdaļām. Vēlreiz pārbaudiet ar multimetru, vai jums nav īssavienojumu vai nesaistītu elementu.

Pastiprinātāja pastiprinājumu varat izvēlēties, izvēloties vēlamo rezistoru (pastiprinājums = (R3+R4)/R4). Es paņēmu 1M un 2,7k, tāpēc manā gadījumā peļņa ir aptuveni 371. Es nevaru zināt precīzu vērtību, jo es izmantoju 5% pielaides pretestību.

Mans termopārs ir J tipa. Tas nozīmē, ka tas dod 0,05 mV katrai pakāpei. Ar pastiprinājumu 371 es no pastiprinātāja izejas iegūstu 18,5 mV uz grādu (0,05*371). Es vēlos izmērīt aptuveni 200 ° C, tāpēc pastiprinātāja izejai jābūt aptuveni 3,7 V (0,0185*200). Rezultātam nevajadzētu pārsniegt 5V, jo es izmantoju 5V atsauces spriegumu (ārējais).

Attēls atbilst manai pirmajai (nestrādājošajai) versijai, bet princips ir tāds pats. Šajā pirmajā versijā es izmantoju releju un ievietoju to tāfeles vidū. Tiklīdz es pārslēdzos ar augstu spriegumu, man bija tapas, kas lika kontrolierim atsāknēt.

4. solis: ieprogrammējiet mikrokontrolleru

Programmējiet mikrokontrolleru
Programmējiet mikrokontrolleru

Izmantojot arduino, piemēram, šajā instrukcijā: https://www.instructables.com/id/How-to-Program-a… jūs varat ielādēt kodu.

Attiny 45 programmēšanai es izmantoju profesionālu piekariņu ar FTDI-USB kabeli, taču šī metode ir līdzvērtīga. Pēc tam es pievienoju tapu PB1 un GDN tieši FTDI-USB kabeļa RX un GND, lai saņemtu sērijas datus un varētu atkļūdot.

Arduino skicē visus parametrus vajadzētu novietot līdz nullei (P = 0, I = 0, D = 0, K = 0). Tie tiks iestatīti regulēšanas laikā.

Ja neredzat dūmus vai sadedzinātu smaku, varat pāriet uz nākamo soli!

5. darbība: salikšana un kalibrēšana

Montāža un kalibrēšana
Montāža un kalibrēšana
Montāža un kalibrēšana
Montāža un kalibrēšana

Uzmanību: nekad nepievienojiet barošanas avotu un 5 V no programmētāja vienlaikus! Pretējā gadījumā jūs redzēsiet dūmus, par kuriem es veicu iepriekšējā solī. Ja neesat pārliecināts, ka spēsit to ievērot, varat vienkārši noņemt programmētāja 5V tapu. Es to pieļāvu, jo man bija ērtāk ieprogrammēt kontrolieri bez barošanas avota un pārbaudīt kontrolieri bez tā, ka sildītājs manas sejas priekšā silda kā traks.

Tagad jūs varat sazarot termopāri uz pastiprinātāja un redzēt, vai jūs kaut ko mērāt (ievērojiet polaritāti). Ja jūsu apkures sistēma ir istabas temperatūrā, jums vajadzētu izmērīt nulli. Sildot to ar rokām, jau vajadzētu radīt dažas nelielas vērtības.

Kā lasīt šīs vērtības? Vienkārši pievienojiet tapas PB1 un GDN tieši FTDI-USB kabeļa RX un GND un atveriet arduino sērijas monitoru.

Kad kontrolieris sāk darboties, tas nosūta sarkano vērtību ar mikroshēmas iekšējo termometru. Šādi es kompensēju temperatūru (neizmantojot īpašu mikroshēmu). Tas nozīmē, ka, ja darbības laikā temperatūra mainās, tā netiks ņemta vērā. Šī vērtība dažādās mikroshēmās ir ļoti atšķirīga, tāpēc tā ir jāievada manuāli definīcijā REFTEMPERATURE skices sākumā.

Pirms cietvielu releja pievienošanas pārbaudiet, vai sprieguma izeja ir jūsu releja atbalstītajā diapazonā (manā gadījumā no 3V līdz 25V, ķēde ģenerē aptuveni 11V). (ievērojiet polaritāti)

Šīs vērtības nav temperatūras grādos vai pēc Fārenheita, bet gan no analogās uz ciparu pārveidošanas rezultāts, tāpēc tās svārstās no 0 līdz 1024. Es izmantoju 5 V atskaites spriegumu, tādējādi, ja pastiprinātāja izeja ir tuvu 5 V, konversijas rezultāts ir tuvu 1024.

6. darbība: PID regulēšana

PID regulēšana
PID regulēšana

Man jāpiemin, ka neesmu kontroles eksperts, tāpēc es atradu dažus parametrus, kas man der, bet es negarantēju, ka tas darbojas visiem.

Pirmkārt, man ir jāpaskaidro, ko programma dara. Es ieviesu sava veida programmatūras PWM: skaitītājs tiek palielināts katrā iterācijā, līdz tas sasniedz 20'000 (tādā gadījumā tiek atiestatīts uz 0). Kavēšanās palēnina cilpu līdz milisekundei. Visprasīgākie no mums pamanīs, ka kontroles periods ir aptuveni 20 sekundes. Katra cilpa sākas ar skaitītāja un sliekšņa salīdzinājumu. Ja skaitītājs ir zemāks par slieksni, es izslēdzu releju. Ja tas ir lielāks, es to ieslēdzu. Tāpēc es regulēju jaudu, nosakot slieksni. Sliekšņa aprēķins notiek katru sekundi.

Kas ir PID kontrolieris?

Ja vēlaties kontrolēt procesu, jums ir izmērītā vērtība (analogData), vērtība, kuru vēlaties sasniegt (tempCommand), un veids, kā mainīt šī procesa stāvokli (seuil). Manā gadījumā tas tiek darīts ar slieksni ("seuil" franču valodā, bet daudz vieglāk rakstīt un izrunāt (izrunāt "sey")), kas nosaka, cik ilgi slēdzis būs ieslēgts un izslēgts (darba cikls), tātad enerģijas daudzums ielikt sistēmā.

Visi piekrīt, ka, ja esat tālu no punkta, kuru vēlaties sasniegt, varat veikt lielu korekciju, un, ja esat tuvu, ir nepieciešama neliela korekcija. Tas nozīmē, ka labojums ir kļūdas funkcija (error = analogData-tempComand). Jā, bet cik? Pieņemsim, ka mēs reizinām kļūdu ar koeficientu (P). Šis ir proporcionāls kontrolieris. Mehāniski atspere veic proporcionālu korekciju, jo atsperes spēks ir proporcionāls atsperes saspiešanai.

Jūs droši vien zināt, ka jūsu automašīnas balstiekārtas sastāv no atsperes un amortizatora (amortizatora). Šī amortizatora uzdevums ir izvairīties no tā, ka jūsu automašīna atsitās kā batuts. Tieši to dara atvasinātais termins. Kā amortizators tas rada reakciju, kas ir proporcionāla kļūdas izmaiņām. Ja kļūda ātri mainās, korekcija tiek pazemināta. Tas samazina svārstības un pārsniegumus.

Integratora termins ir šeit, lai izvairītos no pastāvīgas kļūdas (tas integrē kļūdu). Konkrēti, tas ir skaitītājs, kas tiek palielināts vai samazināts, ja kļūda ir pozitīva vai negatīva. Tad korekcija tiek palielināta vai pazemināta saskaņā ar šo skaitītāju. Tam nav mehāniskas līdzvērtības (vai jums ir ideja?). Varbūt ir līdzīgs efekts, kad jūs nogādājat automašīnu servisā un mehāniķis pamana, ka triecieni sistemātiski ir pārāk zemi, un nolemj pievienot vēl kādu priekšslodzi.

Tas viss ir apkopots formulā: korekcija = P*e (t)+I*(de (t)/dt)+D*integrālis (e (t) dt), P, I un D ir trīs parametri, kuriem ir jānoskaņo.

Savā versijā es pievienoju ceturto terminu, kas ir komanda "a priori" (padeve uz priekšu), kas nepieciešama, lai uzturētu noteiktu temperatūru. Es izvēlējos proporcionālu komandu temperatūrai (tas ir labs apkures zudumu tuvinājums. Tā ir taisnība, ja atstājam novārtā radiācijas zudumus (T^4)). Ar šo terminu integrators kļūst gaišāks.

Kā atrast šos parametrus?

Es izmēģināju parasto metodi, kuru varat atrast, atrodot googlē "pid tuning Temperature Controller", taču man bija grūti to pielietot un galu galā izmantoju savu metodi.

Mana metode

Vispirms novietojiet P, I, D līdz nullei un "K" un "tempCommand" mazām vērtībām (piemēram, K = 1 un tempCommand = 100). Ieslēdziet sistēmu un gaidiet, pagaidiet, pagaidiet … līdz temperatūra ir stabilizējusies. Šajā brīdī jūs zināt, ka ar "seuil" 1*100 = 100 temperatūra ir tendence uz X. Tātad jūs zināt, ka ar komandu 100/20000 = 5% jūs varat sasniegt X. Bet mērķis ir sasniegt 100 jo tas ir "tempCommand". Izmantojot proporciju, jūs varat aprēķināt K, lai sasniegtu 100 (tempCommand). Piesardzības nolūkos es izmantoju mazāku vērtību nekā aprēķinātā. Patiešām, ir vieglāk sildīt vairāk nekā atdzist. Tātad beidzot

Kfināls = K*tempCommand*0.9/X

Tagad, palaižot kontrolieri, tam, protams, ir tendence uz vēlamo temperatūru, taču tas ir patiešām lēns process, jo jūs kompensējat tikai apkures zudumus. Ja vēlaties pāriet no vienas temperatūras uz citu, sistēmā jāpievieno siltumenerģijas daudzums. P nosaka, ar kādu ātrumu jūs ievietojat enerģiju sistēmā. Iestatiet P uz nelielu vērtību (piemēram, P = 10). Izmēģiniet (gandrīz) aukstu palaišanu. Ja jums nav liela pārsnieguma, mēģiniet ar dubultā (P = 20), ja tagad jums ir viens mēģināt kaut ko pa vidu. Ja jums ir 5% pārsniegums, tas ir labi.

Tagad palieliniet D, līdz nav pārsniegšanas. (vienmēr izmēģinājumi, es zinu, ka tā nav zinātne) (es paņēmu D = 100)

Pēc tam pievienojiet I = P^2/(4*D) (Tas ir balstīts uz Ziglera-Nikolta metodi, tam vajadzētu garantēt stabilitāti) (man I = 1)

Kāpēc visi šie pārbaudījumi, kāpēc ne zinātne?

Es zinu, es zinu! Ir milzīga teorija, un jūs varat aprēķināt pārsūtīšanas funkciju un Z transformāciju un blablabla. Es gribēju ģenerēt vienotu lēcienu un pēc tam 10 minūtes ierakstīt reakciju un uzrakstīt pārsūtīšanas funkciju, un ko tad? Es nevēlos veidot aritmētiku ar 200 nosacījumiem. Tātad, ja kādam ir ideja, es labprāt uzzinātu, kā to pareizi izdarīt.

Es domāju arī saviem labākajiem draugiem Zīgleru un Nikolu. Viņi man teica, ka jāatrod P, kas rada svārstības, un pēc tam piemēro savu metodi. Es nekad neatradu šīs svārstības. Vienīgais, ko es atradu, bija oooooooovershoot uz debesīm.

Un kā modelēt faktu, ka apkure nav tas pats process kā dzesēšana?

Es turpināšu savu pētījumu, bet tagad iepakosim jūsu kontrolieri, ja esat apmierināts ar iegūto veiktspēju.

7. solis: iesaiņojiet to

Iepakojiet to
Iepakojiet to
Iepakojiet to
Iepakojiet to
Iepakojiet to
Iepakojiet to
Iepakojiet to
Iepakojiet to

Man bija pieeja Maskavas fablabai (fablab77.ru) un to lāzergriešanai, un es esmu pateicīgs. Šī iespēja ļāva man izveidot jauku paketi, ko ar vienu klikšķi ģenerēja spraudnis, kurš izgatavo vēlamo izmēru kastes (h = 69 l = 66 d = 42 mm). Vadības un slēdža augšpusē ir divi caurumi (diametrs = 5 mm) un viens šķēlums sānos programmēšanas tapām. Es nostiprināju transformatoru ar diviem koka gabaliem un PCB ar divām skrūvēm. Es lodēju spaiļu bloku pie vadiem un pie PCB, pievienoju slēdzi starp transformatoru un PCB barošanas ieeju, savienoja vadu ar PBO ar rezistoru (300 omi) virknē. Elektrisko izolāciju izmantoju arī nagu laku. Pēc pēdējā testa es līmēju kastīti. Tieši tā.

Ieteicams: