Regulador de flujo de gas 5 veces más barato que las soluciones comerciales

imagen

Los controladores de flujo de gas (RRG) están diseñados para mantener un caudal definido por el usuario. Los RWG se utilizan en laboratorios industriales y de investigación para organizar el suministro de gas desde cilindros y carreteras. Los dispositivos de Eltochpribor, MKS, Bronkhorst, etc. están representados en el mercado y su costo es de 1000-2500 USD. El objetivo de este trabajo es crear un regulador de flujo de gas a partir de componentes más accesibles. La idea es organizar un sistema de retroalimentación que incluya una válvula proporcional y un medidor de flujo. A continuación se muestra una breve descripción del hardware y software del sistema, que permite reproducirlo a todos los que utilizan el RRG en sus actividades. Todos los códigos fuente están disponibles en GitHub .

Utilizamos productos SMC, válvulas de la serie PVQ y medidores de flujo de la serie PFM5 sin indicación. Se ensamblaron dos RWG con rangos de flujo ajustables de 0.2-5 L / min (PVQ13 + PFM510) y 1-50 L / min (PVQ31 + PFM550), como se muestra en la figura. El costo de un regulador de flujo puede estimarse desde arriba como 100 USD (válvula PVQ31) + 80 USD (medidor PFM5) + 20 USD (microcontrolador Arduino Nano, fuente de alimentación y componentes de radio) = 200 USD. Todo lo que se describe a continuación se aplica al RWG 1-50 l / min. La creación de un regulador de 0.2-5 l / min, así como cualquier otro regulador de componentes similares, sigue el mismo esquema, pero puede diferir en detalles menores.

Hardware


imagen

El hardware se muestra en la figura y consta de:

  1. Válvula proporcional PVQ31
  2. Medidor de flujo PFM550
  3. Filtrar
  4. Unidad de fuente de alimentación (24V, 1A)
  5. Circuitos de control de corriente
  6. Microcontrolador Arduino Nano y sus esquemas de energía

imagen

El diagrama de conexión eléctrica de los componentes se muestra en la figura. Para alimentar el circuito, se usa una fuente de 24 V, 1 A CC, que es más que suficiente, dado el consumo de la válvula de menos de 200 mA y un medidor de menos de 35 mA. Las válvulas proporcionales de la serie PVQ están controladas por corriente. De acuerdo con la documentación, no se recomienda controlarlos mediante control de voltaje. El control de corriente se puede implementar usando el circuito discutido aquí , aquí y con más detalle aquí . El circuito de control de corriente se resalta en el circuito eléctrico general (Fig. 3) mediante un rectángulo discontinuo. Las válvulas de la serie PVQ están conectadas por dos cables de alimentación: rojo - DC +, negro - DC-.

La intensidad actual se regula utilizando la señal PWM producida por el pin analógico del microcontrolador. Por defecto, los controladores basados ​​en ATmega328 (Arduino UNO / Nano / Pro Mini) generan una señal PWM de 8 bits (0-255) a una frecuencia de 488 o 976 Hz, dependiendo del pin. El bajo ancho de señal PWM reduce la precisión del control de la válvula. La baja frecuencia conduce a su zumbido. Estos valores se pueden aumentar mediante programación a 10 bits (0-1023) y 15,6 kHz, respectivamente. Utilizamos una frecuencia de 7.8 kHz. Aquí y aquí se setup()proporciona una descripción de los comandos que deben insertarse en la función de firmware de Arduino .

Los medidores de flujo de la serie PFM5 tienen 2 cables de señal (negro - salida analógica, blanco - ajuste del tiempo de respuesta (no utilizado)) y dos cables de alimentación (marrón - DC +, azul - DC-). Alimentado por una fuente de CC de 24 V. El medidor de flujo emite una señal analógica en el rango de 1 a 5 V. Un valor de 1 V corresponde a un caudal de gas cero, 5 V, el máximo para este medidor. Según la documentación, la relación entre flujo y voltaje es lineal. Mientras tanto, parece que vale la pena calibrar regularmente el medidor de flujo. La señal analógica del medidor de flujo (cable negro) es recibida por un pin analógico Arduino de 10 bits (0-1023) para su procesamiento y visualización. El cable blanco está diseñado para establecer el tiempo de respuesta, no lo usamos. En este caso, el tiempo de respuesta es de 50 ms.

