气体流量调节器比商用解决方案便宜5倍

图片

气流控制器(RRG)旨在维持用户定义的流速。 RWG用于工业和研究实验室,以组织来自气瓶和公路的气体供应。市场上有Eltochpribor,MKS,Bronkhorst等设备,其价格为1000-2500美元。这项工作的目的是从更易接近的组件中创建一个气流调节器。这个想法是要组织一个包括比例阀和流量计的反馈系统。下面是系统硬件和软件的简要说明,它允许将其复制给在活动中使用RRG的每个人。所有源代码都可以在GitHub上获得

我们使用了SMC产品,PVQ系列阀门和PFM5系列流量计,但没有指示。如图所示,两个RWG的可调流量范围分别为0.2-5 L / min(PVQ13 + PFM510)和1-50 L / min(PVQ31 + PFM550)。可以从上面估算一个流量调节器的成本为100美元(PVQ31阀门)+ 80美元(PFM5表)+ 20美元(Arduino Nano微控制器,电源和无线电组件)= 200美元。下文所述的所有内容均适用于RWG 1-50 l / min。按照相同的方案创建一个0.2-5 l / min的调节器以及其他类似组件的调节器,但细节上可能有所不同。

硬件


图片

硬件如图所示,包括:

  1. 比例阀PVQ31
  2. PFM550流量计
  3. 过滤
  4. 电源单元(24V,1A)
  5. 电流控制电路
  6. Arduino Nano微控制器及其电源方案

图片

组件的电气连接图如图所示。为了给电路供电,使用24 V,1 A直流电源,如果阀的消耗小于200 mA,仪表的电流小于35 mA,则该电流就足够了。PVQ系列比例阀是电流控制的。根据文档,不建议通过电压控制对其进行控制。可以使用此处此处以及此处更详细讨论的电路来实现电流控制电流控制电路在普通电路(图3)上以虚线矩形突出显示。PVQ系列阀门通过两根电源线连接:红色-DC +,黑色-DC-。

电流强度通过微控制器的模拟引脚产生的PWM信号进行调节。默认情况下,基于ATmega328的控制器(Arduino UNO / Nano / Pro Mini)会生成一个8位(0-255值)PWM信号,其频率为488或976 Hz,具体取决于引脚。低PWM信号宽度降低了阀门控制的精度。低频导致其嗡嗡声。这些值可以通过编程方式分别增加到10位(0-1023)和15.6 kHz。我们使用了7.8 kHz的频率。这里此处setup()给出需要插入Arduino固件功能的命令的描述

PFM5系列流量计具有2条信号线(黑色-模拟输出,白色-响应时间设置(未使用))和两根电源线(棕色-DC +,蓝色-DC-)。由24 V直流电源供电,流量计给出的模拟信号范围为1-5 V,1 V的值对应于零气体流速,即5 V-该流量计的最大值。根据文档,流量和电压之间的关系是线性的。同时,定期校准流量计似乎是值得的。来自流量计(黑线)的模拟信号由10位(0-1023)Arduino模拟引脚接收,以进行处理和显示。白线用于设置响应时间,我们不使用它。在这种情况下,响应时间为50毫秒。

Arduino开发板应通过5V引脚供电,电源电压不应超过5.5V。该电源可以从阀门PSU和流量计通过L7805稳定器提供,如图所示(图3)。最有可能需要在稳定器上安装散热器。在测试过程中使用计算机的USB端口供电(图2)是不可取的,因为在这种情况下,使用ADC时参考电压不稳定。有关板电源的更多信息,请参见此处

软件部分
软件部分由Arduino Nano微控制器的固件和在PC上运行的图形用户界面组成。

下载到微控制器的程序周期性地执行以下操作:

  1. ,
  2. ,
  3. , -

该系统可以在手动和自动模式下运行。在手动操作过程中,所需的阀开度值valve由变量(0 <= valve<1023)表示)应发送到串行端口。此变量的值确定PWM信号的占用率,该信号通过微控制器的模拟输出发送到电流控制电路和比例阀命令analogWrite(valvepin, valve)。打开后,阀门保持在设定位置,直到通过串行端口收到新命令为止。

