Regulador de fluxo de gás 5 vezes mais barato que soluções comerciais

imagem

Os controladores de fluxo de gás (RRG) são projetados para manter uma taxa de fluxo definida pelo usuário. Os RWGs são usados ​​em laboratórios da indústria e de pesquisa para organizar o fornecimento de gás de cilindros e rodovias. Os aparelhos Eltochpribor, MKS, Bronkhorst, etc. estão representados no mercado e o custo desses aparelhos é de 1000 a 2500 USD. O objetivo deste trabalho é criar um regulador de fluxo de gás a partir de componentes mais acessíveis. A idéia é organizar um sistema de feedback que inclua uma válvula proporcional e um medidor de vazão. Abaixo está uma breve descrição do hardware e software do sistema, que permite reproduzi-lo para todos que usam o RRG em suas atividades. Todos os códigos-fonte estão disponíveis no GitHub .

Utilizamos produtos SMC, válvulas da série PVQ e medidores de vazão da série PFM5 sem indicação. Dois RWGs foram montados com faixas de fluxo ajustáveis ​​de 0,2-5 L / min (PVQ13 + PFM510) e 1-50 L / min (PVQ31 + PFM550), mostradas na figura. O custo de um regulador de fluxo pode ser estimado acima de 100 USD (válvula PVQ31) + 80 USD (medidor PFM5) + 20 USD (microcontrolador Arduino Nano, fonte de alimentação e componentes de rádio) = 200 USD. Tudo descrito abaixo se aplica ao RWG 1-50 l / min. A criação de um regulador de 0,2 a 5 l / min, bem como de outros reguladores de componentes similares, segue o mesmo esquema, mas pode diferir em pequenos detalhes.

Hardware


imagem

O hardware é mostrado na figura e consiste em:

  1. Válvula Proporcional PVQ31
  2. Medidor de vazão PFM550
  3. Filtro
  4. Fonte de alimentação (24V, 1A)
  5. Circuitos de controle de corrente
  6. Microcontrolador Arduino Nano e seus esquemas de energia

imagem

O diagrama de conexão elétrica dos componentes é mostrado na figura. Para alimentar o circuito, é usada uma fonte CC de 24 V, 1 A, o que é mais do que suficiente, dado o consumo da válvula inferior a 200 mA e um medidor inferior a 35 mA. As válvulas proporcionais da série PVQ são controladas por corrente. De acordo com a documentação, não é recomendável controlá-los por controle de tensão. O controle de corrente pode ser implementado usando o circuito discutido aqui , aqui e com mais detalhes aqui . O circuito de controle de corrente é destacado no circuito elétrico geral (Fig. 3) por um retângulo tracejado. As válvulas da série PVQ são conectadas por dois fios de energia: vermelho - DC +, preto - DC-.

A força da corrente é regulada usando o sinal PWM produzido pelo pino analógico do microcontrolador. Por padrão, os controladores baseados em ATmega328 (Arduino UNO / Nano / Pro Mini) geram um sinal PWM de 8 bits (0-255) a uma frequência de 488 ou 976 Hz, dependendo do pino. A baixa largura do sinal PWM reduz a precisão do controle da válvula. Baixa frequência leva ao seu burburinho. Esses valores podem ser aumentados programaticamente para 10 bits (0-1023) e 15,6 kHz, respectivamente. Usamos uma frequência de 7,8 kHz. Uma descrição dos comandos que precisam ser inseridos na função de setup()firmware do Arduino é fornecida aqui e aqui .

Os medidores de vazão da série PFM5 possuem 2 fios de sinal (saída analógica preta, ajuste de tempo de resposta branco (não usado)) e dois fios de alimentação (marrom - DC +, azul - DC-). Alimentado por uma fonte de 24 V. O medidor de vazão fornece um sinal analógico na faixa de 1-5 V. Um valor de 1 V corresponde ao fluxo de gás zero, 5 V - o máximo para esse medidor. De acordo com a documentação, a relação entre fluxo e tensão é linear. Enquanto isso, parece útil calibrar regularmente o medidor de vazão. O sinal analógico do medidor de fluxo (fio preto) é recebido por um pino analógico Arduino de 10 bits (0-1023) para processamento e exibição. O fio branco é projetado para definir o tempo de resposta, não o usamos. Nesse caso, o tempo de resposta é de 50 ms.

A placa do Arduino deve ser alimentada por um pino de 5V, a tensão de alimentação não deve exceder 5,5 V. Essa energia pode ser fornecida a partir da PSU da válvula e do medidor de vazão através do estabilizador L7805, conforme mostrado no diagrama (Fig. 3). Provavelmente você precisará de um radiador no estabilizador. A energia da porta USB do computador usado durante o teste (Fig. 2) não é desejável, pois nesse caso a tensão de referência é instável ao usar o ADC. Para mais informações sobre a potência da placa, consulte aqui .

Parte do
software A parte do software consiste no firmware do microcontrolador Arduino Nano e em uma interface gráfica do usuário que roda em um PC.

O programa baixado para o microcontrolador executa ciclicamente as seguintes ações:

  1. ,
  2. ,
  3. , -

O sistema pode operar no modo manual e automático. Durante a operação manual, o valor da abertura da válvula desejada, expressa por uma variável valve(0 <= valve<1023), deve ser enviada para a porta serial . O valor dessa variável determina a ocupação do sinal PWM, que é enviado pela saída analógica do microcontrolador para o circuito de controle de corrente e o comando proporcional da válvula analogWrite(valvepin, valve). Após a abertura, a válvula permanece na posição definida até que um novo comando seja recebido via porta serial.

