Arduino 控制的卡通盒温度调节系统

本文将介绍进行的一项实验:为一个卡通盒设计的温度控制系统。这个系统利用Arduino Nano的模拟和数字特性来监控和调节一个适宜环境中的温度。

系统特点

该系统包含以下特点:

  • 四个独立的温控测量点
  • 一个两级加热器
  • 一个冷却风扇
  • 一个ArduinoNano控制器

为了充分理解这个实验,需要具备一些基础的数学、物理和电子知识。搭建这个系统的过程非常有趣,但如果真的想要自己搭建一个类似的系统,那么需要做一些手工活:比如剪线、焊接等。

实验理念

这个实验的理念是利用ArduinoNano的模拟和数字功能来监控和调节(增加)适宜环境中的温度。具体来说,Nano负责以下功能模块:

  • 温度传感器,用于监控封闭系统和外部环境的温度。
  • 加热器,可以开启以产生热量。
  • 风扇,用于分散产生的热量,从而加速热平衡过程。

系统工作原理

为了实现温度控制,需要为系统注入热量(即能量)。大型系统需要大量的能量,而任意大型系统需要任意数量的能量。简单来说,负担得起加热图2所示的卡通盒。这个盒子还提供了一些热绝缘性能。

监测是通过四个便宜的模拟温度传感器Microchip MCP9700A实现的。MCP9700A传感器的输出电压与测量到的温度成正比,公式如下:

vout(t) = (0.5 + 0.010 * t/°C) V

例如,在30°C(86°F)时,它输出0.8V。传感器被策略性地放置,并相应地命名:

  • NEAR - 靠近加热器的内部盒子侧,靠近空气。
  • FAR - 远离加热器的内部盒子侧,面向气流。
  • HEATER - 在内部盒子的地板上,靠近加热器。
  • EXTERNAL - 盒子外部,用于监控环境温度。

每个传感器的VOUT和GND之间连接了一个0.33 µF的陶瓷电容器。

热量是通过三个1Ω的水泥功率电阻(5W)的焦耳效应产生的。Arduino无法提供或处理如此大的电流,因此需要一个外部电源和一个继电器板。

两级加热是通过相同的供电电压5V实现的,交替使用三个电阻的串联(第一阶段)或两个电阻的串联(第二阶段)。第一阶段提供的总功率为:

P1 = V*V/R = 5*5/3 W ≅ 8.3 W

...而第二阶段提供的功率为:

P2 = 5*5/2 = 12.5 W

值得注意的是,在第二阶段配置中,功率超过了电阻的名义功率。

使用一个5V的吸风风扇来分散热量,气流方向如图2所示。风扇需要相当大的电流(约200mA),Arduino无法直接提供,继电器板再次派上用场。

组装所有部件

下图显示了完整的电路图。注意两个电源:

  • 外部高电流电源明确标记(见图8、9),它为继电器板、电阻和风扇提供电流。
  • 低电流电源来自Arduino USB端口,为Nano和模拟电路供电。

代码实现

与硬件组装工作相比,代码实现相对简单,Arduino IDE使它变得更简单。在Setup函数中,初始化串行端口,配置控制继电器的数字引脚为OUTPUT,并设置为HIGH逻辑电平,以开始一个干净的'do nothing'状态(因为驱动继电器的逻辑是反的:Arduino引脚LOW驱动继电器ON)。

在永不结束的Loop函数中(欢迎来到微控制器世界!),从串行端口读取可用字符,然后使用一个简单的switch语句执行识别的基本单字符命令:

  • '0' - 切换继电器1的状态
  • '1' - 切换继电器2的状态
  • '2' - 切换继电器3的状态
  • 'v' - 切换详细报告模式

然后读取传感器值并记住以供报告。使用Arduino读取模拟值非常简单,一个简单的analogRead调用,感谢底层库,完成了工作。将ADC原始测量值转换为温度值也非常简单,以下代码片段计算温度的整数和小数(十分之一度)部分,而不使用不必要的浮点变量。

int millivolt = map(adc, 0, 1023, 0, 5000); int degree = (millivolt - 500) / 10; int fracdegree = (millivolt - 500) - (degree * 10);

最后,报告测量值,以及继电器的当前状态。有两种报告模式:默认和详细。两种模式报告相同的独立信息,然而详细模式适合直接人工解释,而默认模式是原始的CSV格式,旨在自动数据采集。

首次测试运行

这次测试是在8月6日的晚上进行的。测试计划如下:

步骤 分钟 加热器状态 风扇状态
1 10 OFF OFF
2 10 ON STANDARD OFF
3 10 ON HIGH POWER OFF
4 30 ON STANDARD ON
5 30 OFF ON

测试结果如下图所示:

显然,加热器工作得很好(超出预期:它变得非常热)。图表中的高功率加热有点被高估了,可能是因为加热器传感器靠近其中一个'超速'电阻。风扇的效果相当令人印象深刻。NEAR和FAR传感器在盒子内部的温度值上相当一致,这并不奇怪,它明显高于外部环境的温度。

有趣的点

焊接、剪线、组装对于软件人员来说是辛苦的工作。另一方面,一个工作的DIY硬件件给人一些满足感和乐趣。使用Arduino构建原型非常快速和愉快。然而,快速原型可能不是最先进的。在看来,温度监测的准确性可以(也应该)提高。

仅仅进行一次测试实际上是一个可怜的验证手段。但是,正如Lou Reed曾经唱的那样:"没有时间",真的。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485