×

加湿器开源分享

消耗积分:2 | 格式:zip | 大小:0.76 MB | 2022-10-24

李丽华

分享资料个

描述

0. 简介

“一支雪茄就像你抽它时的记忆一样美好。”

我可以同意这一点,但一支尖尖而苦涩的雪茄可能会让它变得不那么令人愉快。这就是为什么我想给自己做一个雪茄盒在合适的温度和湿度下储存雪茄非常重要。特别是对于像古巴人这样的长填充雪茄。

在荷兰,抽短芯雪茄更为常见。其中大部分是在荷兰生产的。它们不必存放在雪茄盒中,但建议使用

为什么要在 Arduino 社区发布这个制造雪茄盒的项目?因为雪茄盒的湿度将由 Arduino 自动控制。称之为“Humiduino”。

 
 
 
 
poYBAGNVjCuAawpqAAXR6mJknnw035.jpg
 
1 / 2只是一个普通的雪茄盒。
 

1. 基础知识:雪茄盒是如何工作的?

对于雪茄的最佳储存,您需要一个内部具有所谓“加勒比”气候的盒子温暖而且非常潮湿。换算成 21 摄氏度 (70F) 和 70% 相对湿度的数字。必须保持这种气候以确保雪茄的最佳储存。不管外面的气候如何。

您可以购买的大多数雪茄盒都配备了 2 个基本部件。加湿器湿度计_ 两者都用于保持适当的湿度。他们不会费心将雪茄盒冷却或加热到合适的温度,因为假设雪茄盒将放置在您的房屋内,中央供暖或制冷将保持温度。

湿度计用于监测湿度。加湿器用于增加空气中的水分。通过向加湿器中添加少量水手动添加水分。重要提示:必须是蒸馏水!自来水可能含有矿物质和细菌,这些矿物质和细菌可能会影响雪茄盒,或者更糟的是,影响您的雪茄。

1.1 深度:保持湿度水平

当我的雪茄盒刚用完时,荷兰的气候非常极端。14:00 左右,一场漫长而干燥的热浪使我的客厅温度达到了 30 摄氏度。夜间相对湿度约为 93%,白天约为 60%。我无法在雪茄盒中保持完美的气候,这让我觉得我手工制作的雪茄盒并不好。但结果证明,对整个雪茄盒都不熟悉是主要原因。

假设湿度水平更容易维持,因为温暖的温度部分正确。温暖的温度使水分更容易蒸发到空气中。虽然温暖的空气也意味着相同体积的空气可以包含更多的水分。雪茄盒中的湿度约为 64%,而我的加湿器使用了大量的水分。我想达到 70%,所以不断添加水分。直到我发现。70/70 规则仍然适用,但如果温度较高,则必须进行调整。有一个简单的图表:

 
pYYBAGNVjC2ATUtOAABXtHmPmo4847.png
湿度与温度的图表。
 

所以,看到这张图表,事实证明,在荷兰的极端温度下,不可能保持完美的气候。(75F 的温度和 70% 的湿度)唯一的方法是降低雪茄盒的温度或在雪茄盒中添加大量的水分。

一个简单的计算将显示在 26 摄氏度和 65% 的湿度下空气中的水分含量。该图表显示每克空气含有 0.013 克水。在 21 摄氏度和 70% 的湿度下进行同样的操作,每克空气中含有 0.011 克水。所以我的雪茄盒很潮湿。

为了防止自动化系统像我一样犯下同样的“错误”,我必须实施一套新的指令。雪茄盒内的湿度不必一直保持在 70%,但应根据温度降低或升高。不是 70/70 规则,而是新的 11g/1kg 规则。

 
 
 
 
poYBAGNVjDCAHosSAACuqIlzu1g650.png
 
1 / 3同上表,但每公斤空气的水量。
 

2. 建造或购买雪茄盒

 
 
 
 
pYYBAGNVjDSAdVRnAAU7POQvyag182.jpg
 
1 / 5外箱
 