Para mudar para a operação automática, um número negativo deve ser enviado para a porta serial -targetflow. Valor variáveltargetflowestá na faixa de 0 a 1023 e determina a taxa de fluxo de gás que deve ser mantida. A vazão real do gás é determinada pelas leituras do medidor de vazão, que são lidas na entrada analógica do microcontrolador com um comando realflow = analogRead(fmpin)(0 <= realflow<1023). No modo automático, o sistema se esforça para manter a igualdade entre targetflowe realflowcontrolando a válvula proporcional. O valor da abertura da válvula é calculado usando o controlador de diferenciação integral integral (PID). Você pode ler sobre o controlador PID aqui , aqui e aqui . A biblioteca GyverPID é usada para implementar o controlador .com algumas alterações e adições. Como a biblioteca foi modificada, use a biblioteca anexada a esse código e não faça o download no link acima.

Para usar o controlador PID, é necessário selecionar os coeficientes dos componentes proporcional Kp, integral Kie diferencial Kd, bem como o tempo de iteração dtpid. O valor da variável dtpiddeve ser selecionado dependendo da inércia do sistema. Quanto mais inerte o sistema, mais ele deve ser dtpid. Com base nas classificações e nos resultados do teste para o dispositivo em questão, escolhemos valores dtpid= 100-330 ms. Os coeficientes Kp, Ki, Kdseleccionam-se um valor fixodtpide dependem significativamente do sistema. Recomendações sobre a seleção de coeficientes podem ser encontradas aqui , aqui e aqui .

Portanto, o algoritmo executado ciclicamente pelo microcontrolador é o seguinte:

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

A interface gráfica do usuário é escrita em Python usando a estrutura gráfica do PyQt. O design foi criado no programa Qt Designer, após o qual o código do arquivo .ui foi convertido em um arquivo Python. Para uma introdução ao desenvolvimento da GUI e ao uso do PyQt, veja aqui e aqui .

A interface gráfica interage com o firmware do Arduino através da porta serial usando a biblioteca pyserial. O programa Python faz o seguinte:

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

O código para conectar-se à porta serial é emprestado aqui .

O módulo é destinado à transferência de unidades de usuário para o intervalo de 0 a 1023 units.py. Este módulo facilita a adição de novas unidades. O usuário deve indicar o nome das unidades e a fórmula de conversão de 0 a 1023 para as novas unidades. O módulo é fornecido com comentários detalhados.

Os dados recebidos do medidor de vazão e emitidos pelo firmware do microcontrolador para a porta serial são lidos da porta pelo programa Python e, após a conversão das unidades, são exibidos em texto e forma gráfica. Uma biblioteca é usada para desenhar um gráfico do consumo atual pyqtgraph.

resultados


Para começar a trabalhar com o RRG, você precisa: piscar o microcontrolador, conectar a energia, executar o programa Python, estabelecer uma conexão com a porta serial. Depois disso, o usuário pode selecionar o modo de operação (manual ou automático) e definir o valor de abertura da válvula necessário no modo de operação manual ou o valor do fluxo suportado no modo automático. A vazão atual do gás é exibida no campo correspondente e exibida no gráfico. O gráfico é atualizado ciclicamente, após atingir o número especificado de pontos, o gráfico é limpo e o desenho é iniciado novamente. O usuário pode selecionar as unidades usadas.

imagem
A figura mostra a aparência da interface gráfica do usuário e um gráfico da vazão de gás obtida no modo automático e mostra a alternância do RWG entre diferentes valores da vazão suportada. Os resultados são apresentados em unidades de 0 a 1023.

Para demonstrar as possibilidades de manter uma vazão constante de gás, consideramos o caso em que a vazão quando a válvula proporcional é aberta por um valor constante “flutua”, conforme mostrado no lado esquerdo do gráfico (x <950) na figura abaixo. O resultado da operação da manutenção automática da vazão definida pode ser visto no lado direito do gráfico (x> 1000). Os testes mostraram que o desvio da vazão definida no modo de espera automática não é superior a 2%.

imagem

Observações


O uso do microcontrolador Arduino Nano é desnecessário, pois apenas uma pequena parte de seus pinos está envolvida. Por outro lado, seria melhor usar microcontroladores com uma maior capacidade de bit de entradas / saídas analógicas para aumentar a precisão da medição e ajuste. Ao alterar o tipo de microcontrolador, pode ser necessário implementar seu próprio controlador PID, o que não deve causar dificuldades, pois o algoritmo é simples.

No estágio de desenvolvimento, o circuito elétrico foi montado em uma tábua de pão (veja a Figura 2). Para uso posterior, é necessário soldar o circuito e colocá-lo no alojamento.

Os autores do artigo não são engenheiros eletrônicos nem programadores; portanto, dicas construtivas para melhoria são bem-vindas.

Materiais adicionais


Os códigos-fonte do firmware do Arduino e dos programas Python, bem como a documentação dos medidores de vazão e válvulas proporcionais usadas, estão disponíveis no GitHub

Agradecimentos


Somos gratos aos nossos colegas pela idéia do sistema implementado neste trabalho. AlexGyver e outros usuários compartilham generosamente suas experiências pelas informações que usamos em nosso trabalho.

achados


O uso de um sistema de feedback composto por uma válvula proporcional, um medidor de vazão e um microcontrolador permite que você faça o RRG para manter um determinado fluxo de gás. Os testes mostraram um desvio da vazão necessária em menos de 2%. O custo do sistema foi inferior a 200 USD. O protótipo montado mostrou operabilidade em uma ampla gama de condições. O uso adicional pode exigir refinamento, incluindo a fiação dos circuitos, a fabricação da caixa etc.

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


All Articles