Régulateur de débit de gaz 5 fois moins cher que les solutions commerciales

image

Les contrôleurs de débit de gaz (RRG) sont conçus pour maintenir un débit défini par l'utilisateur. Les GTR sont utilisés dans l'industrie et les laboratoires de recherche pour organiser l'approvisionnement en gaz des bouteilles et des autoroutes. Les appareils d'Eltochpribor, MKS, Bronkhorst, etc. sont représentés sur le marché. Le coût de ces appareils est de 1000 à 2500 USD. L'objectif de ce travail est de créer un régulateur de débit de gaz à partir de composants plus accessibles. L'idée est d'organiser un système de rétroaction qui comprend une valve proportionnelle et un débitmètre. Vous trouverez ci-dessous une brève description du matériel et des logiciels du système, ce qui permet de le reproduire à tous ceux qui utilisent le RRG dans leurs activités. Tous les codes source sont disponibles sur GitHub .

Nous avons utilisé des produits SMC, des vannes de la série PVQ et des débitmètres de la série PFM5 sans indication. Deux RWG ont été assemblés avec des plages de débit réglables de 0,2 à 5 L / min (PVQ13 + PFM510) et de 1 à 50 L / min (PVQ31 + PFM550), comme indiqué sur la figure. Le coût d'un régulateur de débit peut être estimé ci-dessus à 100 USD (vanne PVQ31) + 80 USD (compteur PFM5) + 20 USD (microcontrôleur Arduino Nano, alimentation et composants radio) = 200 USD. Tout ce qui est décrit ci-dessous s'applique au RWG 1-50 l / min. La création d'un régulateur de 0,2 à 5 l / min, ainsi que de tout autre régulateur à partir de composants similaires, suit le même schéma, mais peut différer dans des détails mineurs.

Matériel


image

Le matériel est illustré dans la figure et se compose de:

  1. Vanne proportionnelle PVQ31
  2. Débitmètre PFM550
  3. Filtre
  4. Bloc d'alimentation (24V, 1A)
  5. Circuits de commande de courant
  6. Microcontrôleur Arduino Nano et ses schémas d'alimentation

image

Le schéma de connexion électrique des composants est illustré sur la figure. Pour alimenter le circuit, une source 24 V, 1 A DC est utilisée, ce qui est plus que suffisant, compte tenu de la consommation de la vanne inférieure à 200 mA et d'un compteur inférieur à 35 mA. Les vannes proportionnelles de la série PVQ sont contrôlées en courant. Conformément à la documentation, il n'est pas recommandé de les contrôler par contrôle de tension. Le contrôle du courant peut être mis en œuvre en utilisant le circuit discuté ici , ici et plus en détail ici . Le circuit de commande de courant est mis en évidence sur le circuit électrique général (Fig. 3) par un rectangle en pointillés. Les vannes de la série PVQ sont connectées par deux fils d'alimentation: rouge - DC +, noir - DC-.

L'intensité du courant est régulée à l'aide du signal PWM produit par la broche analogique du microcontrôleur. Par défaut, les contrôleurs basés sur ATmega328 (Arduino UNO / Nano / Pro Mini) génèrent un signal PWM 8 bits (valeur 0-255) à une fréquence de 488 ou 976 Hz, selon la broche. Une faible largeur de signal PWM réduit la précision du contrôle de la vanne. Une basse fréquence entraîne son buzz. Ces valeurs peuvent être augmentées par programme à 10 bits (0-1023) et 15,6 kHz, respectivement. Nous avons utilisé une fréquence de 7,8 kHz. Une description des commandes qui doivent être insérées dans la fonction du setup()firmware Arduino est donnée ici et ici .

