在这篇文章中,我们将使用Arduino建造一个孵化器,它可以自我调节温度和湿度。这个项目是由Imran yousaf先生提出的,他是这个网站的热心读者。
介绍
该项目是根据Imran先生的建议设计的,但做了一些额外的修改,使该项目普遍适用于所有人。
你可以运用你的创造力和想象力来完成这个项目。
让我们来了解孵化器是什么?(适用于noobs)
培养箱是一种内部环境与周围环境隔离的封闭设备。
这是为了给被护理的标本创造有利的环境。例如,孵化器在实验室里用来培养微生物,孵化器在医院里用来照顾早产婴儿。
我们要在这个项目中建造的孵化器是用来孵化鸡蛋或其他鸟蛋的。
所有的孵化器都有一个共同点;它可以调节温度、湿度,并提供足够的氧气供应。
您可以通过按下提供的按钮来设置温度和湿度,并实时显示内部温度和湿度。一旦这两个参数设置,它会自动控制加热元件(灯泡)和汽化器(加湿器),以满足设置点。
下面我们来了解一下培养箱的设备和设计。
培养箱的底盘可以是聚苯乙烯泡沫塑料/热电偶箱或丙烯酸玻璃,可以提供良好的隔热性能。我建议使用更容易使用的聚苯乙烯泡沫塑料/热电偶盒。
设备设计:
一个25瓦的灯泡作为热源;较高的瓦数可能会伤害小容器中的鸡蛋。湿度由汽化器提供,您可以使用类似的汽化器如下图所示。
它产生的浓蒸汽将进入孵化器。蒸汽可以通过任何软管输送。
挠性管可以是如下所示的类似物:
蒸汽可以从聚苯乙烯泡沫塑料/热电偶箱的顶部进入,如设备设计所示,这样多余的热量将通过湿度控制孔逸出,并减少对鸡蛋的伤害。
有一个圆筒,里面装着鸡蛋,周围有几个洞,连接着一个伺服电机。伺服电机每8小时旋转圆筒180度,从而旋转鸡蛋。
卵子的旋转可以防止胚胎粘在壳膜上,还可以与卵子中的食物物质接触,特别是在孵化的早期。
旋转的气缸必须有几个孔,以便有适当的空气流通,而且气缸两侧必须是中空的。
旋转滚筒可以是PVC筒或纸板筒。
在空心圆柱体的两端粘贴一根雪糕棍,使雪糕棍形成两个相等的半圆。将伺服电机的手臂粘贴在雪糕棒的中间。在另一边戳一个洞,把牙签粘牢。
将牙签插入盒内,并将伺服粘贴在盒内对面的墙上。油缸必须尽可能保持水平,现在油缸可以随着伺服电机的旋转而旋转。
是的,运用你的创造力让事情变得更好。
若你们想容纳更多的鸡蛋,那个么制造更多这样的气缸,多个伺服电机可以连接在同一个控制线引脚上。
湿度控制孔可以用铅笔穿过顶部的泡沫聚苯乙烯/热溶胶盒。如果你做了很多不必要的洞,或者如果湿度或温度逃逸太快,你可以用电子或管道胶带覆盖一些洞。
DHT11传感器是项目的核心,可以放置在孵化器(内部)的任何四个侧面的中间,但要远离灯泡或进湿管。
CPU风扇可以按照设备设计中所示的方式放置,用于空气循环。为了使空气循环正常,至少使用两个风扇将空气推向相反的方向,例如:一个CPU风扇向下推,另一个CPU风扇向上推。
大多数CPU风扇工作在12V,但在9V也很好。
这都是关于设备的。现在我们来讨论电路。
Diagarm示意图:
上述电路用于Arduino至LCD的连接。调整10K电位计以调整LCD对比度。
Arduino是这个项目的核心。设置温度和湿度有3个按钮。引脚A5控制汽化器继电器,A4控制灯泡。DHT11传感器接在引脚A0上。引脚A1, A2和A3用于按钮。
所述引脚7(非pwm引脚)与伺服电机的控制线连接;7脚可以连接多个伺服电机。有一种误解认为伺服电机只与Arduino的PWM引脚一起工作,这是不对的。它在非PWM引脚上也工作得很愉快。
将二极管1N4007反向偏置连接到继电器线圈上,以消除开关时的高电压尖峰。
电源:
以上电源可为继电器、Arduino、伺服电机(SG90)、CPU风扇提供9v、5v电源。Arduino提供直流插座供电。
电压调节器使用散热器。
这就是电力供应。
下载库DHT传感器:
https://arduino-info.wikispaces.com/file/detail/DHT-lib.zip
程序代码:
//------------------ 项目由R.GIRISH -------------------//
# include < LiquidCrystal.h >
# include < Servo.h >
# include < dht.h >
#定义DHT11 A0
const int ok = A1;
const int UP = A2;
常数int DOWN=A3;
const int bulb = A4;
const int vap = A5;
Const int rs = 12;
Const int en = 11;
Const int d4 = 5;
Const int d5 = 4;
Const int d6 = 3;
常数int d7=2;
int ack=0;
Int pos = 0;
Int SEC = 0;
int Min = 0;
整数小时=0;
int T_threshold = 25;
int H_threshold = 35;
int SET = 0;
int方向= 0;
boolean T_condition = true;
boolean H_condition = true;
液晶显示器(rs、en、d4、d5、d6、d7);
伺服电机;
dht-dht;
无效的设置()
{
pinMode(输入);
pinMode(输入);
pinMode(下降,输入);
pinMode(灯泡、输出);
pinMode (vap、输出);
数字写入(灯泡,低电平);
数字写入(vap,低);
digitalWrite(高);
digitalWrite(高);
数字写入(向下,高);
motor.attach (7);
motor.write (pos);
液晶显示器。开始(16日2);
Serial.begin (9600);
lcd.setCursor(5,0);
lcd.print(“数字”);
液晶显示器。setCursor (4,1);
lcd.print(“孵化器”);
延迟(1500);
}
void循环()
{
if (SET == 0) = 0
{
lcd.clear ();
液晶显示器。setCursor (0,0);
液晶显示器。打印(“设定温度:”);
液晶显示器。setCursor (0,1);
lcd.print (T_threshold);
液晶显示器。打印(“* C”);
而(T_condition)
{
if (digitalRead(UP) == LOW)
{
T_threshold = T_threshold + 1;
液晶显示器。setCursor (0,1);
lcd.print (T_threshold);
液晶显示器。打印(“* C”);
延迟(200);
}
if (digitalRead(DOWN) == LOW)
{
T_threshold = T_threshold - 1;
液晶显示器。setCursor (0,1);
lcd.print (T_threshold);
液晶显示器。打印(“* C”);
延迟(200);
}
if (digitalRead(ok) == LOW) / /输入数字
{
延迟(200);
T_condition = false;
}
}
lcd.clear ();
液晶显示器。setCursor (0,0);
液晶显示器。打印(“设置湿度:”);
液晶显示器。setCursor (0,1);
lcd.print (H_threshold);
lcd.print(“%”);
延迟(100);
而(h_condition)
{
if (digitalRead(UP) == LOW)
{
H_threshold = H_threshold + 1;
液晶显示器。setCursor (0,1);
lcd.print (H_threshold);
lcd.print(“%”);
延迟(100);
}
if (digitalRead(DOWN) == LOW)
{
H_阈值=H_阈值-1;
液晶显示器。setCursor (0,1);
lcd.print (H_threshold);
lcd.print(“%”);
延迟(200);
}
if (digitalRead(ok) == LOW) / /输入数字
{
延迟(100);
H_condition = false;
}
}
= 1;
}
ack = 0;
int chk = DHT.read11(DHT11);
开关(chk)
{
案例DHTLIB\u错误\u连接:
ACK = 1;
打破
}
If (ack == 0)
{
lcd.clear ();
液晶显示器。setCursor (0,0);
lcd.print(“临时:”);
lcd.print (DHT.temperature);
液晶显示器。setCursor (0,1);
lcd.打印(“湿度:”);
lcd.print (DHT.humidity);
如果(DHT)。温度> = T_threshold)
{
延迟(3000);
如果(DHT)。温度> = T_threshold)
{
数字写入(灯泡,低电平);
}
}
如果(DHT)。湿度> = H_threshold)
{
延迟(3000);
如果(DHT)。湿度> = H_threshold)
{
数字写入(vap,低);
}
}
如果(DHT)。温度< T_threshold)
{
延迟(3000);
如果(DHT)。温度< T_threshold)
{
digitalWrite(灯泡、高);
}
}
if(DHT.湿度
延迟(3000);
if(DHT.湿度
数字写入(vap,高);
}
}
SEC = SEC + 1;
If (sec == 60)
{
秒= 0;
Min = Min + 1;
}
如果(最小==60)
{
最小值= 0;
HRS = HRS + 1;
}
if (hrs == 8 && Min == 0 && sec == 0), colorred;
{
For (pos = 0;pos < = 180;pos + = 1)
{
motor.write (pos);
延迟(25);
}
}
if (hrs == 16 && Min == 0 && sec == 0), color0000ff;
{
小时= 0;
For (pos = 180;pos > = 0;pos - = 1)
{
motor.write (pos);
延迟(25);
}
}
}
If (ack == 1)
{
lcd.clear ();
液晶显示器。setCursor (0,0);
lcd.打印(“无传感器数据”);
液晶显示器。setCursor (0,1);
液晶显示器。打印(“系统停止。”);
数字写入(灯泡,低电平);
数字写入(vap,低);
}
延迟(1000);
}
//------------------ 项目由R.GIRISH -------------------//
如何操作电路:
·硬件和仪器设置完成后,接通电路。
·显示屏显示“设置温度”,按下向上或向下按钮以获得所需温度,然后按下“设置按钮”。
·现在显示屏显示“设置湿度”,按上键或下键得到想要的湿度,按“设置键”。
·启动孵化器的功能。
有关鸡蛋的温度和湿度水平,请参考互联网或咨询专业人士。
如果您对Arduino自动培养箱温度和湿度控制电路有任何具体问题,请在评论部分自由表达。您可能会收到快速回复。
是的,我配置了它。因为我想我的arduino库中没有DHT11传感器库。
好的,那么请上传图书馆。
你好先生!首先,我要感谢你这么好的工作!我真的很感谢你。我是arduino项目的初学者,当我运行你上面写的代码时,上面写着“arduino/genuino uno板错误编译”。我该怎么办,请帮帮我!!
谢谢你Samuel,你在你的Arduino IDE的工具下配置了“Board Manager”吗?
有关详细信息,请参阅本文的第一个视频:
//www.addme-blog.com/2018/10/learning-basic-arduino-programming-tutorial-for-the-newcomers.html
您好先生,首先感谢您的分享,非常好的skech,我喜欢这个项目。现在我面临的一个问题是如何更换旋转伺服电机和连接转蛋继电器
谢谢你,Sajoo,接力实际上是不需要的。你可以用伺服电机本身来转动鸡蛋。您可以配置一个机械与电机主轴,将缓慢移动鸡蛋的位置。
你好先生,
请简要说明代码内伺服电机定时器的动作,以及如何使用(如条件)计算秒、分钟和小时。
很抱歉Taraka,由于Arduino相关的电路是另外一个作者编写编译的,所以我无法提供帮助。
我不明白如何连接继电器。有5个引脚,哪个引脚用于供电,哪个引脚用于灯泡,哪个引脚用于过渡器集电极,还有两个引脚。那些大头针都用在哪里?
你能解释一下。这样,我就能很容易地理解
请查看下面的文章,它一定会帮助你了解细节:
//www.addme-blog.com/community/electronic-circuit-forum/how-a-relay-works-in-circuits-how-to-connect-it/
我读了这篇文章,但仍然没有找到正确的解决方案。你能解释一下所有电线与继电器....的连接方式吗
请
我已经更新了链接文章和接线图,请查看同一篇文章的底部。
有两个负载终端,这里你只显示了一个。
另一个应该被禁足??
继电器得到正极和负极端子的直流电压供电??
是正确的。
请告诉我…。
我很困惑
你检查过我给你的图表了吗?
这里是:
//www.addme-blog.com/wp-content/uploads/2018/06/relay-connections.png
只需用负载终端替换“负载”,用负载需要的供应源替换“供应输入”。
我看到了,但我问一下,负载有两个终端,一个是连接的,另一个是?
蓄电池两端连接继电器....
在图中你可以看到一个标有“负载”的盒子,它有两个端子,一个连接到电源,另一个连接到继电器的极点。电源可以是12V DC或220C AC,这取决于负载的规格,
继电器的线圈端子可以看到连接到晶体管的集电极和电源正极....确保在继电器线圈上连接一个二极管
你好,
良好的项目。谢谢。
你能帮我把温度和湿度设置成最小值和最大值吗。
那么,在孵化期结束之前,是否有可能在LCD上显示转弯次数?
再次感谢你的帮助。
问候
谢谢JXRTV,我们很抱歉,定制的Arduino代码是我们目前无法提供的东西,如果可能,我们可能会尝试在不久的将来更新它。
嗨GR,
你有没有可能以一定的价格设计一个定制的原理图?
嗨,Arturs,
是的,我们可以为您的Arduino定制(原理图和代码)提供解决方案,每行代码10卢比。
问候
和另一个问题
我如何添加eeprom在您的项目?
我该怎么做呢?
嗨,马丁,
您可以在此处了解EEPROM://www.addme-blog.com/introduction-eeprom-arduino/
问候
好的,我想试试。谢谢
嗨rahokos,
这里显示的一切都很好,请检查您的连接并调整显示对比度。
问候
你好,再次一个问题液晶显示器不工作arduino uno,谢谢你
您好,请问您用的是什么类型的继电器?
本条末尾所示的普通400欧姆型继电器
//www.addme-blog.com/how-a-relay-works-in-circuits-how-to-connect-it/
起初
我想向你表达我的感谢和感激
第二,让我说我有dht11,可以做任何事情,但不给我传感器数据。
问题是什么,虽然敏感的工作在其他程序
在地面和热的情况下,推荐使用明显的四肢,数据推荐使用2号
非常感谢,我们很乐意帮助您。GR先生将很快回复您
嗨,哈立德
请检查DHT11传感器的销图,有DHT11带有不同的销钉,如有必要,连接拉下电阻。
问候
先生,我什么时候上传程序
我面临一些问题
错误:' dht '没有命名类型
请帮忙解决这个问题,提前感谢
GR先生很快就会回复你......
嗨,里亚斯,
您必须下载库文件并添加到编译器中。
链接:https://drive.google.com/open?id=1aWuF115pMaZbySQS2CIHBxJiPSM1ezhE
问候
DHT库链接断开
告诉我这
Arduino:1.8.5(Windows 8.1),图版:“Arduino/Genuino”
C:\Users\ghost\Desktop\ sketch_mar26a \ sketch_mar26a。没有这样的文件或目录
# include
^
编译终止。
退出状态1
单板Arduino/Genuino Uno编译错误。
这份报告将提供更多的信息
“在编译期间显示详细输出”
选项启用在文件->首选项。
嗨马丁,
试试这个链接:https://drive.google.com/open?id=1aWuF115pMaZbySQS2CIHBxJiPSM1ezhE
问候
非常感谢你
上帝保佑你
嗨标迪
我请求您使用原程序格式的Arduino项目文件
因为我不知道距离}{}
你好,马汀,我会把这个问题转交给GR先生,他会很快回复你的。
嗨,早课,
我不明白“我不知道距离}{}”。
将代码复制到IDE并保存在桌面上,您将得到.ino文件。
问候
先生,我正面临着这个代码的问题
这份报告将提供更多的信息
“在编译期间显示详细输出”
在文件>首选项中启用。
Arduino:1.0.6(Windows NT(未知)),板:“Arduino Uno”
Sketch_mar26b:30:错误:' dht '没有命名类型
sketch_mar26b。在void loop()函数中:
Sketch_mar26b:121: error: expected primary-expression before '。“令牌
sketch_mar26b:124:错误:' DHTLIB_ERROR_CONNECT '未在此范围内声明
Sketch_mar26b:133: error: expected primary-expression before '。“令牌
草图\u mar26b:136:错误:应在“.”标记之前使用主表达式
Sketch_mar26b:137: error: expected primary-expression before '。“令牌
草图\u mar26b:140:错误:应在“.”标记之前使用主表达式
草图\u mar26b:145:错误:在“.”标记之前应该有主表达式
Sketch_mar26b:148: error: expected primary-expression before '。“令牌
Sketch_mar26b:153: error: expected primary-expression before '。“令牌
Sketch_mar26b:156: error: expected primary-expression before '。“令牌
Sketch_mar26b:161: error: expected primary-expression before '。“令牌
Sketch_mar26b:164:错误:预期主表达式之前'。“令牌
我将把这个问题转给GR先生,请他答复。
请把有关这件事的资料发给我,谢谢你的帮助
这是非常好的代码,但我注意到一件事,在这段代码中,每次当我打开电源时,我需要设置温度和湿度的值。
我想问你求和的事情,如果我在上电后5分钟内没有设置温度和湿度的值,它将采用默认值。你能做到吗?
干得好,坚持下去……
谢谢你!
谢谢nitin,我很高兴你喜欢它…我会把这个问题转发给Mr.GR,他会尽快回复你…谢谢发帖
嗨,尼,
在潜伏期不要切断电路,如果经常断电,可以使用便宜的电脑UPS。
问候
但有时会发生这样的情况,停电的瞬间如果没有人可以设定温度和湿度,那么这个时候就有用了。我想是这样的,
1、如何将LCD连接到arduino uno上
2、你用的arduino的哪个型号
谢谢你的支持
我可以用arduino uno做孵卵器上的液晶显示吗
是的,你可以…
灯泡的电压是多少
电源输入电压