自动除湿机污水泵
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
必要的工具和机器
| ||||
| ||||
| ||||
|
关于这个项目
想法:
今年 12 月,我回到密苏里州与家人共度假期。我完全不知道圣诞节送什么给我的姻亲,我空手而归。所以当我坐在那里参观时,他们碰巧问我是否可以跑到地下室清空除湿机。通常情况下,除湿机有一个出口或喷嘴来连接花园软管,这样冷凝水就可以流入排水管。不幸的是,他们的模型没有,所以他们必须每天至少两次上下楼梯到地下室。尤里卡!我意识到我可以为他们的圣诞礼物做些什么……一个自动除湿机污水泵!!!所以我跑到 RadioShack,抓起所有的零件开始工作!
问题陈述:
在水位高到足以关闭除湿机之前,我需要排空水箱,等待它重新注满并无限重复。
解决方案:
当水位升至上限阈值以上时打开泵,然后在水位低于下限阈值时禁用泵。
现在,我如何建立阈值?水(蒸馏水除外)具有导电能力。从理论上讲,我可以将两对电线绞成不同的长度,并根据任一对之间的短路来确定是否存在水。不幸的是,水是一种糟糕的导体,因此会出现电压损失,需要协调以测量短路的存在。幸运的是,我们有晶体管可以做到这一点,更重要的是,我们有一个达林顿对,这是双倍剂量!
图>注意:晶体管由三部分组成,集电极(输入)、发射极(输出)和基极(阀门)。当电流施加到基极时,它会降低集电极和发射极之间的电阻,并允许电流从集电极流向发射极。施加到基极的电流越大,从集电极流向发射极的电流就越多,从而产生所谓的晶体管电流增益或放大系数。然后,当你将它们加倍,并将输出从一个晶体管的发射极引导到另一个晶体管的基极时,Viola!,你会得到一个达林顿对。
现在我有一种方法可以检测水的存在和深度,我需要一种打开和关闭泵的方法。泵是一个简单的设备,它只需插入墙壁即可运行。我需要一种方法来有效地插入和拔出泵。继电器提供从逻辑电平电压和电流切换高电压和电流的能力。我可以将继电器与延长线串联,并将其用作逻辑驱动电源开关。
最后,我需要逻辑。这很简单 - Arduino UNO。它很便宜,随时可用,并且可以轻松编程以读取水传感器并触发继电器。
http://www.learningaboutelectronics.com/Articles/What-is-hfe-of-a-transistor
执行:
我的计划已经到位,现在是我的解决方案的试验板!
我首先连接了水检测器电路。首先,将进入水中的电线连接到 5V0。接下来,连接晶体管。将集电极连接到 5V0,将底座连接到将从水中返回的电线,将发射器连接到 Arduino 的引脚 2 和 3。最后,添加状态 LED。将 LED 的阳极(正极或长脚)连接到晶体管的基极。然后,将LED的阴极(负极或短腿)连接到100Ω电阻的一端,并将电阻的另一端接地。
注意:一定要拉出数据表并确认您正确连接了腿。第一次尝试时,我最终将我的接线向后;免得自己头疼。;-)
图>接下来,我测试了我的继电器电路。 “线圈”实际上是开关并且是双向的,因此将一端接地,另一端连接到引脚 8。您想要将要切换到 COM(公共)引脚并从 NO 输出的更高电压拼接起来继电器上的(常开)引脚。
现在是时候将它焊接到原型板上并为 Arduino 制作屏蔽了!
图> 图> 图>要完成控制器,请添加项目框以保护新的泵控制器。我用金属锉磨掉了盒子,刚好足以让电缆适合。延长线的插头端有一个天然的套环,因此可以很好地保护屏蔽层不被电线猛拉。然而,另一端是脆弱的。正如你在下面看到的,我用了一条扎带来保护另一端不被拉出。
结束:
最后一步是添加泵。将水检测器固定到一个位置,即下检测器位于泵的进水口上方,而上检测器位于加湿器的关闭开关下方。 警告:与泵吸入口相比,下检测器的位置非常重要。如果长时间吸入空气而不是水,泵将被损坏。 最后,将软管路由到需要去的任何地方,甚至是上坡!
代码
- SimplePumpControl.ino
SimplePumpControl.inoArduino
这是您将应用于 Arduino 以控制为您的泵指定的出口的基本草图。/* 由 Zachary J. Fields 创建并拥有版权。在 MIT 许可证 (MIT) 下作为开源提供。 */const int ENABLE_PIN =2;const int FULL_PIN =3;const int RELAY_115V_30A_PIN =8;void setup() { pinMode(ENABLE_PIN, INPUT); pinMode(FULL_PIN,输入); pinMode(RELAY_115V_30A_PIN, OUTPUT);}void loop() { if ( digitalRead(FULL_PIN) ) { digitalWrite(RELAY_115V_30A_PIN, HIGH); } else if (!digitalRead(ENABLE_PIN)) { digitalWrite(RELAY_115V_30A_PIN, LOW); }}/* 由 Zachary J. Fields 创建并拥有版权。在 MIT 许可证 (MIT) 下作为开源提供。 */
示意图
这是原理图的面包板版本,因此您可以在将其焊接到 Adafruit Proto Shield 之前进行原型设计和测试制造工艺