La placa Arduino debe alimentarse a través de un pin de 5 V, el voltaje de suministro no debe exceder los 5,5 V. Dicha energía puede proporcionarse desde la PSU de la válvula y el medidor de flujo a través del estabilizador L7805, como se muestra en el diagrama (Fig. 3). Lo más probable es que necesite un radiador en el estabilizador. La alimentación del puerto USB de la computadora utilizada durante las pruebas (Fig. 2) no es deseable ya que en este caso el voltaje de referencia es inestable cuando se usa el ADC. Para obtener más información sobre la alimentación de la placa, consulte aquí .

Parte de
software La parte de software consiste en el firmware del microcontrolador Arduino Nano y una interfaz gráfica de usuario que se ejecuta en una PC.

El programa descargado al microcontrolador realiza cíclicamente las siguientes acciones:

  1. ,
  2. ,
  3. , -

El sistema puede funcionar en modo manual y automático. Durante la operación manual, el valor de la apertura deseada de la válvula, expresada por una variable valve(0 <= valve<1023), debe enviarse al puerto serie . El valor de esta variable determina la ocupación de la señal PWM, que se envía a través de la salida analógica del microcontrolador al circuito de control de corriente y al comando de válvula proporcional analogWrite(valvepin, valve). Después de abrir, la válvula permanece en la posición establecida hasta que se recibe un nuevo comando a través del puerto serie.

Para cambiar a operación automática, se debe enviar un número negativo al puerto serie -targetflow. Valor variabletargetflowse encuentra en el rango 0-1023 y determina la velocidad de flujo de gas que debe mantenerse. El caudal de gas real está determinado por las lecturas del medidor de flujo, que se leen desde la entrada analógica del microcontrolador con un comando realflow = analogRead(fmpin)(0 <= realflow<1023). En modo automático, el sistema se esfuerza por mantener la igualdad entre targetflowy realflowcontrolando la válvula proporcional. El valor de apertura de la válvula se calcula utilizando el controlador de diferenciación proporcional integral (PID). Puede leer sobre el controlador PID aquí , aquí y aquí . La biblioteca GyverPID se usa para implementar el controlador .con algunos cambios y adiciones. Como la biblioteca ha sido modificada, use la biblioteca adjunta a este código y no la descargue del enlace de arriba.

Para usar el controlador PID, es necesario seleccionar los coeficientes de los componentes proporcionales Kp, integrales Kiy diferenciales Kd, así como el tiempo de iteración dtpid. El valor de la variable dtpiddebe seleccionarse en función de la inercia del sistema. Cuanto más inerte sea el sistema, más debería ser dtpid. Según las clasificaciones y los resultados de las pruebas para el dispositivo en cuestión, elegimos valores dtpid= 100-330 ms. Los coeficientes Kp, Ki, Kdse seleccionan en un valor fijodtpidy dependen significativamente del sistema. Las recomendaciones sobre la selección de coeficientes se pueden encontrar aquí , aquí y aquí .

Entonces, el algoritmo ejecutado cíclicamente por el microcontrolador es el siguiente:

if(    )
	   inp
	if(inp >= 0 && inp < 1023)
		  
		    inp
	if(inp <= 0 && inp >= -1023)
		  
		     -inp 
if(  &&      dtpid )
	      -
	    
if(     dt )
	   
	   
	   

La interfaz gráfica de usuario está escrita en Python usando el marco gráfico PyQt. El diseño se creó en Qt Designer, después de lo cual el código del archivo .ui se convirtió en un archivo Python. Para obtener una introducción al desarrollo de GUI y el uso de PyQt, consulte aquí y aquí .

