一板网电子技术论坛

风筝
发表于: 2021-10-8 17:22:32 | 显示全部楼层

加湿器(Humidifier)是一种用来增加封闭区域的相对湿度,以保证该区域有足够的水分的装置。尤其是在冬天,当打开加热器时,会导致空气的相对湿度降低。在本篇文章中,我们要制作一个自动加湿器,它可以利用传感器机制保持大气的相对湿度。我们还使用显示器以空气中水分百分比的形式显示相对湿度 (RH)。除了Arduino和LCD,我们还使用DHT11传感器来读取大气湿度值。如果发现相对湿度低于要求的限值,则打开加湿器,反之亦然。


所需的组件

●    超声波加湿器

●    Arduino Nano开发板

●    5V继电器

●    7805

●    25V/1000uf电解电容

●    DHT11传感器

●    连接线


便携式加湿器的工作原理

Automatic-Portable-Humidifier.jpg

便携式加湿器可以通过使用高频振动的金属膜片产生暖/冷雾。声音振动将湿气推入空气中。加湿器中产生的雾气几乎立即被空气吸收。加湿器需要漂浮在水床上才能产生雾气。我们将要制作的加湿器的工作原理可以通过下面的框图来理解:

Humidifier-Block-Diagram.jpg


如上框图所示,超声波加湿器放置在容器内的水面上。加湿器漂浮在水面上。由于需要感测湿度,因此将DHT11湿度传感器与Arduino Nano连接,然后连接OLED显示屏以显示实时值。此外,根据湿度值,我们需要触发继电器,从而将加湿器切换到ON/OFF。因此,将加湿器值与参考值进行比较,并根据湿度值打开/关闭加湿器。


便携式加湿器电路图

此处给出了使用Arduino自制加湿器的完整原理图:

Humidifier-Circuit-Diagram.jpg

图所示,首先使用7805稳压器和滤波电容将12V直流电源转换为5V直流电源。然后该电源供应给Arduino Nano、OLED、DHT11和继电器。 DHT11的数据引脚连接到Arduino的数字输入引脚。 OLED显示屏通过I2C连接到Arduino的A4、A5引脚。同时,Arduino的数字输出引脚连接到继电器和BJT,用于驱动直流风扇。


为了使设备更加便携以及可可配置,我在万能板焊接了所有组件,如下图所示:

DIY-Portable-Humidifier.jpg


为加湿器编程Arduino Nano

根据电路图成功完成硬件连接后,现在是时候将代码写入Arduino了。在本节中我们逐行解释整个代码。


首先,第一步是在代码中包含整个所需的库,即本项目中的“SoftwareSerial.h”、“wire.h”、“Adafruit_SH1106.h”和“DHT.h”。 “SoftwareSerial.h”和“wire.h”是内置的,“Adafruit_SH1106.h”可以从这个链接下载,“DHT.h”可以从这个链接下载。

  1. #include <SoftwareSerial.h>
  2. #include <Wire.h>
  3. #include <Adafruit_SH1106.h>
  4. #include "DHT.h"
复制代码

然后,定义OLED显示屏的I2C地址,可以是0x3C或0x3D,本文使用的是0x3C。通常,1.3英寸OLED的地址是0x3C。此外,必须定义显示器的复位引脚。在本文中,它被定义为 -1,因为显示屏共用Arduino的复位引脚。

  1. #define OLED_ADDRESS   0x3C
  2. #define OLED_RESET -1
  3. Adafruit_SH1106 display(OLED_RESET);
复制代码

现在,声明一个DHT类型对象,可以在整个代码中使用。

  1. DHT dht;
  2. int humidity=0;
复制代码

setup()函数中里面,初始化串口通信和OLED显示屏。软件串口通信的默认波特率定义为9600。这里SH1106_SWITCHCAPVCC用于内部从3.3V产生显示电压,display.begin函数用于初始化显示屏。

  1. void setup()
  2. {
  3.   Serial.begin(9600);
  4.   dht.setup(2);
  5.   pinMode(6,OUTPUT);
  6.   pinMode(11,OUTPUT);
  7.   display.begin(SH1106_SWITCHCAPVCC, OLED_ADDRESS);
  8.   display.clearDisplay();
  9. }
复制代码

使用getHumidity()函数从传感器读取湿度值,并将其存储在变量中。然后使用相应的函数选择文本大小和光标位置,将其显示在OLED显示屏,如下所示。

  1.   delay(dht.getMinimumSamplingPeriod());
  2.   humidity = dht.getHumidity();
  3.   display.setTextSize(1);
  4.   display.setTextColor(WHITE);
  5.   display.setCursor(27, 2);
  6.   display.print("CIRCUIT DIGEST");
  7.   display.setTextSize(1);
  8.   display.setCursor(35, 20);
  9.   display.print("HUMIDITY(%)");
  10.   display.display();  
  11.   display.setTextSize(2);
  12.   display.setCursor(55, 40);
  13.   display.print(humidity);
  14.   display.display();
  15.   delay(50);
  16.   display.clearDisplay();
复制代码

最后,为了触发加湿器,将湿度值与参考湿度值进行比较,低于参考湿度水平,继电器被触发,从而打开加湿器和风扇。

  1.   if(humidity<88 )
  2.   {
  3.     digitalWrite(6,HIGH);
  4.     digitalWrite(11,HIGH);
  5.   }
  6.   else
  7.   {
  8.     digitalWrite(6,LOW);
  9.     digitalWrite(11,LOW);
  10.   }
  11. }
复制代码

测试便携式加湿器

代码和硬件准备就绪后,我们就可以测试这款加湿器在封闭房间内的表现。为此,请按照以下步骤操作:

◾    用水填充容器至3/4处,然后将加湿器漂浮在其上,如下所示:

Portable-Humidifier-Working.jpg

◾    使用电源适配器供电,现在我们应该看到OLED上的湿度值。

◾    然后,如果湿度值低于参考值,则加湿器应开始产生雾气,并应打开风扇。

Portable-Humidifier-using-Arduino.jpg


以上就是本篇文章的全部内容。如果您有任何疑问,可以在本贴下面进行回复。

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 580 | 回复: 1168



手机版|

GMT+8, 2021-10-26 11:28 , Processed in 0.031721 second(s), 4 queries , MemCache On. Powered by Discuz! X3.4

YiBoard一板网 © 2015-2021 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表