viernes, 5 de octubre de 2018

¿Y qué hay de los algoritmos de control de temperatura? Artic Fox y los controladores PID

Recientemente he adquirido un mod Wismec RX GEN3 Dual, que como todos los mods del grupo Joyetech desde el RX200 de 2015 tiene un control de temperatura mejorable. Al compararlo con un Evolv o un YiHI queda claro que es un control más brusco y menos refinado que las referencias del mercado antedichas, algo agravado si no usas níquel.

Esto ha motivado que buscara una solución. Normalmente no la encuentras, o depende del fabricante, si provee de firmware nuevo mejorado y el usuario puede instalarlo en el mod, en su casa, pues se ha diseñado para posibilitar esto. Naturalmente, si el fabricante no mejora realmente el control de temperatura, y publica nuevas versiones de firmware para solucionar errores o cambiar detalles estéticos del interfaz de usuario (la pantalla), pues no vas a encontrar una solución. Lamentablemente, éste el es caso que me he encontrado en el Wismec RX GEN3 Dual.

Pero en el caso de este mod hay una alternativa de terceros: el firmware Arctic Fox del grupo NFE. No sólo cambias por completo el deficitario comportamiento de control de temperatura del mod (y no sólo para mi modelo, para decenas más), además añade funcionalidades de personalización y edición del mod cual un Evolv DNA200/250 bajo EScribe, inclusive un monitor en tiempo real del mod para afinarlo tanto como desees.



Sobre el firmware Arctic Fox, hay decenas de tutoriales y vídeos explicativos y por lo tanto no voy a entrar demasiado en su instalación, uso y ajuste, pero sí comentaré los tres detalles por los que me ha convencido hasta el punto de preguntarme porqué Joyetech no es capaz de hacer algo parecido:

  1.  El firmware consigue mejorar el control de temperatura (TC), pasamos de un mod que difícilmente puede usarse en TC a uno que puede usarse. Tal y como se carga el firmware sin más modificaciones aún no llega a la perfección de un DNA250, pero al menos te permite empezar a vapear en TC sin llevarte desagradables sorpresas.
  2. Al igual que la suite EScribe para los Evolv, la suite NFE Tools permite personalizar muchos parámetros, de uso, estéticos, y lo más importante, parámetros cruciales para que funcione el TC bien, como el importantísimo "resistencia del mod". Un mod siempre ofrece cierta resistencia aunque le cortocircuites el atomizador o el conector 510, hay cables, soldaduras y conexiones físicas ente la placa PCB y el 510 donde roscas el atomizador que no tienen resistencia cero, de hecho raro es el mod que baja de 5~10 mΩ (0,005~0,010 Ω) y aunque parezcan resistencias ridículas, tienen influencia en el TC con hilos de bajo coeficiente de variación de resistividad (TCR) como los aceros inoxidables. Una vez puesto el RX GEN3 Dual con 22 mΩ de resistencia del mod, éste no solo empezó a medir las resistencias de todos los atomizadores como mis demás mods con un error de menos de 2 mΩ, sino que empezó a mejorar el TC notoriamente.
  3. El firmware Arctic Fox puede configurarse para que el bucle de control de temperatura y los algoritmos que se usan sean los de Joyetech. O algo parecido, pues leyéndome los foros y documentación se apunta a esto pero no se afirma claramente. Naturalmente esto contradice los resultados observados: si el bucle de control  es igual en el firmware de fábrica y el Arctic Fox, las brusquedades del de fábrica se verían igual. Y no se ven, y no es por el tema de la resistencia del mod. Personalmente creo que el firmware de Arctic Fox implementa algo más que el bucle de fábrica, pero en definitiva esto es irrelevante, pues el firmware posibilita activar un genuino controlador PI por software, y con ello sabes exactamente cómo está configurado el bucle de control: no solo lo sabes, lo puedes modificar.
Así que en éste punto me encontré trasteando, y para mi sorpresa, resultó muy fácil mejorar el TC hasta el punto de hacer pasar el Wismec por mi DNA250, en cuanto a precisión y finura del control de temperaturas.

Si el lector ha llegado hasta aquí intentando hacer lo mismo, y ya tiene algo de idea de qué es este firmware y qué es un controlador PI, pero no quiere complicarse la vida ajustándolo él mismo, podría pasar a utilizar mis resultados. Pero el objetivo de este post es tratar de explicar qué es un controlador PI y cómo se aplica al TC.......más que dar el pescado frito y envuelto. Aún así, lo comentaré ahora, los que quieran saber más (y no tengan miedo a algo de matemáticas) que lean después del vídeo.