上面有一些我自己建造的雪茄盒的照片。因为我在 Arduino 社区发布了这个,所以我不会在这里分享建筑的细节。对于那些感兴趣的人,我将在 CAD 图纸下提供建筑平面图。如果您想要这些说明,您可以使用这些. 或者通过给我发消息要求更详细的。

这当然是一个拥有电子爱好者的社区,但可能会有更多像我这样的人想尝试木工。我列出了一些理由让您决定是否应该尝试自己构建一个。

首先,我了解到雪茄盒可能非常昂贵。价格从 35 欧元到数千欧元不等。基于我想在雪茄盒中包含所有电子设备和一个储水器这一事实,我认为我需要一个相当大的。雪茄盒必须在 30*40 厘米左右。然后它们对我作为学生的我来说太贵了,大约 500 欧元。你可能会在互联网上找到更便宜的,但我有其他理由不购买机器制造的雪茄盒。

其次,我不喜欢大多数雪茄盒上使用的饰面。他们哪里有光泽,有一种不自然的感觉。

第三,将电子设备添加到现有的雪茄盒中可能会限制我设计的可能性。自己制造雪茄盒和电子产品更有意义。

最后一个原因是我把这个项目作为一项学习任务,所以我自己建造雪茄盒是一个很好的补充。

因为这是一个与研究相关的项目,所以我可以进入一个配备了所有需要设备的车间。手工制作雪茄盒是不可能的。弄清楚您是否可以访问以下两台机器;锯台或锯台,台式切割锯。我会说它们是必不可少的。

3. 电子产品

所以我开始使用我用来制作原型的普通 Arduino Uno。但是使用普通的 Arduino 很难安装所有组件。每次需要进行小调整时,我都必须取出所有组件并重新安装。电缆折断了,我一直在修理东西。最后一切正常,然后我发现我的 5V USB 电源不足以同时为 Arduino 和电机供电。我决定重新设计整个事情。使其更小,更容易连接所有部件并使用新电源。

首先是电源。使用 9V 1A 电源为 Arduino 和泵供电。我首先尝试使用 USB 为两者供电,但没有奏效。理论上,就我现在而言,它应该可以工作。但这发生了。如果您知道为什么它不起作用,我真的很想听听。

切换到 9V 电源后,必须进行一些更改。Arduino 可以使用 9V 的输入电压。然而,泵可以在最大 6V 的电压下工作。我添加了一个 7805 稳压器,在输入和输出上都有两个 10 uF 电容器,只是为了确定。那将是泵的电源。

 
 
 
 
poYBAGNVjDeABTpyAAVwJNlIZf4612.jpg
 
1 / 27805 带电容器的稳压器。
 

泵电机还有一个简单的分压器。我想要抽少量的水。为其提供全 5V 电压将使控制抽水量变得更加困难。我添加了 2 个 1W 电阻器来制作分压器。电机的内阻计算为 24 欧姆。我放置了 2 个总电阻为 18 欧姆的并联电阻。电机将达到 3V 左右,电阻器将达到 2V 左右。这是浪费能源,因为电阻器会将功率耗散为热量,但泵不会开启很多。永远不会超过 180 毫秒,我希望它最多每天打开一次。在给出更好的估计之前,我正在等待日志结果。

我决定将 Arduino Nano 焊接到 pcb 板上。这样我仍然可以在顶部插入跨接电缆,也可以从底部引脚焊接电缆。不要看接线,我知道它不是很好。

 
pYYBAGNVjD2AGvG1AAwvXb-GqHQ001.jpg
焊接 PCB 底部的 Arduino 引脚。
 

 

 
pYYBAGNVjEKAUK6GAAiAfw76PHg251.jpg
所有电气组件的概述。
 

