Taula de continguts:

Controlador de temperatura PID: 7 passos
Controlador de temperatura PID: 7 passos

Vídeo: Controlador de temperatura PID: 7 passos

Vídeo: Controlador de temperatura PID: 7 passos
Vídeo: Controlador PID. Você sabe o que é e como funciona? Aula 01 - Teoria 2024, De novembre
Anonim
Controlador de temperatura PID
Controlador de temperatura PID

El meu amic està construint una extrusora de plàstic per al reciclatge de plàstic (https://preciousplastic.com). Ha de controlar la temperatura d’extrusió. Amb aquest propòsit, utilitza una banda d'escalfadors de broquets. En aquest broc, hi ha un termopar i una unitat de calefacció que ens permeten mesurar la temperatura i finalment arribar a la temperatura desitjada (fer un bucle de retroacció).

Quan vaig saber que diversos controladors PID necessitaven controlar totes aquestes bandes d'escalfadors de broquets, de seguida em va donar el desig d'intentar fer-ho nostre.

Pas 1: eines i material

Eines

  • soldador, fil de soldadura i flux
  • pinça
  • fresadora (el gravat químic també és possible per al prototipatge de PCB) (també podeu demanar el PCB amb el fitxer del meu àguila)
  • termòmetre (per calibrar)
  • arduino (qualsevol tipus) o un programador AVR
  • Cable USB TTL-232 sèrie FTDI
  • tallador làser (opcional)
  • multímetre (ohmímetre i voltímetre)

Material

  • Placa de coure de bachelita d'una sola cara (mínim 60 * 35 mm) (he malmès la serra comprant la de fibra de vidre, així que aneu amb compte: baquelita)
  • Microcontrolador Attiny45
  • Regulador de tensió LM2940IMP-5
  • Amplificador operatiu AD8605
  • Transistor NDS356AP
  • un munt de resistències i condensadors (tinc el llibre SMT 0603 adafruit)
  • Transformador de CA de 230V-9V
  • 1N4004 díodes
  • relé d'estat sòlid
  • esmalt d'ungles (opcional)

Pas 2: graveu el PCB

Graveu el PCB
Graveu el PCB
Graveu el PCB
Graveu el PCB
Graveu el PCB
Graveu el PCB

Vaig utilitzar el meu transformador CNC Proxxon MF70 i un bit final cònic per fresar el PCB. Crec que qualsevol bit final de gravat funcionaria. El fitxer Gcode va ser generat directament per l'àguila i el connector pcb-gcode. Només es van fer tres passades per garantir una bona separació de la ruta però sense passar hores molent tot el coure. Quan el PCB va sortir de la màquina CNC, vaig netejar les rutes amb un tallador i les vaig provar amb un multímetre.

Paràmetres: velocitat d'alimentació 150 mm / min, profunditat 0,2 mm, velocitat de rotació 20.000 t / min

Pas 3: soldeu els components

Soldeu els components
Soldeu els components

Amb la pinça i el soldador, col·loqueu els components als llocs adequats i soldeu-lo amb flux (ajuda) i començant pels components més petits. Una vegada més, comproveu amb un multímetre que no tingueu cap curtcircuit ni elements no connectats.

Podeu triar el guany de l'amplificador escollint la resistència que vulgueu (guany = (R3 + R4) / R4). Vaig agafar 1 M i 2,7 k, de manera que en el meu cas el guany és igual a aproximadament 371. No puc saber el valor exacte perquè estic fent servir una resistència de tolerància del 5%.

El meu termoparell és de tipus J. Vol dir que dóna 0,05 mV per cada grau. Amb el guany de 371, obtinc 18,5 mV per grau de la sortida de l'amplificador (0,05 * 371). Vull mesurar uns 200 ° C, de manera que la sortida de l'amplificador hauria de ser de 3,7 V (0,0185 * 200). El resultat no ha de superar els 5V perquè faig servir el voltatge de referència de 5V (extern).

La imatge correspon a la primera versió (que no funciona) que vaig fer, però el principi és el mateix. En aquesta primera versió, he utilitzat un relé i el he situat al centre de la placa. Tan bon punt vaig canviar d’alta tensió, vaig tenir pics que van fer reiniciar el controlador.

Pas 4: programa el microcontrolador

Programa el microcontrolador
Programa el microcontrolador

Utilitzant un arduino com en aquest instructables: https://www.instructables.com/id/How-to-Program-a… podeu carregar el codi.

Vaig fer servir un bibelot professional amb un cable FTDI-USB per programar l’Attiny 45, però aquest mètode és equivalent. Llavors vaig connectar el pin PB1 i GDN directament al RX i al GND del cable FTDI-USB per rebre les dades de sèrie i poder depurar-les.

Heu de posar tots els paràmetres a zero (P = 0, I = 0, D = 0, K = 0) a l'esbós d'arduino. Es configuraran durant el pas de sintonització.

Si no veieu fum ni olors cremats, podeu passar al següent pas.

Pas 5: Muntatge i calibració

Muntatge i calibració
Muntatge i calibració
Muntatge i calibració
Muntatge i calibració

Precaució: no connecteu mai la font d'alimentació ni els 5V del programador al mateix temps. En cas contrari, veureu el fum que feia al pas anterior. Si no esteu segur de poder respectar-ho, podeu eliminar el pin de 5 V del programador. Ho vaig deixar perquè era més convenient per a mi programar el controlador sense subministrament elèctric i provar el controlador sense que l’escalfador s’escalfés com un boig davant de la meva cara.

Ara podeu ramificar el termoparell a l'amplificador i veure si mesureu alguna cosa (respecteu la polaritat). Si el vostre sistema de calefacció està a temperatura ambient, hauríeu de mesurar zero. Escalfar-lo amb la mà ja hauria de comportar uns valors petits.

Com llegir aquests valors? Simplement connecteu els pins PB1 i GDN directament al RX i al GND del cable FTDI-USB i obriu el monitor sèrie arduino.

Quan s’inicia el controlador, envia el valor vermell pel termòmetre intern del xip. Així compenso la temperatura (sense fer servir un xip dedicat). Vol dir que si la temperatura canvia durant l'operació, no es tindrà en compte. Aquest valor és molt diferent d’un xip a un altre, de manera que s’ha d’introduir manualment a la definició de REFTEMPERATURA al principi de l’esbós.

Abans de connectar el relé d'estat sòlid, comproveu que la tensió de sortida estigui al rang admès pel relé (3V a 25V en el meu cas, el circuit genera al voltant d'11V). (respecteu la polaritat)