Les débitmètres de la série PFM5 ont 2 fils de signal (noir - sortie analogique, blanc - réglage du temps de réponse (non utilisé)) et deux fils d'alimentation (marron - DC +, bleu - DC-). Alimenté par une source de 24 V. DC Le débitmètre fournit un signal analogique dans la plage de 1 à 5 V. Une valeur de 1 V correspond à un débit de gaz nul, 5 V - le maximum pour ce compteur. Selon la documentation, la relation entre le débit et la tension est linéaire. En attendant, il semble utile d'étalonner régulièrement le débitmètre. Le signal analogique du débitmètre (fil noir) est reçu par une broche analogique Arduino 10 bits (0-1023) pour le traitement et l'affichage. Le fil blanc est conçu pour régler le temps de réponse, nous ne l'utilisons pas. Dans ce cas, le temps de réponse est de 50 ms.

La carte Arduino doit être alimentée via une broche 5 V, la tension d'alimentation ne doit pas dépasser 5,5 V. Une telle alimentation peut être fournie par le bloc d'alimentation de la valve et le débitmètre via le stabilisateur L7805, comme indiqué sur le schéma (Fig.3). Vous aurez probablement besoin d'un radiateur sur le stabilisateur. L'alimentation du port USB de l'ordinateur utilisé pendant le test (Fig.2) n'est pas souhaitable car dans ce cas, la tension de référence est instable lors de l'utilisation de l'ADC. Pour plus d'informations sur l'alimentation de la carte, voir ici .

Partie
logicielle La partie logicielle comprend le micrologiciel du microcontrôleur Arduino Nano et une interface utilisateur graphique qui s'exécute sur un PC.

Le programme téléchargé sur le microcontrôleur effectue cycliquement les actions suivantes:

  1. ,
  2. ,
  3. , -

Le système peut fonctionner en mode manuel et automatique. Pendant le fonctionnement manuel, la valeur de l'ouverture de vanne souhaitée, exprimée par une variable valve(0 <= valve<1023), doit être envoyée au port série . La valeur de cette variable détermine l'occupation du signal PWM, qui est envoyé via la sortie analogique du microcontrôleur au circuit de commande de courant et à la commande de vanne proportionnelle analogWrite(valvepin, valve). Après ouverture, la vanne reste dans la position définie jusqu'à ce qu'une nouvelle commande soit reçue via le port série.

Pour passer en fonctionnement automatique, un nombre négatif doit être envoyé au port série -targetflow. Valeur variabletargetflowse situe dans la plage 0-1023 et détermine le débit de gaz qui doit être maintenu. Le débit de gaz réel est déterminé par les lectures du débitmètre, qui sont lues à partir de l'entrée analogique du microcontrôleur avec une commande realflow = analogRead(fmpin)(0 <= realflow<1023). En mode automatique, le système s'efforce de maintenir l'égalité entre targetflowet en realflowcontrôlant la vanne proportionnelle. La valeur d'ouverture de la vanne est calculée à l'aide du régulateur de différenciation proportionnelle intégrale (PID). Vous pouvez lire sur le contrôleur PID ici , ici et ici . La bibliothèque GyverPID est utilisée pour implémenter le contrôleur .avec quelques modifications et ajouts. La bibliothèque ayant été modifiée, utilisez la bibliothèque jointe à ce code et non téléchargée à partir du lien ci-dessus.

Pour utiliser le contrôleur PID, il est nécessaire de sélectionner les coefficients des composants proportionnels Kp, intégraux Kiet différentiels Kd, ainsi que le temps d'itération dtpid. La valeur de la variable dtpiddoit être sélectionnée en fonction de l'inertie du système. Plus le système est inerte, plus il devrait l'être dtpid. Sur la base des évaluations et des résultats des tests pour l'appareil en question, nous avons choisi des valeurs dtpid= 100-330 ms. Les coefficients Kp, Ki, Kdsont choisis à une valeur fixedtpidet dépendent considérablement du système. Des recommandations sur la sélection des coefficients peuvent être trouvées ici , ici et ici .

Ainsi, l'algorithme exécuté cycliquement par le microcontrôleur est le suivant:

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

L'interface utilisateur graphique est écrite en Python en utilisant le cadre graphique PyQt. La conception a été créée dans le programme Qt Designer, après quoi le code du fichier .ui a été converti en un fichier Python. Pour une introduction au développement de GUI et à l'utilisation de PyQt, voir ici et ici .

