基于Arduino构建一个自动饮水机

描述

大约71%的地球被水覆盖,但可悲的是,只有2.5%是饮用水。随着人口、污染和气候变化的增加,预计到2025年,我们将经历长期的水资源短缺。一方面,民族和国家之间已经存在分享河水的小争议,另一方面,由于我们的疏忽,我们作为人类浪费了大量的饮用水。

它第一次可能看起来不大,但是如果你的水龙头每秒滴一滴水,你只需要大约五个小时就可以浪费一加仑水,这足以让普通人生存两天。那么可以做些什么来阻止这种情况呢?与往常一样,答案在于技术的改进。如果我们将所有手动水龙头替换为一个自动打开和关闭的智能水龙头,我们不仅可以节约用水,还可以拥有更健康的生活方式,因为我们不必用脏手操作水龙头。因此,在这个项目中,我们将使用Arduino构建一个自动饮水机和一个电磁阀,当玻璃杯靠近它时,它可以自动给你水。听起来很酷吧!所以让我们建立一个...

所需材料

电磁阀

Arduino Uno (任何版本)

HCSR04 – 超声波传感器

IRF540 场效应管

1k 和 10k 电阻器

面包板

连接线

工作理念

自动饮水机背后的概念非常简单。我们将使用HCSR04 超声波传感器来检查是否有任何物体,使得玻璃被放置在分配器之前。电磁阀将用于控制水的流动,即通电时水将流出,当断电时,水将停止。因此,我们将编写一个Arduino程序,该程序始终检查水龙头附近是否放置了任何物体,如果是,则电磁阀将打开并等待直到对象被移除,一旦物体被移除,电磁阀将自动关闭,从而关闭供水。

电路图

基于 Arduino 的饮水机的完整电路图如下所示

Arduino

本项目使用的电磁阀为12V阀,最大额定电流为1.2A,连续额定电流为700mA。也就是说,当阀门打开时,它将消耗大约 700mA 来保持阀门打开。众所周知,Arduino 是一种以 5V 工作的开发板,因此我们需要一个开关驱动器电路来打开和关闭电磁阀。

本项目中使用的开关器件是IRF540N N 沟道 MOSFET。它分别具有引脚 1 的 3 个引脚门、源极和漏极。如电路图所示,螺线管的正极端子由Arduino的Vin引脚供电。因为我们将使用 12V 适配器为 Arduino 供电,因此 VIN 引脚将输出 12V,可用于控制电磁阀。电磁阀的负极端子通过 MOSFET 的源极和漏极引脚接地。因此,只有当 MOSFET 导通时,电磁阀才会通电。

MOSFET 的栅极引脚用于打开或关闭它。如果栅极引脚接地,它将保持关闭状态,如果施加栅极电压,它将接通。为了在栅极引脚未施加电压时保持 MOSFET 关断,栅极引脚通过一个 10k 电阻器拉至地。Arduino引脚12用于打开或关闭MOSFET,因此D12引脚通过1K电阻连接到栅极引脚。该 1K 电阻器用于限流目的。

超声波传感器由Arduino的+5V和接地引脚供电。回声和触发引脚分别连接到引脚 8 和引脚 9。然后,我们可以对Arduino进行编程,以使用超声波传感器来测量距离,并在检测到物体时打开MOSFET。整个电路很简单,因此可以很容易地构建在面包板的顶部。建立连接后,我的在下面看起来像这样。

Arduino

对 Arduino 板进行编程

对于这个项目,我们必须编写一个程序,该程序使用 HCSR-04 超声波传感器来测量它前面物体的距离。当距离小于10cm时,我们必须打开MOSFET,否则我们必须关闭MOSFET。我们还将使用连接到引脚 13 的板载 LED,并将其与 MOSFET 一起切换,以便确保 MOSFET 是处于导通还是关断状态。本页末尾给出了执行相同操作的完整程序。在下面,我通过将程序分解为有意义的小片段来解释该程序。

程序从宏定义开始。我们有超声波传感器的触发和回波引脚,MOSFET栅极引脚和LED作为Arduino的I / O。因此,我们已经定义了这些将连接到哪个引脚。在我们的硬件中,我们已将回声和触发引脚连接到 8 和 9千分别是数字引脚。然后,MOSFET 引脚连接到引脚 12,板载 LED 默认连接到引脚 13。我们使用以下行定义相同

#define trigger 9

#define echo 8

#define LED 13

#define MOSFET 12

在设置函数中,我们声明哪些引脚是输入的,哪些是输出的。在我们的硬件中,只有超声波(US)传感器的回波引脚是输入引脚,其余都是输出引脚。所以我们使用 Arduino 的 pinMode 函数来指定如下所示的相同内容

pinMode(trigger,OUTPUT);

pinMode(echo,INPUT);

pinMode(LED,OUTPUT);

pinMode(MOSFET,OUTPUT);

在主循环函数中,我们调用名为 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;                                            

计算距离后,我们必须使用简单的if语句比较距离值,如果该值小于10cm,则使MOSFET和LED变高,在下面的其他语句中,我们使MOSFET和LED变低。执行相同操作的程序如下所示。

if(distance<10)

{

digitalWrite(LED,HIGH);digitalWrite(MOSFET,HIGH);

}

else

{

digitalWrite(LED,LOW);digitalWrite(MOSFET,LOW);

}

自动饮水机的工作原理

按照电路中所示进行连接,并将以下给定的程序上传到Arduino板中。进行一些简单的安排,将电磁阀连接到进水口,并使用 12V 适配器为 Arduino 板的直流插孔为电路供电。确保板载 LED 已关闭,这可确保电磁阀也熄灭。我为演示该项目所做的设置如下所示

Arduino

如您所见,我将超声波传感器直接放置在电磁阀下方,这样当玻璃/滚筒放置在电磁阀下方时,它与超声波传感器直接相对。该物体将由超声波传感器感应,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;

}

 


 

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

全部0条评论

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

×
20
完善资料,
赚取积分