背景
我们的任务是创造一个可用于住宅环境的气流流量计。在今天的暖通空调行业,市场上唯一的气流传感设备是为工业应用设计的系统。目前用于计算工业规模寄存器的气流速率的设备要么对住宅寄存器太大,要么由于住宅HVAC系统输出的气流较小而无法计算气流速率。所以我才有了萌生这个项目的想法。
如何工作
为了从气流中产生信号,我们使用了一个杯形风速计来捕捉空气。我们使用Autodesk Inventor定制3d打印叶片,以优化风扇叶片捕捉空气的性能。我们还3d打印了一个外壳来放置风速表。
为了读取风速计输出的信号,选择了电压传感器。来自传感器的信号也需要被放大,以便在电压传感器上有一个更准确的读数。放大器将风速计的输出电压放大10倍。根据输入电压的不同,这个系数可以增加或减少1.5到1000倍。
Arduino Uno用于从电压传感器读取模拟信号并控制显示在LCD屏幕上的内容。对于这个特定的问题,我们想要CFM中的风速,所以我们在屏幕上这样显示它。
构建
电子产品
建造的第一步是从风速计开始的。下面是该设备的一些照片:
请看这张标有“风速表俯视图”的图片。风叶与风速计的连接点呈l型,非常薄。这会妨碍使用时保持高速,所以这里是我们设计新的叶片。我们想要的是更厚的刀片和更坚固的手柄设计。大叶片的目的是减少叶片和外壳单元(风扇所在的位置)之间的截面气隙,这反过来会增加铲斗捕获的空气量和电机产生的电压。下面是叶片附着在风速表上的照片:
你可能会想,这会带来很大的不同吗?这是个好问题。为了回答这个问题,我们在Autodesk Inventor中进行了一些压力分析测试,看看新设计是否更加坚固。下图显示了结果。
我们可以看到,新叶片在高速下更有效。
接下来,我们需要把改进的风速计放入房屋单元。如果风速表上没有刀片,将风速表从外壳底部的孔向上滑动。风速计的底部有两个薄薄的木圈。钻4个小孔通过圆圈和通过ABS塑料外壳。一个孔是用来穿电线的,另外三个孔是用来装螺丝的。下图展示了它的外观:
接下来我们需要把风速计连接到放大器上。下面是放大器的图片。
注意:所有连接到放大器的电线都是公对公的
拿两根公对公的电线,颜色不重要,但我会用我们在项目中使用的颜色来称呼它们。在右边的+S圆上焊接一根红色的电线。将另一端焊接到风速计的红色电线上。在右边的-S圆上焊接一根黑色的电线。将另一端焊接到风速计的黄色电线上。此外,添加电气胶带也能很好地保持它们的位置。
接下来我们需要把放大器连接到电池上。在右侧的GND上焊一根黄色的线。将另一端焊接到来自电池组连接器的黑色电线上。在右侧的Vln圆上焊接一根白线。将另一端焊接到来自电池组连接器的红色电线上。
再接下来我们需要把放大器连接到电压传感器上。将一根蓝色导线焊接到放大器的GND上,另一端焊接到电压传感器上的VCC。将一根绿线焊接到放大器的Vout上,另一端焊接到电压传感器的GND上。
现在我们将把电压传感器连接到Arduino并完成接线。
完成
最难的部分已经完成了!现在一切都连接好了,我们可以设置流量计的电子元件了。用一块泡沫板作为风扇外壳顶部的天花板。我们用强力胶把它固定住。然后你可以把电子产品放在泡沫板上,用更多的泡沫板来围住电子产品。在下面的图片中,你可以看到泡沫是如何被用来包围电子产品的。
此外,在泡沫上切割孔,以允许Arduino和放大器访问各自的9V电池电源。这可以在下面的图片中看到。
接下来我们将创建漏斗。我们用PVC材料做漏斗的板。有四块梯形的木板。为了将木板相互连接,我们使用了胶水和填充物。同样的方法被用来连接漏斗到风扇外壳。在漏斗的大端,在周围放置了防风雨条。这样做是为了在漏斗被压到通风口时创造一个密封。漏斗大端的横截面为14 " × 14 "。
校准
一旦所有东西都建好了,我们就校准流量计。我们用一个知道确切气流的设备进行了测试。我们的第一个代码在液晶屏上显示传感器读取的电压。然后,我们使用收集到的数据创建方程,使液晶屏幕显示CFM。下面的数据显示了我们如何校准它。
在图上你可以看到两条曲线,初始气流和实际气流。它们是不同的,因为当我们向下输送空气时,速度会略微下降。这里我们将使用最适合实际气流的方程,
Y = 1.1409x^2 + 44.958x在我们的arduino代码中。该代码将被分为三个部分,风速为零的区域,小到中等风速和大风速。你可以用上面的方程来模拟整个气流的风速,但是我们找到了一个更好的方程来模拟小到中等范围的风速。这些范围将用下列方程式表示:
大型CFM:
Y = 1.1409x^2 + 44.958x
中至低CFM
Y = 40x +20
零CFM:
Y = 0
您可以在本文下方中找到代码。
接下来只需要上传代码到Arduino,你就完成了流量计!
自己校准(可选)
假设你想自己校准它。也许你想用米/秒或英里来测量气流。在这里,我们将向您介绍校准的步骤。
- 第一步:先想办法找出实际流量。
最便宜的方法是从商店买一个风速表。这是一个可行的方法。
- 第二步:把风速表放在有不同速度设置的风扇前面。风扇可以是如下图所示的那种。
- 第三步:记录风速计在每个不同设定下的风速。
- 第四步:你必须让流量计读取风扇的输出电压。为此,将名为“电压传感器代码”的代码上传到Arduino。
- 第五步:现在你有了流量计的读数电压,记录电压在每个不同的风扇转速设置。
- 第六步:使用Excel创建“风速vs电压”散点图。
- 第七步:使用趋势线特性找到一个方程,以准确地模拟“风速与电压”。
- 第八步:如果你觉得你的趋势线不是很线性,你可以为图的上下部分找到单独的方程。
- 第九步:现在你可以用你的方程式代替我在“流量计代码”中的方程式。
Flowmeter Code:
1. #include <LiquidCrystal.h>
2.
3. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
4. // These are the pins that will be used
5.
6. // Below are the values of the resistors in the sensor
7. float R1=30000;
8.
9. float R2=7500;
10.
11. void setup()
12. {
13.
14. Serial.begin (9600);
15. lcd.begin(16, 2);
16. // This allows the LCD screen to be used
17.
18.
19. }
20.
21. void loop()
22. // Beginning of the loop
23. {
24.
25. int sensorValue = analogRead(A0);
26. // Reads the sensor value
27.
28. float voltage = ((5*sensorValue*(R1+R2))/(1024*R2));
29. // Equation for the real voltage
30.
31.
32. //*********************************************************//
33. // The equation for CFM is a piecewise function of voltage,
34. // so if statements were used to divide the functions into
35. // their respective regions below
36. //*********************************************************//
37.
38.
39. if (voltage > 1)
40. // First region of the function for large CFM
41. {
42.
43. float cfm = (1.1409*(voltage))*((voltage))+44.258*(voltage);
44.
45. Serial.println(cfm);
46. // Displays CFM
47. lcd.print("CFM = ");
48. lcd.setCursor(0, 1);
49. lcd.print(cfm);
50. delay(1000);
51. // 1000 ms delay
52. lcd.clear();
53. // Clears for repeat
54. delay(1000);
55.
56. }
57.
58. else if (.01 < voltage < 1)
59. // Second region for middle to low CFM
60. {
61.
62. float cfm = (40*(voltage)+20);
63.
64. Serial.println(cfm);
65. // Displays CFM
66. lcd.print("CFM = ");
67. lcd.setCursor(0, 1);
68. lcd.print(cfm);
69. delay(1000);
70. // 1000 ms delay
71. lcd.clear();
72. // Clears for repeat
73. delay(1000);
74.
75. }
76.
77. else
78. // If fan is not spinning, the CFM will be zero
79. {
80. float cfm = 0;
81.
82. Serial.println(cfm);
83. lcd.print("CFM = ");
84. lcd.setCursor(0, 1);
85. lcd.print(cfm);
86. delay(1000);
87. lcd.clear();
88. delay(1000);
89. }
90.
91.
92. }
如果您对此项目有任何想法、意见或问题,请在下方留言。
以上内容翻译自网络,原作者:Ardunicko,如涉及侵权,可联系删除。