亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino 驱动的家用风量计:构建与监测指南

组件与物料

Arduino UNO × 1
杜邦线 (共 25 根) × 25
面包板 × 1
旋转电位器 10kΩ × 1
Adafruit RGB 背光 LCD 16x2 × 1
直插电阻 220kΩ × 1
Diymall 电压传感器 DC0-25V × 1
DROK 信号放大模块 AD620 × 1
杯式风速计 (风杯转速输出电压) × 1

所需工具

电烙铁 (通用)

项目详解

背景

我们的任务是制作一款适用于家庭环境的风量计。当前暖通空调 (HVAC) 行业的风量传感器多面向工业系统,要么体积过大无法安装在家用风口,要么因家用系统风量较小而无法准确测量。

工作原理

信号产生:使用杯式风速计捕捉气流。我们用 Autodesk Inventor 设计并 3D 打印定制风杯叶片与外壳,优化气动性能。

Arduino 驱动的家用风量计:构建与监测指南
Arduino 驱动的家用风量计:构建与监测指南

信号调理:风速计输出微弱电压信号,经电压传感器采集,再经 AD620 仪表放大器 放大 10 倍(增益可调 1.5~1000 倍),再送入 Arduino 读取。

数据处理与显示:Arduino Uno 读取模拟量,换算为风速 (CFM,立方英尺/分) 并在 LCD 显示。

硬件构建

电子部分

首先改造风速计。原装风杯连接处呈 L 型薄弱结构,高速下易断。我们设计了更厚实的叶片与加强连接柄,减小叶片与外壳间隙,增加捕风面积与输出电压。

Arduino 驱动的家用风量计:构建与监测指南
Arduino 驱动的家用风量计:构建与监测指南
Arduino 驱动的家用风量计:构建与监测指南

在 Autodesk Inventor 中进行应力分析,新叶片在高速下变形应力显著降低(见下图)。STL 文件见附件,**暂不安装新叶片**。

Arduino 驱动的家用风量计:构建与监测指南
Arduino 驱动的家用风量计:构建与监测指南

将无叶片的风速计装入外壳(STL 见附件):风速计从底部穿入,底部用强力胶固定两块薄木圆片 (Hobby Lobby),钻 4 个小孔:一孔穿线,三孔螺丝固定。

Arduino 驱动的家用风量计:构建与监测指南

接线放大器(AD620 模块,所有接线均为公对公):

Arduino 驱动的家用风量计:构建与监测指南
Arduino 驱动的家用风量计:构建与监测指南
Arduino 驱动的家用风量计:构建与监测指南
Arduino 驱动的家用风量计:构建与监测指南
Arduino 驱动的家用风量计:构建与监测指南

电压传感器至 Arduino 接线见原理图。

收尾与封装

Arduino 驱动的家用风量计:构建与监测指南
Arduino 驱动的家用风量计:构建与监测指南

集风漏斗制作:用 PVC 板制 4 块梯形板,强力胶+密封胶拼接,大端贴泡棉密封条以贴合风口。大端截面 14″×14″。

标定标定

用已知风量的标准装置标定。初版代码仅显示电压,据实测数据拟合出 CFM 换算公式:

Arduino 驱动的家用风量计:构建与监测指南
Arduino 驱动的家用风量计:构建与监测指南

曲线显示“初始风速”与“实际风速”因集风漏斗收缩而有差异。采用实际风速最佳拟合:

y = 1.1409 x² + 44.958 x   (大风量段)
y = 40 x + 20               (中小风量段)
y = 0                       (零风速)

代码按电压分段计算 CFM,完整代码见下文。上传后风量计即可使用。

自行标定指南 (可选)

若需自定单位 (m/s, mph 等):

  1. 获取参考风速:最廉价方式买一支手持风速计
  2. 对着多档位风扇测量各档风速并记录
  3. 上传“电压传感器代码”让风量计读取输出电压
  4. 记录各档位对应电压
  5. Excel 绘制“风速 vs 电压”散点图
  6. 添加趋势线拟合方程,非线性可分段拟合
  7. 将方程替换进“风量计代码”上传即可

代码

风量计主代码 (Flowmeter Code)

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);  // LCD 引脚
float R1 = 30000;  // 电压传感器分压电阻
float R2 = 7500;

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
}

void loop() {
  int sensorValue = analogRead(A0);
  float voltage = ((5 * sensorValue * (R1 + R2)) / (1024 * R2));  // 还原真实电压

  // 分段函数计算 CFM
  if (voltage > 1) {  // 大风量段
    float cfm = 1.1409 * voltage * voltage + 44.258 * voltage;
    Serial.println(cfm);
    lcd.print("CFM = "); lcd.setCursor(0, 1); lcd.print(cfm);
    delay(1000); lcd.clear(); delay(1000);
  }
  else if (voltage > 0.01) {  // 中小风量段 (原代码条件 .01 < voltage < 1 在 C++ 需拆写)
    float cfm = 40 * voltage + 20;
    Serial.println(cfm);
    lcd.print("CFM = "); lcd.setCursor(0, 1); lcd.print(cfm);
    delay(1000); lcd.clear(); delay(1000);
  }
  else {  // 静止
    float cfm = 0;
    Serial.println(cfm);
    lcd.print("CFM = "); lcd.setCursor(0, 1); lcd.print(cfm);
    delay(1000); lcd.clear(); delay(1000);
  }
}

电压传感器读取代码 (自行标定用)

float R1 = 30000, R2 = 7500;
void setup() { Serial.begin(9600); }
void loop() {
  int sensorValue = analogRead(A0);
  float voltage = ((5 * sensorValue * (R1 + R2)) / (1024 * R2));
  Serial.println(voltage);
  delay(1000);
}

带 LCD 显示电压代码 (Voltage Sensor Code)

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
float R1 = 30000, R2 = 7500;
void setup() { Serial.begin(9600); lcd.begin(16, 2); }
void loop() {
  int sensorValue = analogRead(A0);
  float voltage = ((5 * sensorValue * (R1 + R2)) / (1024 * R2));
  Serial.println(voltage);
  lcd.print("V = "); lcd.setCursor(0, 1); lcd.print(voltage);
  delay(1000); lcd.clear(); delay(1000);
}

原理图

Arduino 驱动的家用风量计:构建与监测指南

制造工艺

  1. 空气净化器:设计、历史与未来趋势
  2. 氧气瓶制造:从原材料到质量保证全流程
  3. 空气清新剂:从古老香料到现代插电式技术
  4. 氧气:从古老发现到现代工业动力
  5. 空调系统:设计、制造与未来趋势
  6. 热气球:从蒙戈尔菲耶兄弟到现代飞行
  7. 安全气囊系统:设计原理、历史沿革与未来创新
  8. Arduino UNO + MAX7219 自制《UFO攻击》复古射击游戏机
  9. 3D RGB Arduclock — 蓝牙控制全彩LED时钟带RTC与闹钟
  10. MyRiver:基于 Arduino MKR FOX 1200 的河流水质远程监测系统
  11. DIY 钢铁侠人偶:Arduino 控制超声波触发音效与灯光
  12. Arduino + 模拟摇杆互动游戏:五向 LED 反馈