Parámetros adecuados del controlador proporcional-integral
Firmware Arctic Fox 

Range=50 % P=2000 e I=300
Y el vídeo:

Bien...pero yo quiero saber cómo son las tripas.....¿qué es el controlador PI ése?

Pues en la Wikipedia lo explican fenomenalmente en todos sus detalles, pero es posible que con ejemplos se entienda mejor. Todo eso de los parámetros proporcional, integral y derivativo (y que el el caso del firmware Artic Fox se reduce a los dos primeros) suena algo místico y bastante matemático. Pero es mucho más simple de ver si consideramos un ejemplo que además es fácilmente transformable en el TC.......

Consideremos el control de velocidad de crucero que muchos vehículos modernos incorporan de serie.  Una palanca, botón o rueda en el volante o el salpicadero permite al conductor seleccionar una velocidad de crucero y activarlo, y a partir de ése momento el vehículo va a dicha velocidad, sin que el conductor pise siquiera el acelerador, ajustándose a las condiciones cambiantes (cuestas, bajadas, viento y maniobras), algunos incluso añaden control de la distancia con el vehículo precedente, y en todos los casos se desactiva por seguridad si se toca un pedal o el cambio.

El control funciona comparando constantemente  la velocidad real del vehículo V y la que se le ha fijado de consigna, Vc, y el resultado lo almacena como una función del tiempo:

E(t) = V(t) - Vc

Y sobre dicha función se aplican las matemáticas detalladas en la página de la Wikipedia. Ya es cuestión del afinar por el fabricante, según sean las inercias del vehículo, la potencia y par motor, y el grado de precisión y finura que se desean, las constantes de th, Kp, Ki y Kd de la fórmula matemática del bucle de control:

donde A(t) es el valor a añadir a la posición del acelerador electrónico del vehículo, th el tiempo anterior al del momento desde el que se integra, y las K las constantes del controlador (proporcional, integral y derivativa).

Así, la posición del acelerador  (y con ella, la potencia pedida al motor) aumenta o disminuye en función del error de la velocidad visto (proporcional), la suma ponderada en el tiempo de los errores de velocidad desde un momento anterior (pues eso es una integral en tiempo y por eso se llama factor integral), lo que permite corregir desviaciones por una fuerza constante (pendientes, el viento), y por último la velocidad con la que cambia el error (pues eso es una derivada), para agilizar la corrección ante desviaciones súbitas.

Todo lo anterior tiene traslado inmediato al TC, si redefinimos todo en base a las temperaturas (en realidad la resistencia en vivo, pero para no liar, nos quedamos con la temperatura). Ahora, el error es:
E(t) = T(t) - Tc

y la expresión del bucle de control PID, o algoritmo de control:

 donde P ahora es la potencia a aplicar por el chip del mod, ΔP la variación de la misma, y el resto es lo mismo de antes. De nuevo, hay que definir bien las constantes y el tiempo de integración para que el control de temperatura sea efectivo. En el caso del firmware Arctic Fox con el controlador PI activado, no hay término derivativo:

 y los valores de las constantes P e I no son otros que los Kp y Ki de la expresión anterior. Del tema del "range" que allí figura hablaremos luego......

 Unos ejemplos con curvas, por favor.....

 Para entenderlo aún mejor, nada como poner unas curvas....

El comportamiento típico de la curva de control de temperatura es algo así (tomado de un caso real monitorizado por EScribe en un DNA250):

La curva de temperatura es la roja, mientras que la verde es la de potencia (la negra son las baterías en serie, pero esa no tiene relevancia para todo este embrollo), y es el resultado del control del chip del DNA250, que controla la potencia aplicada. Esta potencia inicialmente son 100 W (precalentamiento durante un segundo) y luego 75W, para finalmente bajar para prevenir superar la temperatura de consigna de 235 ºC. Si el chip estuviera en modo VW a potencia fija de 100 W, es fácil ver que las temperaturas a igualdad de calada se habrían disparado, probablemente algo así:

La nueva curva fucsia carece de control, y aunque la he dibujado yo directamente sobre el gráfico anterior, no es difícil imaginarse que sería algo así. Se superaría la temperatura de consigna, pero conforme aumentara la misma la pérdida de calor (proporcional primero a la diferencia de temperaturas entre resistencia y aire aspirado y al caudal del mismo) aumentaría y la curva de temperatura se "aplanaría" a un valor muy superior al consignado y obtendríamos el temido "churrascazo", o dry-hit.