在上图中,您可以找到所有电气组件的概览。

  • 1. 用于记录传感器数据的 SD 卡。它连接到 9。可选。
  • 2. 用于开启 LCD 屏幕 5 秒的按钮。连接到 6。
  • 3. LCD 引脚,连接到 6。
  • 4.继电器,接电机和上述7805的输出。
  • 5. 接通电源,9v,连接到 8 号。
  • 6. 连接到这些引脚的 3 号和 2 号引脚。
  • 7. 连接到这张图上看不到的 DHT22。
  • 8. 电源引脚。
  • 9. SD 卡连接到这些引脚。SD 卡是可选的,但如果您想记录数据并进行一些改进,它很有用。

4. 软件

#include "DHT.h"
#include "Wire.h"
#include "LiquidCrystal_I2C.h" 

使用的库:您可以从项目文件中下载第一个和最后一个。第二个可以包括在内,并且已经在您的计算机上。

#define DHTPIN 7
#define DHTTYPE DHT22

定义您的 DHT 在您使用的 DHT 类型上的引脚。

const int buttonPin = 3;
const int pMotor = 9;
int buttonState = 0;
int timeT = 0; 
int countPump = 0;
float hum;
float temp;
float htCalcA;
float htCalcB;
float htCalcC;
float htCalcD;
float htCalcE;
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
void setup()
{
}

我的 LCD 在地址 0x3F 上。您可以使用此工具找到您的 LCD 地址。

void loop()
{

计算基于也用于湿度图的公式。如果您有办法一次完成所有操作,请告诉我。这些值应与我在湿度解释中放入的 excel 表相对应。

if (htCalcE < 10.70 && countPump >=47)
   {
     digitalWrite(pMotor, HIGH);
     delay(180);
     digitalWrite(pMotor, LOW); 
     countPump = 0;
   }

所以 htCalcE 应该在 10.85 左右。如果水太少,必须将水加到加湿器中。但不要太频繁,水蒸发缓慢,我们必须确保加湿器不会溢出。因此添加了一个计数:countPump。如果计数达到 48 且湿度低于 10.70,泵将关闭 1 秒钟。您可能想要更改计数(现在是 48,这意味着需要四个小时,稍后会解释)和抽水量。

 else if (htCalcE > 11.05)
   {
     digitalWrite(pMotor, LOW);
     countPump = 0;
   }

如果湿度高于 11.05,则计数再次设置为 0。这意味着泵至少需要四个小时才能加水。这没问题,因为湿度太高了。

 else
   {
     digitalWrite(pMotor, LOW);
     countPump ++;
   }

如果湿度在 10.70 和 11.05 之间,则计数会增加。

while(timeT < 1200) 
   {
   // start while loop
   buttonState = digitalRead(buttonPin); 
   if (buttonState == HIGH) 
     {
     temp = dht.readTemperature();
     hum = dht.readHumidity();
     lcd.backlight();
     lcd.clear(); 
     lcd.setCursor(2, 0);
     lcd.print("Humi= ");
     lcd.print(hum);
     lcd.print("%");
     lcd.setCursor(2, 1);
     lcd.print("Temp= ");
     lcd.print(temp);
     lcd.print("C");
     delay(5000);
     lcd.clear(); 
     lcd.noBacklight();
     timeT +20;
     }
   else 
     {
     timeT ++;
     }
   delay(250);

这是一个不断检查按钮是否被按下的while循环。如果是,将打开 LCD 5 秒钟,并显示温度和湿度。300 秒后,while 循环完成,整个循环重新开始。早些时候是告诉你,泵只能在四个小时内加水一次。这就是为什么; countPump 必须为 48,每个 while 循环需要 5 分钟。48*5= 240 分钟或 4 小时。

许多值需要改变,以确保雪茄盒保持完美的气候。我的建议是在前几周手动加水。与此同时,我建议将大量信息记录到 SD 卡中以分析代码的行为。如果你确定值是正确的,你可以用蒸馏水填充你的水库,让 Arduino 完成剩下的工作。

 
poYBAGNVjEeAPVLEAAn2urJk4A8595.jpg
最后结果。
 

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'加湿器开源分享',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);