Tabla de contenido:
- Paso 1: Herramientas y material
- Paso 2: Grabe la PCB
- Paso 3: suelde los componentes
- Paso 4: programe el microcontrolador
- Paso 5: Montaje y calibración
- Paso 6: Ajuste de PID
- Paso 7: Empacalo
Video: Controlador de temperatura PID: 7 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
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
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
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
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
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
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
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:
Controlador de juegos de bricolaje basado en Arduino - Controlador de juegos Arduino PS2 - Jugar a Tekken con el gamepad DIY Arduino: 7 pasos
Controlador de juegos de bricolaje basado en Arduino | Controlador de juegos Arduino PS2 | Jugar a Tekken con DIY Arduino Gamepad: Hola chicos, jugar juegos siempre es divertido, pero jugar con su propio controlador de juego personalizado DIY es más divertido. Así que haremos un controlador de juego usando arduino pro micro en este instructivo
Controlador PID VHDL: 10 pasos
Controlador PID VHDL: Este proyecto fue mi proyecto final para completar mi Licenciatura con Honores del Instituto de Tecnología de Cork. Este Tutorial se divide en dos secciones, la primera cubrirá el cuerpo principal del código PID, que es el propósito principal del proyecto y la segunda
Control de temperatura en casa con PID y Labview: 4 pasos
Control de temperatura en casa con PID y Labview: PID merupakan suatu sistem pengontrolan yang biasa digunakan pada dunia indusri yang telah bukti keandalannya disini kita akan mengimplementasikan kontrolloer PID pada pengatur suhu ruangan menggunakan labview
Tower Copter con controlador PID: 4 pasos
Tower Copter con controlador PID: Hola chicos, mi nombre es wachid kurniawan putra, hoy compartiré mi proyecto de microcontrolador con mi equipo. Juan Andrés (15/386462 / SV / 09848) 2. Wachid Kurniawan Putra (17/416821 / SV / 14559) 3
YABC - Otro controlador Blynk más - Controlador de temperatura y humedad en la nube de IoT, ESP8266: 4 pasos
YABC - Otro controlador Blynk más - Controlador de temperatura y humedad de la nube de IoT, ESP8266: Hola fabricantes, recientemente comencé a cultivar hongos en casa, hongos ostra, pero ya tengo 3x de estos controladores en casa para el control de temperatura del fermentador para mi cerveza casera, esposa también está haciendo esto de Kombucha ahora, y como termostato para calor