Bien, si entra en escena el controlador PI, éste cambiará la potencia, del valor fijo de 100 W a uno nuevo modificado según:

La variación de la potencia será proporcional al la diferencia entre temperatura observada y consigna, pero también al área de dichas diferencias en un cierto tiempo (la integral de una función da el área de la misma entre ella y el eje X).
El controlador hace una estimación o aproximación numérica al área y a la diferencia y lo calcula todo al vuelo, pero puede probarse a "controlar" curvas matemáticas perfectas para entender el funcionamiento del controlador, ahora en teoría. Para no desviarnos mucho del comportamiento visto, vamos a utilizar una función sencilla "parecida" en su gráfico a la función E(t) para el caso real y supuesto anteriormente:



Este gráfico de la función y=5-1/x (o T(t) = 5-1/t) presenta similitudes con lo que dibujé en fucsia como curva de temperatura sin control. Presenta una asíntota al eje y=5, que sería el equivalente a la temperatura máxima que se conseguiría con una potencia dada y manteniendo la calada con un caudal de aspiración constante, con un aspirador, por ejemplo (a los humanos eso de "calada constante" nos cuesta algo más......XDDDD). Si en vez de dibujar la gráfica Y=5-1/x dibujo T(t) = 250-50/T entonces seguro hay un parecido razonable:

En éste caso la asíntota estaría en 250 ºC. Veamos cómo se modificaría esta curva si calculo una corrección proporcional y otra integral para conseguir que se aplane en 235 ºC. Voy a suponer que se pierden 50 ºC por segundo si no se aplica potencia, y se ganan 2,5 ºC por vatio y segundo con la potencia, en vez de usar la función de antes. El resultado sería algo así:


La potencia resultante aplicada ahora varía de 100 W en cuanto hay valor del término integral, calculado sobre los cinco puntos anteriores (1 segundo de base). Además, cada nueva temperatura es la anterior subida en la mitad de la potencia anterior aplicada (2,5 ºC/W/s) ya que el tiempo se incrementa de 0,2 en 0,2 s) y bajada 10 ºC (50 ºC/s), y las potencias se calculan a partir de la anterior corregido con el término proporcional e integral, ambos con coeficiente 1. Como puede verse, la temperatura resultante tiene a estabilizarse cerca del valor deseado, y podría jugarse con los coeficientes para mejorar dicha estabilización, lo que en definitiva puede hacerse con el firmware de Arctic Fox, estudiando la salida monitorizada de temperaturas, y por supuesto, la sensación de calada.

Para curiosos, dejo aquí la hoja de cálculo utilizada. Por si quieren jugar con los coeficientes. P. ej., si pongo Kp=3 y Ki=0,5:


Pero cuidado con los mismos, no por mucho más grandes la cosa mejora:


Evidentemente, el mod tiene sus limitaciones físicas: no puede dar 750 W durante 0,25 segundos....no todavía, claro (!) ..... y con tales coeficientes el bucle de control se desestabiliza a algo inútil.

Volviendo a los coeficientes en el firmware de Artic Fox, yo ahora mismo tengo P=2000 e I=300: ¡no se alarmen!, no sabemos en qué unidades los miden. ¿Son mW/ºF? ¿Son? No se sabe, o no he sabido encontrarlo. Menos mal que el firmware ya llevaba P=1850 e I=300 y que así no iba fatal....... como base para retoque no está mal.

Y ahora sí, hablemos del parámetro "Range". Se supone que es el porcentaje de la consigna a partir del cual el controlador PI entra en escena. Si fijáis 200 ºC de consigna y Range=50%, hasta 100 ºC no se activará. Esto es para respetar los precalentamientos y que éstos no interfieran con el proceso de cálculo. Si se fija Range=100%, el controlador no se activará hasta que se alcance la consigna, entrando probablemente algo tarde e inestabilizando la corrección, pero si se pone 0%, entra desde el principio e interfiere con el precalentamiento, posiblemente anulándolo.

Esto no es bueno, ya que el comportamiento esperado es que precaliente cuando el atomizador está tibio o frío, y no si está caliente. Poniendo 50 % de Range, que es lo que yo uso, o un valor similar, forzaréis a que el controlador no actúe con el atomizador frío o tibio, con lo que la calefacción estará comandada por el precalentamiento, y sí cuando las temperaturas se acerquen a la consigna, y con tiempo suficiente para corregir, ya que se activo a mitad de la temperatura de consigna.

Los que hayan llegado hasta aquí, ya saben....¡a jugar con el firmware a ver qué se le saca en claro!.....XDDDDDD