L'interface graphique interagit avec le firmware Arduino via le port série en utilisant la bibliothèque pyserial. Le programme Python fait ce qui suit:

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

Le code de connexion au port série est emprunté ici .

Le module est destiné au transfert des unités utilisateur vers la plage 0-1023 units.py. Ce module facilite l'ajout de nouvelles unités. L'utilisateur doit indiquer le nom des unités et la formule de conversion de 0-1023 aux nouvelles unités. Le module est fourni avec des commentaires détaillés.

Les données reçues du débitmètre et transmises par le micrologiciel du microcontrôleur au port série sont lues à partir du port par le programme Python et, après la conversion des unités, sont affichées sous forme textuelle et graphique. Une bibliothèque est utilisée pour dessiner un graphique de la consommation actuelle pyqtgraph.

résultats


Pour commencer à travailler avec RRG, vous devez: flasher le microcontrôleur, connecter l'alimentation, exécuter le programme Python, établir une connexion au port série. Après cela, l'utilisateur peut sélectionner le mode de fonctionnement (manuel ou automatique) et définir la valeur d'ouverture de vanne requise en mode de fonctionnement manuel ou la valeur de débit prise en charge en mode automatique. Le débit de gaz actuel est affiché dans le champ correspondant et affiché sur le graphique. Le graphique est mis à jour cycliquement, après avoir atteint le nombre de points spécifié, le graphique est effacé et le dessin recommence. L'utilisateur peut sélectionner les unités utilisées.

image
La figure montre l'apparence de l'interface utilisateur graphique et un graphique du débit de gaz obtenu en mode automatique et montrant la commutation du RGG entre différentes valeurs du débit pris en charge. Les résultats sont donnés en unités de 0-1023.

Pour démontrer les possibilités de maintenir un débit de gaz constant, nous avons considéré le cas où le débit lorsque la vanne proportionnelle est ouverte par une valeur constante «flotte», comme indiqué sur le côté gauche du graphique (x <950) dans la figure ci-dessous. Le résultat du fonctionnement de la maintenance automatique du débit réglé est visible à droite du graphique (x> 1000). Les tests ont montré que l'écart par rapport au débit réglé en mode de maintien automatique ne dépasse pas 2%.

image

Remarques


L'utilisation du microcontrôleur Arduino Nano n'est pas nécessaire car seule une petite partie de ses broches est impliquée. D'un autre côté, il serait préférable d'utiliser des microcontrôleurs avec une plus grande capacité en bits d'entrées / sorties analogiques pour augmenter la précision de la mesure et du réglage. Lors du changement de type de microcontrôleur, il peut être nécessaire d'implémenter votre propre contrôleur PID; cela ne devrait pas poser de problème car l'algorithme est simple.

Au stade du développement, le circuit électrique a été assemblé sur une planche à pain (voir figure 2). Pour une utilisation ultérieure, il est nécessaire de souder le circuit et de le placer dans le boîtier.

Les auteurs de l'article ne sont ni des ingénieurs en électronique ni des programmeurs, par conséquent, des conseils constructifs d'amélioration sont les bienvenus.

Matériaux additionnels


Les codes source du firmware Arduino et des programmes Python, ainsi que la documentation des débitmètres et des vannes proportionnelles utilisées, sont disponibles sur GitHub

Remerciements


Nous remercions nos collègues pour l'idée du système mis en œuvre dans ce travail. AlexGyver et d'autres utilisateurs partagent généreusement leurs expériences pour les informations que nous avons utilisées dans notre travail.

résultats


L'utilisation d'un système de rétroaction composé d'une vanne proportionnelle, d'un débitmètre et d'un microcontrôleur vous permet de faire RRG pour maintenir un débit de gaz donné. Les tests ont montré un écart par rapport au débit requis en moins de 2%. Le coût du système était inférieur à 200 USD. Le prototype assemblé a montré son opérabilité dans un large éventail de conditions. Une utilisation ultérieure peut nécessiter un raffinement, y compris le câblage des circuits, la fabrication du boîtier, etc.

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


All Articles