La interfaz gráfica interactúa con el firmware Arduino a través del puerto serie utilizando la biblioteca pyserial. El programa Python hace lo siguiente:

  1. , ,
  2. 0-1023, ,
  3. .3
  4. , ( 0-1023)
  5. .5

El código para conectarse al puerto serie se toma prestado de aquí .

El módulo está diseñado para transferir desde unidades de usuario al rango 0-1023 units.py. Este módulo facilita agregar nuevas unidades. El usuario debe indicar el nombre de las unidades y la fórmula de conversión de 0-1023 a las nuevas unidades. El módulo se proporciona con comentarios detallados.

Los datos recibidos del medidor de flujo y emitidos por el firmware del microcontrolador al puerto serie son leídos desde el puerto por el programa Python y, después de que las unidades se han convertido, se muestran en texto y en forma gráfica. Una biblioteca se utiliza para dibujar un gráfico del consumo actual pyqtgraph.

resultados


Para comenzar a trabajar con RRG, debe: flashear el microcontrolador, conectar la alimentación, ejecutar el programa Python, establecer una conexión con el puerto serie. Después de eso, el usuario puede seleccionar el modo de operación (manual o automático) y establecer el valor de apertura de la válvula requerida en el modo de operación manual o el valor de flujo admitido en el modo automático. El caudal de gas actual se muestra en el campo correspondiente y se muestra en el gráfico. El gráfico se actualiza cíclicamente, después de alcanzar el número especificado de puntos, el gráfico se borra y el dibujo comienza nuevamente. El usuario puede seleccionar las unidades utilizadas.

imagen
La figura muestra la apariencia de la interfaz gráfica de usuario y un gráfico del caudal de gas obtenido en el modo automático y muestra la conmutación del RGG entre diferentes valores del caudal soportado. Los resultados se dan en unidades de 0-1023.

Para demostrar las posibilidades de mantener una velocidad de flujo de gas constante, consideramos el caso cuando la velocidad de flujo cuando la válvula proporcional se abre con un valor constante "flota", como se muestra en el lado izquierdo del gráfico (x <950) en la figura a continuación. El resultado del funcionamiento del mantenimiento automático del caudal establecido se puede ver en el lado derecho del gráfico (x> 1000). Las pruebas mostraron que la desviación del caudal establecido en el modo de retención automática no es más del 2%.

imagen

Observaciones


El uso del microcontrolador Arduino Nano es innecesario ya que solo una pequeña parte de sus pines está involucrado. Por otro lado, sería mejor usar microcontroladores con una mayor capacidad de bits de entradas / salidas analógicas para aumentar la precisión de la medición y el ajuste. Al cambiar el tipo de microcontrolador, puede ser necesario implementar su propio controlador PID; esto no debería causar dificultades ya que el algoritmo es simple.

En la etapa de desarrollo, el circuito eléctrico se ensambló en una placa de pruebas (ver Figura 2). Para un uso posterior, es necesario soldar el circuito y colocarlo en la carcasa.

Los autores del artículo no son ingenieros electrónicos ni programadores, por lo tanto, los consejos constructivos para mejorar son bienvenidos.

Materiales adicionales


Los códigos fuente para el firmware Arduino y los programas Python, así como la documentación para los medidores de flujo y las válvulas proporcionales utilizadas, están disponibles en GitHub

Expresiones de gratitud


Agradecemos a nuestros colegas la idea del sistema implementado en este trabajo. AlexGyver y otros usuarios comparten generosamente sus experiencias por la información que utilizamos en nuestro trabajo.

recomendaciones


El uso de un sistema de retroalimentación que consiste en una válvula proporcional, un medidor de flujo y un microcontrolador le permite hacer RRG para mantener un flujo de gas dado. Las pruebas mostraron una desviación del caudal requerido en menos del 2%. El costo del sistema fue inferior a 200 USD. El prototipo ensamblado mostró operabilidad en una amplia gama de condiciones. El uso adicional puede requerir refinamiento, incluido el cableado de los circuitos, la fabricación de la carcasa, etc.

Source: https://habr.com/ru/post/undefined/


All Articles