Aquests valors no són temperatures en graus o Fahrenheit, sinó el resultat de la conversió analògica a digital, de manera que varien entre 0 i 1024. Jo faig servir el voltatge de referència de 5V, per tant, quan la sortida de l'amplificador és a prop de 5V, el resultat de la conversió és a prop de 1024.

Pas 6: Sintonització PID

Afinació PID
Afinació PID

He d’esmentar que no sóc expert en control, de manera que he trobat alguns paràmetres que funcionen per a mi, però no garanteixo que funcioni per a tothom.

Primer de tot, he d’explicar què fa el programa. He implementat una mena de programari PWM: s'incrementa un comptador a cada iteració fins que arriba a 20'000 (en aquest cas es restableix a 0). Un retard alenteix el bucle fins a un mil·lisegon. Els més exigents de nosaltres notaran que el període de control ronda els 20 segons. Cada bucle comença amb una comparació entre el comptador i un llindar. Si el comptador és inferior al llindar, desactivo el relé. Si és més gran, l’encenc. Per tant, regula la potència establint el llindar. El càlcul del llindar es produeix cada segon.

Què és un controlador PID?

Quan voleu controlar un procés, teniu el valor que mesureu (analogData), el valor que voleu assolir (tempCommand) i una manera de modificar l'estat d'aquest procés (seuil). En el meu cas, es fa amb el llindar ("seuil" en francès, però molt més fàcil d'escriure i pronunciar (pronunciar "sey")) que determina quant de temps estarà encès i apagat l'interruptor (el cicle de treball) i, per tant, la quantitat d'energia posar al sistema.

Tothom està d’acord que si esteu lluny del punt que voleu arribar, podeu fer una gran correcció i, si esteu a prop, cal una petita correcció. Vol dir que la correcció és una funció de l’error (error = analogData-tempComand). Sí, però quant? Diguem que multiplicem l’error per un factor (P). Es tracta d’un controlador proporcional. Mecànicament un ressort fa una correcció proporcional perquè la força del ressort és proporcional a la compressió del ressort.

Probablement sabreu que les suspensions del vostre cotxe consisteixen en un moll i un amortidor (amortidor). El paper d’aquest amortidor és evitar que el cotxe reboti com un llit elàstic. Això és precisament el que fa el terme derivat. Com a amortidor, genera una reacció que és proporcional a la variació d'error. Si l'error canvia ràpidament, es redueix la correcció. Redueix les oscil·lacions i els desbordaments.

El terme integrador és aquí per evitar errors permanents (integra l'error). Concretament, és un comptador que s’incrementa o disminueix si l’error és positiu o negatiu. Després, la correcció augmenta o es redueix segons aquest comptador. No té cap equivalència mecànica (o teniu una idea?). Potser hi ha un efecte similar quan porteu el cotxe al servei i el mecànic notarà que els xocs són sistemàticament massa baixos i decidiu afegir-ne una altra de precàrrega.

Tot això es resumeix en la fórmula: correcció = P * e (t) + I * (de (t) / dt) + D * integral (e (t) dt), P, I i D són tres paràmetres que tenen per estar afinat.

A la meva versió vaig afegir un quart terme que és l'ordre "a priori" (feed forward) necessari per mantenir una temperatura determinada. Vaig triar una ordre proporcional a la temperatura (és una bona aproximació de les pèrdues de calefacció. És cert si descuidem les pèrdues de radiació (T ^ 4)). Amb aquest terme, l’integrador s’alleugera.

Com es poden trobar aquests paràmetres?

Vaig provar un mètode convencional que es pot trobar buscant en Google "controlador de temperatura de sintonització de pid", però em va costar d'aplicar i vaig acabar amb el meu propi mètode.

El meu mètode

Primer posa P, I, D a zero i posa "K" i "tempCommand" a valors petits (per exemple, K = 1 i tempCommand = 100). Engegueu el sistema i espereu, espereu, espereu … fins que la temperatura s'hagi estabilitzat. En aquest punt ja sabeu que amb un "seuil" d'1 * 100 = 100, la temperatura tendeix a X. Així que ja sabeu que amb una ordre de 100/20000 = 5% podeu arribar a X. Però l'objectiu és arribar a 100 perquè és "tempCommand". Mitjançant una proporció podeu calcular K per arribar a 100 (tempCommand). Per precaució he utilitzat un valor menor que el calculat. De fet, és més fàcil escalfar més que refredar-se. Així que finalment

Kfinal = K * tempCommand * 0,9 / X

Ara, quan engegueu el controlador, tendeix naturalment a la temperatura que desitgeu, però és un procés molt lent perquè només compenseu les pèrdues de calefacció. Si voleu passar d'una temperatura a una altra, cal afegir una quantitat d'energia tèrmica al sistema. P determina a quina velocitat introduïu l'energia al sistema. Estableix P a un valor petit (per exemple, P = 10). Proveu un inici (gairebé) fred. Si no teniu un gran desbordament, proveu-ho amb el doble (P = 20) si ara en teniu un de provat. Si teniu un 5% de superació, és bo.

Ara augmenteu D fins que no tingueu cap superació. (sempre proves, sé que això no és ciència) (vaig agafar D = 100)

A continuació, afegiu I = P ^ 2 / (4 * D) (es basa en el mètode Ziegler-Nicholts, hauria de garantir l'estabilitat) (per a mi I = 1)

Per què totes aquestes proves, per què no la ciència?

Ho sé, ho sé! Hi ha una teoria enorme i podeu calcular la funció de transferència i la transformada Z i el blablabla. Volia generar un salt unitari i després enregistrar durant 10 minuts la reacció i escriure la funció de transferència i després què? No vull fer aritmètica amb 200 termes. Per tant, si algú té una idea, estaria encantat d’aprendre a fer-ho correctament.

També vaig pensar en els meus millors amics Ziegler i Nichols. Em van dir que cercés una P que generés oscil·lacions i que després apliqués el seu mètode. Mai no vaig trobar aquestes oscil·lacions. L'única cosa que vaig trobar va ser una ooooooooverhoot al cel.

I com es pot modelar el fet que la calefacció no sigui el mateix procés que la refrigeració?

Continuaré la meva recerca, però ara empaquetem el vostre controlador si esteu satisfet del rendiment que obteniu.

Pas 7: Empaqueu-lo

Empaqueu-lo
Empaqueu-lo
Empaqueu-lo
Empaqueu-lo
Empaqueu-lo
Empaqueu-lo
Empaqueu-lo
Empaqueu-lo

Vaig tenir accés al fablab de Moscou (fablab77.ru) i al seu tallador làser i estic agraït. Aquesta oportunitat em va permetre fer un bon paquet generat amb un clic per un connector que fabrica caixes de les dimensions desitjades (h = 69 l = 66 d = 42 mm). Hi ha dos forats (diam = 5 mm) a la part superior per al led i l'interruptor i una escletxa al lateral per als pins de programació. Vaig assegurar el transformador amb dues peces de fusta i el PCB amb dos cargols. Vaig soldar el bloc de borns als cables i al PCB, vaig afegir el commutador entre el transformador i l’entrada d’alimentació del PCB, vaig connectar el led al PBO amb una resistència (300 Ohms) en sèrie. També he utilitzat esmalt d’ungles per a l’aïllament elèctric. Després de la darrera prova, vaig enganxar la caixa. Això és.

Recomanat: