基于Arduino开发板和电磁阀的自动饮水机制作

大约71%的地表都被水覆盖,但遗憾的是只有2.5%的水是可以饮用。随着人口增加、污染严重以及气候变化,预计到2025年我们将遇到长期的水资源短缺。一方面,各国和各州之间就共享河水已经发生了轻微的争议,另一方面,由于我们的疏忽,人类浪费了大量的饮用水。
刚开始时可能问题不大,但如果你的水龙头每秒滴一滴水,你只需要花费大约五个小时就可以浪费一加仑水,这对普通人来说是足够的水来生存两个天。那么可以做些什么来阻止这种情况呢?一如既往,答案就在于技术的进步。如果我们用自动打开和关闭的智能水龙头替换所有手动水龙头,我们不仅可以节约用水,还可以拥有更健康的生活方式,因为我们不需要用脏手操作水龙头。因此,在这个项目中,我们将使用arduino开发板和电磁阀制作一个自动饮水机,当杯子放在它附近时,它可以自动放满水。听起来很酷吧!那么让我们建立一个......
所需的材料
●    电磁阀
●    arduino uno开发板
●    hcsr04 - 超声波传感器
●    mosfet场效应管irf540
●    1k和10k电阻
●    面包板
●    连接导线
工作原理
自动饮水机背后的概念非常简单。我们将使用hcsr04超声波传感器检查饮水机前是否有物体,如玻璃杯。电磁阀将用于控制水流,当通电时水将流出,当断电时水将停止。因此我们将编写一个arduino程序,它始终检查是否有物体放置在水龙头附近,如果是,则电磁阀将打开并等待物体被移除,一旦物体被移除,电磁阀将自动关闭,从而关闭供水。
电路原理图
基于arduino的饮水机的完整电路图如下所示
本项目使用的电磁阀是12v阀门,最大额定电流为1.2a,额定电流为700ma。也就是说,当阀门打开时,它会消耗大约700ma的电流来保持阀门开启。我们知道arduino开发板是一个以5v工作的开发板,因此我们需要一个开关驱动电路,让电磁阀开启和关闭它。
该项目中使用的开关器件是irf540n n沟道mosfet。它有3个引脚,分别是栅极、源极和漏极。如电路图所示,电磁阀的正极端子由arduino的vin引脚供电。因为我们将使用12v适配器为arduino供电,因此vin引脚将输出12v,可用于控制电磁阀。电磁阀的负极端子通过mosfet的源极和漏极引脚连接到地。因此,只有在mosfet导通时才会为电磁阀供电。
mosfet的栅极引脚用于打开或关闭它。如果栅极引脚接地,它将保持关闭状态,如果施加栅极电压,它将导通。为了在没有电压施加到栅极引脚时保持mosfet关断,栅极引脚通过10k电阻接地。 arduino引脚12用于打开或关闭mosfet,因此d12引脚通过1k电阻连接到栅极引脚。该1k电阻用于限流目的。
超声波传感器由arduino的+ 5v和接地引脚供电。 echo和trigger引脚分别连接到引脚8和引脚9。然后我们可以对arduino进行编程,使用超声波传感器测量距离,并在检测到物体时打开mosfet。整个电路很简单,因此可以很容易地在面包板上构建。在建立连接后,看起来像下面这样的东西。
编程arduino开发板
对于这个项目,我们必须编写一个程序,该程序使用hcsr-04超声波传感器来测量物体前方的距离。当距离小于10cm时,我们必须打开mosfet,否则我们必须关闭mosfet。我们还将使用连接到引脚13的板载led并将其与mosfet一起切换,以便我们可以确保mosfet是处于开启还是关闭状态。接下来,我将其分解为小的有意义的片段来解释该程序。
该程序以宏定义开始。我们有超声波传感器的触发和回声引脚,mosfet栅极引脚和led作为我们arduino的i / o。所以我们已经定义了它们将连接到哪个引脚。在我们的硬件中,我们将echo和trigger引脚分别连接到第8和第9个数字引脚。然后mosfet引脚连接到引脚12,默认情况下板载led连接到引脚13。我们使用以下代码定义引脚
#define trigger 9
#define echo 8
#define led 13
#define mosfet 12
在setup函数中,我们声明哪些引脚是输入的,哪些是输出的。在我们的硬件中,只有超声波传感器的echo引脚是输入引脚,其余都是输出引脚。因此我们使用arduino的pinmode函数来指定如下所示
pinmode(trigger,output);
pinmode(echo,input);
pinmode(led,output);
pinmode(mosfet,output);
在主loop函数内部,我们调用了名为measure_distance()的函数。此功能使用超声波传感器测量物体前方的距离,并将值更新为变量“distance”。要使用超声波传感器测量距离,必须首先将触发引脚保持低电平两微秒,然后保持高电平持续10微秒并再次保持低电平持续2微秒。这将向空气中发出超声波信号的声波,它将被前方的物体反射,回声引脚将拾取由它反射的信号。然后我们使用时间值来计算传感器前方物体的距离。计算距离的程序如下
digitalwrite(trigger,low);
delaymicroseconds(2);
digitalwrite(trigger,high);
delaymicroseconds(10);
digitalwrite(trigger,low);
delaymicroseconds(2);
time=pulsein(echo,high);
distance=time*340/20000;
一旦计算出距离,我们就必须使用简单的if语句比较距离值,如果值小于10cm,我们会使mosfet和led变为高电平,在紧接着的else语句中我们将mosfet和led设置为低电平。程序如下所示。
if(distance<10)
{
digitalwrite(led,high);digitalwrite(mosfet,high);
}
else
{
digitalwrite(led,low);digitalwrite(mosfet,low);
}
自动饮水机的工作过程
按照电路中所示进行连接,并将下面给出的程序上传到arduino开发板。做一些简单的安装,将电磁阀连接到进水口,并使用12v适配器将电路连接到arduino板的dc插孔。确保板载led指示灯熄灭,这样可确保电磁阀也关闭。
如您所见,我已将超声波传感器直接放置在电磁阀下方,这样当玻璃杯放置在电磁阀下方时,它会直接与超声波传感器相对。超声波传感器将探测到这个物体,并且mosfet和led一起打开,从而使电磁阀打开,水流下来。
同样,当移除玻璃杯后,超声波传感器告诉arduino开发板,它前面没有玻璃杯,因此arduino关闭了阀门。如果您对此工作过程有任何疑问,请在本帖下面进行回复。
注意:不同的电磁阀有不同的工作电压和额定电流,确保电磁阀工作在12v,最大功耗不超过1.5a。
代码
本篇文章使用的完整代码如下所示:
#define trigger 9
#define echo 8
#define led 13
#define mosfet 12
float time=0,distance=0;
void setup()
{
serial.begin(9600);
pinmode(trigger,output);
pinmode(echo,input);
pinmode(led,output);
pinmode(mosfet,output);
delay(2000);
}
void loop()
{
measure_distance();
if(distance<10)
{
digitalwrite(led,high);digitalwrite(mosfet,high);
}
else
{
digitalwrite(led,low);digitalwrite(mosfet,low);
}
delay(500);
}
void measure_distance()
{
digitalwrite(trigger,low);
delaymicroseconds(2);
digitalwrite(trigger,high);
delaymicroseconds(10);
digitalwrite(trigger,low);
delaymicroseconds(2);
time=pulsein(echo,high);
distance=time*340/20000;
}


2019年3月我国共向欧盟出口LED照明产品1.99亿美元
电力行业的“晴雨表”
纯蒸汽质量检测仪,蒸汽品质测试系统
化合物半导体光电及功率器件的仿真设计、数理模型与制备
三部委:小于65nm逻辑电路等可免征进口关税
基于Arduino开发板和电磁阀的自动饮水机制作
中芯国际的14nm产线在国际上能否一战
微软:Win10 PC用户中80%已升级到一周年创意者更新版
赛睿发布两款新游戏耳机 响应频率可达40000Hz
计客使用nRF51系列低功耗蓝牙系统级芯片,为其连网的超级魔方i3提供无线连接功能
可满足老人生命体征监测的养老院人员定位系统
基于模型的单目视觉定位的各种特征定位方法的研究现状
对芯片缺货涨价危机的一些个人观点和建议
“科技界春晚”要逃离帝都,99%工程师都震惊了!
winUSB设备的开发方法
我们能从Linux系统上学到什么?谈谈linux的四个维度
家用机器人市场前景广阔 家用机器人体系架构和零部件推荐
视觉AI微处理器Z/V系列的实施示例
NAND供大于求 价格将会进一步下降
GeoMx DSP应用领域