Tabla de contenido:

Controlador de temperatura PID: 7 pasos
Controlador de temperatura PID: 7 pasos

Video: Controlador de temperatura PID: 7 pasos

Video: Controlador de temperatura PID: 7 pasos
Video: Cómo es el control de temperatura ON-OFF & PID en la Instrumentación industrial 2024, Mes de julio
Anonim
Controlador de temperatura PID
Controlador de temperatura PID

Mi amigo está construyendo una extrusora de plástico para reciclar plástico (https://preciousplastic.com). Necesita controlar la temperatura de extrusión. Para ese propósito, está usando una banda calefactora de boquilla. En esta boquilla hay un termopar y una unidad de calentamiento que nos permiten medir la temperatura y finalmente alcanzar la temperatura deseada (hacer un bucle de retroacción).

Cuando escuché que necesitaba varios controladores PID para controlar todas estas bandas calefactoras de boquillas, inmediatamente me dio el deseo de intentar hacer las nuestras.

Paso 1: Herramientas y material

Instrumentos

  • soldador, alambre de soldadura y fundente
  • pinza
  • fresadora (el grabado químico también es posible para la creación de prototipos de PCB) (también puede solicitar el PCB con mi archivo eagle)
  • termómetro (para calibración)
  • arduino (cualquier tipo) o un programador AVR
  • Cable USB FTDI serial TTL-232
  • cortador láser (opcional)
  • multímetro (ohmímetro y voltímetro)

Material

  • Placa de cobre de un solo lado de baquelita (60 * 35 mm mínimo) (arruiné mi sierra comprando la de fibra de vidrio, así que tenga cuidado: baquelita)
  • Microcontrolador Attiny45
  • Regulador de voltaje LM2940IMP-5
  • Amplificador operacional AD8605
  • Transistor NDS356AP
  • un montón de resistencias y condensadores (tengo el libro adafruit SMT 0603)
  • Transformador 230V-9V ac-dc
  • Diodos 1N4004
  • relé de estado sólido
  • esmalte de uñas (opcional)

Paso 2: Grabe la PCB

Grabe el PCB
Grabe el PCB
Grabe el PCB
Grabe el PCB
Grabe el PCB
Grabe el PCB

Usé mi Proxxon MF70 CNC transformado y una broca cónica para fresar la PCB. Creo que cualquier broca final de grabado funcionaría. El archivo Gcode fue generado directamente por eagle y el complemento pcb-gcode. Solo se realizaron tres pasadas para asegurar una buena separación de rutas pero sin pasar horas moliendo todo el cobre. Cuando el PCB salió de la máquina CNC, limpié las rutas con un cortador y las probé con un multímetro.

Parámetros: velocidad de avance 150 mm / min, profundidad 0,2 mm, velocidad de rotación 20.000 t / min

Paso 3: suelde los componentes

Suelde los componentes
Suelde los componentes

Con la pinza y el soldador, coloque los componentes en los lugares correctos y suéldelos usando fundente (ayuda) y comenzando por los componentes más pequeños. Nuevamente, verifique con un multímetro que no tenga ningún cortocircuito o elementos desconectados.

Puede elegir la ganancia del amplificador eligiendo la resistencia que desee (ganancia = (R3 + R4) / R4). Tomé 1M y 2.7k, por lo que en mi caso la ganancia es de aproximadamente 371. No puedo saber el valor exacto porque estoy usando una resistencia de tolerancia del 5%.

Mi termopar es de tipo J. Significa que da 0,05 mV por cada grado. Con la ganancia de 371, obtengo 18,5 mV por grado de la salida del amplificador (0,05 * 371). Quiero medir alrededor de 200 ° C, por lo que la salida del amplificador debe ser de alrededor de 3,7 V (0,0185 * 200). El resultado no debe exceder los 5V porque utilizo el voltaje de referencia de 5V (externo).

La imagen corresponde a la primera versión (que no funciona) que hice, pero el principio es el mismo. En esta primera versión, usé un relé y lo puse justo en el medio del tablero. Tan pronto como cambié con alto voltaje, tuve picos que hicieron que el controlador se reiniciara.

Paso 4: programe el microcontrolador

Programar el microcontrolador
Programar el microcontrolador

Usando un arduino como en este instructivo: https://www.instructables.com/id/How-to-Program-a… puede cargar el código.

Usé una baratija profesional con un cable FTDI-USB para programar el Attiny 45, pero este método es equivalente. Luego conecté el pin PB1 y GDN directamente en el RX y GND del cable FTDI-USB para recibir los datos en serie y poder depurar.

Debe poner todos los parámetros a cero (P = 0, I = 0, D = 0, K = 0) en el boceto de arduino. Se establecerán durante el paso de sintonización.

Si no ve humo o huele a quemado, ¡puede pasar al siguiente paso!

Paso 5: Montaje y calibración

Montaje y calibración
Montaje y calibración
Montaje y calibración
Montaje y calibración

Precaución: ¡Nunca conecte la fuente de alimentación y el 5V del programador al mismo tiempo! De lo contrario, verá el humo que estaba haciendo en el paso anterior. Si no está seguro de poder respetar eso, simplemente puede quitar el pin de 5v del programador. Lo dejé porque era más conveniente para mí programar el controlador sin fuente de alimentación y probar el controlador sin que el calentador se calentara como un loco frente a mi cara.

Ahora puede ramificar el termopar en el amplificador y ver si está midiendo algo (respete la polaridad). Si su sistema de calefacción está a temperatura ambiente, debe medir cero. Calentarlo con la mano ya debería dar lugar a algunos valores pequeños.

¿Cómo leer estos valores? Simplemente conecte los pines PB1 y GDN directamente en el RX y GND del cable FTDI-USB y abra el monitor serial arduino.

Cuando el controlador arranca, envía el valor rojo por el termómetro interno del chip. Así es como compenso la temperatura (sin usar un chip dedicado). Significa que si la temperatura cambia durante la operación, no se tendrá en cuenta. Este valor es muy diferente de un chip a otro, por lo que debe ingresarse manualmente en la definición de REFTEMPERATURE al comienzo del boceto.

Antes de conectar el relé de estado sólido, verifique que la salida de voltaje esté en el rango admitido por su relé (3V a 25V en mi caso, el circuito genera alrededor de 11V). (respeta la polaridad)

Estos valores no son temperaturas en grados o Fahrenheit, sino el resultado de la conversión de analógico a digital, por lo que varían entre 0 y 1024. Yo uso el voltaje de referencia de 5 V, por lo que cuando la salida del amplificador está cerca de 5 V, el resultado de la conversión está cerca de 1024.

Paso 6: Ajuste de PID

Sintonización PID
Sintonización PID

Debo mencionar que no soy un experto en control, por lo que encontré algunos parámetros que funcionan para mí, pero no garantizo que funcione para todos.

En primer lugar, tengo que explicar qué hace el programa. Implementé una especie de software PWM: un contador se incrementa en cada iteración hasta que llega a 20'000 (en cuyo caso se restablece a 0). Un retraso ralentiza el bucle a un milisegundo. Los más exigentes notarán que el período de control es de alrededor de 20 segundos. Cada ciclo comienza con una comparación entre el contador y un umbral. Si el contador es más bajo que el umbral, apago el relé. Si es más grande, lo enciendo. Así que regulo la potencia estableciendo el umbral. El cálculo del umbral ocurre cada segundo.

¿Qué es un controlador PID?

Cuando quieres controlar un proceso, tienes el valor que mides (analogData), el valor que quieres alcanzar (tempCommand) y una forma de modificar el estado de ese proceso (seuil). En mi caso, se hace con el umbral ("seuil" en francés pero mucho más fácil de escribir y pronunciar (pronunciar "sey")) que determina cuánto tiempo estará encendido y apagado el interruptor (ciclo de trabajo), por lo tanto, la cantidad de energía poner en el sistema.

Todos coinciden en que si estás lejos del punto al que quieres llegar, puedes hacer una gran corrección y si estás cerca, se necesita una pequeña corrección. Significa que la corrección es una función del error (error = analogData-tempComand). Si pero cuanto? Digamos que multiplicamos el error por un factor (P). Este es un controlador proporcional. Mecánicamente, un resorte realiza una corrección proporcional porque la fuerza del resorte es proporcional a la compresión del resorte.

Probablemente sepa que las suspensiones de su automóvil consisten en un resorte y un amortiguador (amortiguador). El papel de este amortiguador es evitar que su automóvil rebote como un trampolín. Esto es precisamente lo que hace el término derivado. Como amortiguador, genera una reacción que es proporcional a la variación del error. Si el error cambia rápidamente, la corrección se reduce. Reduce oscilaciones y sobreimpulsos.

El término integrador está aquí para evitar un error permanente (integra el error). Concretamente, es un contador que se incrementa o decrementa si el error es positivo o negativo. Luego, la corrección aumenta o disminuye de acuerdo con este contador. No tiene equivalencia mecánica (¿o tienes una idea?). Tal vez se produzca un efecto similar cuando llevas tu coche al servicio y el mecánico se da cuenta de que los amortiguadores son sistemáticamente demasiado bajos y decide añadir algo más de precarga.

Todo esto se resume en la fórmula: corrección = P * e (t) + I * (de (t) / dt) + D * integral (e (t) dt), siendo P, I y D tres parámetros que tienen para ser afinado.

En mi versión agregué un cuarto término que es el comando "a priori" (feed forward) necesario para mantener una cierta temperatura. Elegí un comando proporcional a la temperatura (es una buena aproximación de las pérdidas de calor. Es cierto si descuidamos las pérdidas por radiación (T ^ 4)). Con este término, el integrador se aligera.

¿Cómo encontrar estos parámetros?

Probé un método convencional que puede encontrar buscando en Google "controlador de temperatura de ajuste de pid", pero me resultó difícil aplicarlo y terminé con mi propio método.

Mi metodo

Primero ponga P, I, D en cero y ponga "K" y "tempCommand" en valores pequeños (por ejemplo, K = 1 y tempCommand = 100). Encienda el sistema y espere, espere, espere… hasta que la temperatura se haya estabilizado. En este punto sabes que con un "seuil" de 1 * 100 = 100, la temperatura tiende a X. Entonces sabes que con un comando de 100/20000 = 5% puedes llegar a X. Pero el objetivo es llegar a 100 porque es "tempCommand". Usando una proporción, puede calcular K para llegar a 100 (tempCommand). Por precaución utilicé un valor menor que el calculado. De hecho, es más fácil calentar que enfriar. Así que finalmente

Kfinal = K * tempCommand * 0.9 / X

Ahora, cuando enciende el controlador, naturalmente debería tender a la temperatura que desea, pero es un proceso muy lento porque solo compensa las pérdidas de calor. Si desea pasar de una temperatura a otra, debe agregar una cantidad de energía térmica en el sistema. P determina a qué velocidad pone la energía en el sistema. Establezca P en un valor pequeño (por ejemplo, P = 10). Prueba un arranque (casi) en frío. Si no tiene un gran rebasamiento, intente con el doble (P = 20) si ahora tiene uno, intente algo intermedio. Si tiene un 5% de sobreimpulso, es bueno.

Ahora aumente D hasta que no se sobrepase. (siempre pruebas, sé que esto no es ciencia) (tomé D = 100)

Luego agregue I = P ^ 2 / (4 * D) (Se basa en el método de Ziegler-Nicholts, debería garantizar la estabilidad) (para mí I = 1)

¿Por qué todos estos ensayos, por qué no la ciencia?

¡Sé que sé! Hay una teoría enorme y puedes calcular la función de transferencia y la transformada Z y blablabla. Quería generar un salto unitario y luego grabar durante 10 minutos la reacción y escribir la función de transferencia y luego ¿qué? No quiero hacer aritmética con 200 términos. Entonces, si alguien tiene una idea, me encantaría aprender a hacerla correctamente.

También pensé en mis mejores amigos Ziegler y Nichols. Me dijeron que buscara una P que genera oscilaciones y luego aplicara su método. Nunca encontré estas oscilaciones. Lo único que encontré fue un oooooooovershoot hacia el cielo.

¿Y cómo modelar el hecho de que calentar no es el mismo proceso que enfriar?

Continuaré mi investigación, pero ahora empaquetemos su controlador si está satisfecho con el rendimiento que obtiene.

Paso 7: Empacalo

Empácalo
Empácalo
Empácalo
Empácalo
Empácalo
Empácalo
Empácalo
Empácalo

Tuve acceso al fablab de Moscú (fablab77.ru) y su cortador láser y estoy agradecido. Esta oportunidad me permitió hacer un lindo paquete generado en un clic por un complemento que hace cajas de las dimensiones deseadas (h = 69 l = 66 d = 42 mm). Hay dos orificios (diam = 5 mm) en la parte superior para el led y el interruptor y una ranura en el lateral para los pines de programación. Aseguré el transformador con dos piezas de madera y el PCB con dos tornillos. Soldé el bloque de terminales a los cables y al PCB, agregué el interruptor entre el transformador y la entrada de alimentación del PCB, conecté el led a PBO con una resistencia (300 Ohms) en serie. También usé esmalte de uñas para aislamiento eléctrico. Después de la última prueba, pegué la caja. Eso es todo.

Recomendado: