基于Arduino的自动饮水机设计与研究

2020-03-30 03:19朱俊
电脑知识与技术 2020年1期
关键词:执行器单片机传感器

朱俊

摘要:Arduino系统是建立在c类语言基础上的,它将AVR单片机中的一些参数设置函数化,用户可以轻松进行设计和开发。该文介绍了基于Arduino的自动饮水机系统,该系统利用超声波传感器进行监测,从而判断水杯离饮水机的距离,再根据距离将相应信号传递Arduino控制板,由Arduino控制板将信号传递给场效应管,进而控制电磁阀的阀门开关,达到自动流水和自动停水的目的,该系统具有一定的创新和研究价值。

关键词:Arduino;传感器;单片机;执行器

中图分类号:TP393 文献标识码:A

文章编号:1009-3044(2020)01-0279-03

1概述

地球上的淡水资源极其缺乏,陆地上的淡水只占地球储水量的2.8%。人类生活所使用的淡水资源主要来自江河、淡水湖和地下水,而这些水资源占地球上的淡水储量的0.34%。大多数国家和地区都缺乏饮用水,同时,随着社会的发展,很多淡水资源正受到化工业、造纸等工业和生活垃圾等各类污染的影响,更加剧了淡水资源的缺乏,人类面临着越来越严峻的挑战。

生活中,如果水龙头每秒滴一滴水,那么一年就会浪费1.5吨水。如果采用智能水龙头替换所有手动水龙头,当水杯接近饮水机,饮水机就自动放满水,拿走水杯,饮水机自动停止放水。这样不仅可以节约用水,还可以避免用脏手操作水龙头。2Arduino

Arduino是一系列基于单片机的人机互动产品开发平台,它的最大的优点是具备了模块化能力,用户可以用类似搭积木的方式,将硬件进行系统集成。Arduino具有开放的硬件平台,用户可以从网络上获取PCB的设计,进行升级改进。

Arduino的硬件系统主要由几大部件构成,核心是由AVR单片机作为控制器的电路板,AVR机采用的是精简指令集,指令长度单位使用字,它将组成指令的两个基本单位操作数和操作码集成在一个字当中,所以减少了取指令的时间,并且它可以预取指令,并实现流水作业,因此执行指令速度很快。Ardui-no具有种类很多的模块,这些模块简单易用。

Arduino的软件开发平台采用类c语言的高级程序语言,用户容易快速入门掌握,用户可以从网络上下载库文件直接使用,这样可以大大缩短软件开发周期。

由于Arduino有着以上的优点,普通用户不需要掌握专业的理论知识,不需要掌握编程技术,也能设计和制造出想要的系统。

2.1基本结构

(1)Arduino控制板

Arduino主控板的型号有很多,如Arduino Uno等。Arduino扩展板的型号同样也有很多,如Arduino GSM Shield等Arduino的控制板采用AVR单片机,本系统采用的版本是Arduino Uno,這个版本与其他版本不同的地方在于它没有使用FTDI USB串行驱动芯片,而是把Atmega8U2设置为USB设备,这样当主控板与计算机相连时,主控板就会作为一个USB设备显示,而且这样生产成本降低了。Arduino Uno和其他的单片机控制板原理相同,但因为了大量的开源软件的支持,使其得到了广泛的应用和推广。

(2)输入模块

Arduino的输入模块主要指的是与外部设备进行信号传递的一种装置,用于把原始信息和处理的指令输入到系统中,可以是数值型的数据,也可以是如温度、湿度、距离、烟雾、声音等非数值型的数据。通常各类传感器是属于输入模块。本系统使用的传感器为超声波传感器,超声波传感器可以将超声波信号转换成电信号。

(3)输出模块

输出模块是模块与外部的执行器交互的一种装置,用于把控制板的信号转换成相应的动作执行,通常执行器是属于输出模块。

执行器是一些应用系统作为输出的一种常用部分,它的作用通常是接收由控制器送来的控制信号,从而通过改变被控介质的大小,将被控变量维持在一定的范围。

执行器按其能源形式主要分为电动、气动、液动三大类。电动执行器的能源取用方便,信号传递迅速,但结构复杂、防爆性能差。气动执行器利用压缩的空气作为动力,稳定、适用广泛。液动执行器的特点是输出推力很大,主要用在需要推力大的环境下。

本系统的执行部分通过金属氧化物半导体场效应晶体管来控制开关旋转,从而控制水流。

2.2软件平台

Arduino编程语言是类C/C++语言,因为c语言有着广泛的应用基础,所以Arduino同样有着广泛的使用群体,Arduino将AVR单片机相关的参数设计成了对应函数,这样普通用户不需要太多的编程基础,通过调用已有函数,也能够进行软件设计。

Arduino IDE具有跨平台的优点,既可以在Windows上运行也可以在Linux等操作系统上运行,它具有简单清晰、开放性、发展快等特点。Arduino IDE对于初学者来说,极易掌握,同时有着足够的灵活性。

2.3 Arduino软件开发环境

Arduin01.8.5程序界面如图1所示,程序界面友好,菜单项精简易操作,常用功能放在菜单下的常用工具栏处,与普通的程序的界面没有太大的区别,即使是初学者不需要太多的基础,也能进行软件开发设计工作,并且调试起来也很方便,极大地方便了项目的开发。

3硬件设计

本项目所需的材料主要有Arduino Uno控制板、电磁阀、超声波传感器、场效应管、电阻、面包板、各类导线等。

3.1 Arduino系统开发板

Arduino UNO的技术参数如表1。

3.2工作原理

通过超声波传感器来检查饮水机前是否有物体,如果有物体,由电磁阀控制饮水机的出水口,当通电时,电磁阀打开,饮用水流出。当断电时,电磁阀关闭,饮用水停止流水。程序将始终监测是否有物体放置在超声波传感器附近,如果是,则电磁阀打开,并一直监测是否有物体移走,如果监测到有物体移走,将触发,电磁阀随即关闭,饮水机停止流出水。

本项目使用的电磁阀压强是0-0.8Mpa,功率为6.5W,电压为直流12V,额定电流为700mA,最大额定电流为1.2A。要启动电磁阀需要使用场效应管。本项目所使用的场效应管是IRF540N N沟道MOSFET。它有3个引脚,分别是栅极、源极和漏极。电磁阀的正极端子由Arduino的Vin引脚供电。使用12V适配器为Arduino供电,Vin引脚将输出12V,可用于控制电磁阀。电磁阀的负极端子通过MOSFET的源极和漏极引脚连接到地。因此,只有在MOSFET导通时才会为电磁阀供电。MOSFET的栅极引脚用于打开或关闭它。如果栅极引脚接地,它将保持关闭状态,如果施加栅极电压,它将导通。为了在没有电压施加到栅极引脚时保持MOSFET关断,栅极引脚通过10k电阻接地。Arduino引脚12用于打开或关闭MOSFET,因此D12引脚通过1K电阻连接到栅极引脚。使用1K电阻的目的是用于限流。

超声波传感器使用的是HC-SR04,由Arduino的+5V和接地引脚供电。Echo和Trigger引脚分别连接到引脚8和引脚9。通过对Arduino进行编程,利用超声波传感器测量距离,并在检测到物体时打开MOSFET。

4软件设计

使用HCSR-04超聲波传感器来测量物体前方的距离。当距离<10cm时,打开MOSFET场效应管,当距离≥10cm时,关闭MOSFET场效应管。

为了避免造成重复定义,考虑到一些变量用得多,使用宏定义使算法精练。使用超声波传感器的触发和回声引脚,MOSFET栅极引脚和LED作为Arduino的I/O。在连接电路图时,将Echo和Trigger引脚分别连接到第8和第9个数字引脚。然后MOSFET引脚连接到引脚12,默认情况下板载LED连接到引脚13。使用以下代码进行宏定义。

#definetrigger9

#define echo 8

#defineLED 13

#define MOSFET12

在setup函数中,对输入和输出进行声明。在硬件中,只有超声波传感器的Echo引脚是输入引脚,其余都是输出引脚。可以使用Arduino的pinMode函数来指定如下所示。

在主loop函数内部,调用了名为measure_distance(1的函数。此函数功能使用超声波传感器测量物体前方的距离,并将值更新为变量“distance”。要使用超声波传感器测量距离,必须首先将触发引脚保持低电平两微秒,然后保持高电平持续10微秒并再次保持低电平持续2微秒。这将向空气中发出超声波信号的声波,它将被前方的物体反射,回声引脚将采集由它反射的信号。然后使用时间值来计算传感器前方物体的距离。计算出距离后,使用if语句比较距离值,如果距离<10cm,将MOSFET和LED变为高电平,在else语句中将MOSFET和LED设置为低电平。程序如下:

按照电路中所示进行连接,并将程序写入Arduino控制板。将电磁阀连接到进水口,并使用12V适配器将电路连接到Ar-duino板的DC插孔。确保板载LED指示灯熄灭,这样可确保电磁阀也关闭。

将超声波传感器直接放置在电磁阀下方,这样当水杯放置在电磁阀下方时,它会直接与超声波传感器相对。超声波传感器将探测到物体后,MOSFET和LED一起打开,电磁阀执行打开阀门操作,饮用水流出来。

当移除水杯后,超声波传感器触发,信号传递给Arduino控制板,控制板将电路断开,电磁阀闭合,饮用水停止流出。

5结束语

本文研究了一套基于Arduino的自动饮水机系统,它利用超声波传感器监测到靠近饮水机的水杯,从而将信号传递Ar-duino控制板,由控制板将执行数据通过场效应管,将信号传递给电磁阀,由电磁阀开启阀门控制饮水机流出水。当水杯离开饮水机时,超声波传器监测到水杯离开饮水机,将信号传递给控制板,由控制板再将执行的数据通过场效应管,将信号传递给电磁阀,电磁阀的阀门自动闭合,饮水机不再流出水。实验证明,基于Arduino的自动饮水机系统设计合理,具有一定的实用价值。

猜你喜欢
执行器单片机传感器
康奈尔大学制造出可拉伸传感器
简述传感器在物联网中的应用
基于单片机的SPWM控制逆变器的设计与实现
“传感器新闻”会带来什么
基于单片机的层次渐变暖灯的研究
基于单片机的便捷式LCF测量仪
跟踪导练(三)2
双级执行器系统的离散滑模控制
飞机装配预连接紧固件自动化安装末端执行器设计
考虑执行器饱和的改进无模型自适应控制