要切换到自动操作,必须将负号发送到串行端口-targetflow。可变值targetflow范围为0-1023,并确定应保持的气体流速。实际的气体流速由流量计读数确定,流量计读数通过命令realflow = analogRead(fmpin)(0 <= realflow<1023)从微控制器的模拟输入中读取。在自动模式下,系统会targetflow通过realflow控制比例阀来保持两者之间的相等性。阀门开度值是使用比例积分微分(PID)控制器计算的。你可以阅读关于PID控制器的这里这里这里GyverPID库用于实现控制器进行一些更改和补充。由于该库已被修改,因此请使用此代码附带的库,而不要从上面的链接下载该库。

要使用PID控制器,必须选择比例Kp,积分Ki和微分Kd分量的系数以及迭代时间dtpiddtpid必须根据系统的惯量选择变量的值。系统越惰性,应该越多dtpid。根据相关设备的额定值和测试结果,我们选择值dtpid= 100-330 ms。的系数KpKiKd以固定值选择dtpid并且很大程度上取决于系统。有关系数选择的建议可在此处此处此处找到

因此,微控制器循环执行的算法如下:

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

图形用户界面使用PyQt图形框架以Python编写。该设计是在Qt Designer程序中创建的,然后将.ui文件的代码转换为Python文件。有关GUI开发和PyQt用法的介绍,请参见此处此处

图形界面使用库通过串行端口与Arduino固件进行交互pyserialPython程序执行以下操作:

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

从此处 借用了用于连接到串行端口的代码

该模块旨在用于从用户单位传输到0-1023范围units.py该模块使添加新单元变得容易。要求用户指出单位名称和从0-1023到新单位的转换公式。该模块提供了详细的注释。

从流量计接收并由微控制器固件输出到串行端口的数据由Python程序从端口读取,并在转换单位后以文本和图形形式显示。一个库用来绘制电流消耗图pyqtgraph

结果


要开始使用RRG,您需要:刷新微控制器,接通电源,运行Python程序,建立与串行端口的连接。此后,用户可以选择操作模式(手动或自动),并在手动操作模式下设置所需的阀门开度值或在自动模式下设置支持的流量值。当前气体流速显示在相应的字段中,并显示在图表上。达到指定的点数后,将周期性地更新图形,然后将图形清除并重新开始绘图。用户可以选择使用的单位。

图片
该图显示了图形用户界面的外观以及在自动模式下获得的气体流量的图表,并显示了RGG在支持的流量的不同值之间的切换。结果以0-1023为单位给出。

为了说明保持恒定气体流量的可能性,我们考虑了当比例阀以恒定值“浮动”打开时的流量的情况,如下图的左侧(x <950)所示。在图表的右侧可以看到自动维持设定流量的操作结果(x> 1000)。测试表明,在自动保持模式下与设定流量的偏差不超过2%。

图片

备注


不需要使用Arduino Nano微控制器,因为仅涉及其引脚的一小部分。另一方面,最好使用模拟输入/输出的位容量更大的微控制器,以提高测量和调整的精度。更改微控制器的类型时,可能有必要实现自己的PID控制器;这不会造成困难,因为算法很简单。

在开发阶段,将电路组装在试验板上(参见图2)。为了进一步使用,必须焊接电路并将其放置在外壳中。

本文的作者既不是电子工程师也不是程序员,因此,欢迎提出建设性的改进建议。

附加材料


Arduino固件和Python程序的源代码以及所用流量计和比例阀的文档可在GitHub找到

致谢


我们感谢我们的同事对这项工作中实施的系统的想法。AlexGyver和其他用户慷慨分享了我们在工作中使用的信息的经验。

发现


使用由比例阀,流量计和微控制器组成的反馈系统,可以使RRG保持给定的气体流量。测试表明与所需流量的偏差在2%以内。该系统的成本不到200美元。组装好的原型在各种条件下均显示出可操作性。进一步使用可能需要改进,包括对电路进行布线,制造外壳等。

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


All Articles