2024年4月9日发(作者:)
ISSN1009-3044
ComputerKnowledgeand
年
Technology
第16卷第1期(20201月)
电脑知识
与技术
Vol.16,No.1,January.2020
E-mail:kfyj@
ComputerKnowledgeandTechnology
电脑知识
与技术
http://
Tel:+86-551-6569
基于Arduino的自动饮水机设计与研究
朱俊
(安徽水利水电职业技术学院电子信息工程学院,安徽合肥231603)
摘要:Arduino系统是建立在C类语言基础上的,它将AVR单片机中的一些参数设置函数化,用户可以轻松进行设计和开
发。该文介绍了基于Arduino的自动饮水机系统,该系统利用超声波传感器进行监测,从而判断水杯离饮水机的距离,再
根据距离将相应信号传递给Arduino控制板,由Arduino控制板将信号传递给场效应管,进而控制电磁阀的阀门开关,达到
自动流水和自动停水的目的,该系统具有一定的创新和研究价值。
关键词:Arduino;传感器;单片机;执行器
中图分类号:TP393文献标识码:A
开放科学(资源服务)标识码(OSID):
文章编号:1009-3044(2020)01-0279-03
DesignandResearchofAutomaticDrinkingWaterMachineBasedonArduino
ZHUJun
(AnhuiTechnicalCollegeofWaterResourcesandHydroelectricPower,Hefei231603,China)
Abstract:andesignanddevelopiteas⁃
temusesultrasonicsensorstomonitorthedis⁃
ingtothedistance,thecorrespondingsignalistransmittedtotheArduinocontrol
nalistransmittedtothefieldeffecttubebytheArduinocontrolboard,andthenthevalveswitchofthesolenoidvalveis
purposeofautomaticflowingwaterandautomaticshutdown,thesystemhascertaininnovationandresearchvalue.
Keywords:Arduino;sensor;single-chipmicrocomputer;actuator
1概述
地球上的淡水资源极其缺乏,陆地上的淡水只占地球储水
量的2.8%。人类生活所使用的淡水资源主要来自江河、淡水湖
和地下水,而这些水资源占地球上的淡水储量的0.34%。大多数
国家和地区都缺乏饮用水,同时,随着社会的发展,很多淡水资
源正受到化工业、造纸等工业和生活垃圾等各类污染的影响,更
[1]
加剧了淡水资源的缺乏,人类面临着越来越严峻的挑战。
生活中,如果水龙头每秒滴一滴水,那么一年就会浪费1.5
吨水。如果采用智能水龙头替换所有手动水龙头,当水杯接近
饮水机,饮水机就自动放满水,拿走水杯,饮水机自动停止放
水。这样不仅可以节约用水,还可以避免用脏手操作水龙头。
令长度单位使用字,它将组成指令的两个基本单位操作数和操
作码集成在一个字当中,所以减少了取指令的时间,并且它可
以预取指令,并实现流水作业,因此执行指令速度很快。Ardui⁃
no具有种类很多的模块,这些模块简单易用
[2]
。
Arduino的软件开发平台采用类C语言的高级程序语言,用
户容易快速入门掌握,用户可以从网络上下载库文件直接使
用,这样可以大大缩短软件开发周期。
由于Arduino有着以上的优点,普通用户不需要掌握专业的
理论知识,不需要掌握编程技术,也能设计和制造出想要的系统。
2.1基本结构
2Arduino
Arduino是一系列基于单片机的人机互动产品开发平台,
它的最大的优点是具备了模块化能力,用户可以用类似搭积木
的方式,将硬件进行系统集成。Arduino具有开放的硬件平台,
用户可以从网络上获取PCB的设计,进行升级改进。
Arduino的硬件系统主要由几大部件构成,核心是由AVR
单片机作为控制器的电路板,AVR机采用的是精简指令集,指
(1)Arduino控制板
Arduino主控板的型号有很多,如ArduinoUno等。Arduino
扩展板的型号同样也有很多,如ArduinoGSMShield等Arduino
的控制板采用AVR单片机,本系统采用的版本是ArduinoUno,
这个版本与其他版本不同的地方在于它没有使用FTDIUSB串
行驱动芯片,而是把Atmega8U2设置为USB设备,这样当主控
板与计算机相连时,主控板就会作为一个USB设备显示,而且
这样生产成本降低了
[3]
。ArduinoUno和其他的单片机控制板
收稿日期:2019-09-10
基金项目:安徽省高校自然科学重点研究项目(KJ2017A599,KJ2018A0944);安徽省高校优秀拔尖人才培育项目(gxgnfx2019133);安
徽省高校质量工程项目(2018mooc305);安徽水利水电职业技术学院教科研项目(2016jky12)
作者简介:朱俊(1980—),男,安徽霍邱人,安徽水利水电职业技术学院副教授,硕士,研究方向:信息安全。
本栏目责任编辑:梁书
计算机工程应用技术
279
ComputerKnowledgeandTechnology
电脑知识
与技术
原理相同,但因为了大量的开源软件的支持,使其得到了广泛
的应用和推广。
(2)
的一种装置,
Arduino
输入模块
的输入模块主要指的是与外部设备进行信号传递
用于把原始信息和处理的指令输入到系统中,可
以是数值型的数据,也可以是如温度、湿度、距离、烟雾、声音等
非数值型的数据。通常各类传感器是属于输入模块。本系统
使用的传感器为超声波传感器,超声波传感器可以将超声波信
号转换成电信号
(3)
[4-5]
。
输出模块是模块与外部的执行器交互的一种装置,
输出模块
用于把控
制板的信号转换成相应的动作执行,通常执行器是属于输出模块。
执行器是一些应用系统作为输出的一种常用部分,它的作
用通常是接收由控制器送来的控制信号,从而通过改变被控介
质的大小,将被控变量维持在一定的范围。
执行器按其能源形式主要分为电动、气动、液动三大类。
电动执行器的能源取用方便,信号传递迅速,但结构复杂、防爆
性能差。气动执行器利用压缩的空气作为动力,稳定、适用广
泛。液动执行器的特点是输出推力很大,主要用在需要推力大
的环境下。
本系统的执行部分通过金属氧化物半导体场效应晶体管
来控制开关旋转,从而控制水流。
2.2软件平台
应用基础,
Arduino编程语言是类C/C++语言,因为C语言有着广泛的
AVR
所以Arduino同样有着广泛的使用群体,Arduino将
要太多的编程基础,
单片机相关的参数设计成了对应函数,
通过调用已有函数,也能够进行软件设计
这样普通用户不需
[3]
。
也可以在
Arduino
Linux
IDE
等操作系统上运行,
具有跨平台的优点,
它具有简单清晰、
既可以在Windows
开放性、
上运行
发展快等特点。ArduinoIDE对于初学者来说,极易掌握,同时
有着足够的灵活性
[6-7]
。
2.3Arduino软件开发环境
精简易操作,
Arduino1.8.5
常用功能放在菜单下的常用工具栏处,
程序界面如图1所示,程序界面友好,
与普通的
菜单项
图1Arduino1.8.5界面
280
计算机工程应用技术
第16卷第1期(2020年1月)
程序的界面没有太大的区别,即使是初学者不需要太多的基
础,也能进行软件开发设计工作,并且调试起来也很方便,极大
地方便了项目的开发。
3硬件设计
本项目所需的材料主要有ArduinoUno控制板、电磁阀、超
声波传感器、场效应管、电阻、面包板、各类导线等。
3.1Arduino系统开发板
ArduinoUNO
表1
的技术参数如表
ArduinoUNO的主要技术参数
1。
型号
Arduino
UNO
每个I/O直流输出
能力
20mA
微控制器
ATmega328P
3.3V端口输出
能力
50mA
工作电压
输入电压(推荐)
输入电压(极限)
7-12
5VFlash32
数字I/O引脚
6-20
V2
KB
14
V
时钟速度
EEPROM
SRAM
1
KB
KB
模拟输入通道
PWM通道6
板载LED引脚
16
13
MHz
(ADC)
6
3.2工作原理
通过超声波传感器来检查饮水机前是否有物体,如果有物
体,由电磁阀控制饮水机的出水口,当通电时,电磁阀打开,饮
用水流出。当断电时,电磁阀关闭,饮用水停止流水。程序将
始终监测是否有物体放置在超声波传感器附近,如果是,则电
磁阀打开,并一直监测是否有物体移走,如果监测到有物体移
走,将触发,电磁阀随即关闭,饮水机停止流出水。
本项目使用的电磁阀压强是0-0.8Mpa,功率为6.5W,电压
为直流12V,额定电流为700mA,最大额定电流为1.2A。要启
动电磁阀需要使用场效应管。本项目所使用的场效应管是
IRF540N
漏极。电磁阀的正极端子由
N沟道MOSFET。它有
12V
Arduino
3个引脚,
的Vin
分别是栅极、源极和
磁阀。电磁阀的负极端子通过
适配器为Arduino供电,Vin引脚将输出
引脚供电。使用
MOSFET的源极和漏极引脚连
12V,可用于控制电
接到地。因此,
MOSFET
只有在
它将保持关闭状态,
的栅极引脚用于打开或关闭它。如果栅极引脚接地,
MOSFET导通时才会为电磁阀供电。
如果施加栅极电压,它将导通。为了在没
有电压施加到栅极引脚时保持
10k
D12
电阻接地。Arduino引脚12
MOSFET关断,栅极引脚通过
用于限流。
引脚通过1K电阻连接到栅极引脚。使用
用于打开或关闭
1K
MOSFET
电阻的目的是
,因此
超声波传感器使用的是HC-SR04,由Arduino的+5V和接
地引脚供电。Echo和Trigger引脚分别连接到引脚8和引脚9。
通过对Arduino进行编程,利用超声波传感器测量距离,并在检
测到物体时打开MOSFET。
4软件设计
使用HCSR-04超声波传感器来测量物体前方的距离。当
距离
MOSFET
<10cm时,打开MOSFET场效应管,当距离≥10cm时,关闭
为了避免造成重复定义,
场效应管。
考虑到一些变量用得多,使用宏
本栏目责任编辑:梁书
第16卷第1期(2020年1月)
ComputerKnowledgeandTechnology
电脑知识
与技术
定义使算法精练。使用超声波传感器的触发和回声引脚,
MOSFET栅极引脚和LED作为Arduino的I/O。在连接电路图
时,将Echo和Trigger引脚分别连接到第8和第9个数字引脚。
然后MOSFET引脚连接到引脚12,默认情况下板载LED连接到
引脚13。使用以下代码进行宏定义。
#definetrigger9
#defineecho8
#defineLED13
#defineMOSFET12
在setup函数中,对输入和输出进行声明。在硬件中,只有
超声波传感器的Echo引脚是输入引脚,其余都是输出引脚。
可以使用Arduino的pinMode函数来指定如下所示
[8]
。
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);
pinMode(LED,OUTPUT);
pinMode(MOSFET,OUTPUT);
在主loop函数内部,调用了名为measure_distance()的函数。
此函数功能使用超声波传感器测量物体前方的距离,并将值更
新为变量“distance”。要使用超声波传感器测量距离,必须首
先将触发引脚保持低电平两微秒,然后保持高电平持续10微
秒并再次保持低电平持续2微秒。这将向空气中发出超声波
信号的声波,它将被前方的物体反射,回声引脚将采集由它反
射的信号。然后使用时间值来计算传感器前方物体的距离。
计算出距离后,使用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适配器将电路连接到Ar⁃
duino板的DC插孔。确保板载LED指示灯熄灭,这样可确保电
磁阀也关闭。
将超声波传感器直接放置在电磁阀下方,这样当水杯放置
在电磁阀下方时,它会直接与超声波传感器相对。超声波传感
器将探测到物体后,MOSFET和LED一起打开,电磁阀执行打
开阀门操作,饮用水流出来。
当移除水杯后,超声波传感器触发,信号传递给Arduino控
制板,控制板将电路断开,电磁阀闭合,饮用水停止流出。
5结束语
本文研究了一套基于Arduino的自动饮水机系统,它利用
超声波传感器监测到靠近饮水机的水杯,从而将信号传递Ar⁃
duino控制板,由控制板将执行数据通过场效应管,将信号传递
给电磁阀,由电磁阀开启阀门控制饮水机流出水。当水杯离开
饮水机时,超声波传器监测到水杯离开饮水机,将信号传递给
控制板,由控制板再将执行的数据通过场效应管,将信号传递
给电磁阀,电磁阀的阀门自动闭合,饮水机不再流出水。实验
证明,基于Arduino的自动饮水机系统设计合理,具有一定的实
用价值。
参考文献:
[1]蒯辙元“有水皆污”.衍生缺水危机[J].珠江水运,2011(7):
32-33.
[2]王龙,杨晓宇,雷宜衡.基于物联网的汽车甲醛监测系统设计
[J].湖北工程学院学报,2019,39(3):79-83.
[3]杨继志,郭敬.Arduino的互动产品平台创新设计[J].单片机与
嵌入式系统应用,2012(4):39-41.
[4]王子豪.双足行走型自动送物机器人[J].科学技术创新,2019
(5):72-73.
[5]曹瑞,包空军.基于超声波传感器新技术的应用[J].科技信息,
2019(3):491.
[6]李哲,庄其,余跃.基于Arduino的激光雕刻机设计[J].电子设
计工程,2019,27(4):176-178,184.
[7]付孟林,姚圣男,殷傅如,等.基于Arduino的分布式智能家居
安防系统设计[J].电子世界,2019(9):188-189.
[8]王顺菊,薛盛智.超声波测距在智能极速车中的研究[J].广西
师范学院学报:自然科学版,2019,36(2):55-60.
【通联编辑:代影】
(上接第273页)
中的部分对象将不可见,也就是部分数据会丢失。这时,通过
本文提出的恢复算法,分析分离节点中的磁盘组及硬盘信息,
并提取各硬盘中存储的组件数据,最后结合现有节点的组件数
据合并成vSAN集群中丢失的对象数据。实验结果证明本文中
提出的恢复算法几乎能恢复绝大部分的用户数据。
参考文献:
[1]于耳.一种基于vSAN的分布式存储系统构建和应用[J].中
国教育信息化,2014(16).
[2]左锋,宋艳.基于VSAN架构的云桌面系统建设研究[J].电脑
与信息技术,2018(4).
[3]王春海.解决VMwarevSAN分区故障,网络安全和信息化,
2018(10).
[4]夏畅.VMwarevSAN分布式存储技术研究[J].数据通信,
2018(1).
[5]王春海,樊玉芳.用VMwareWorkstation构建vSAN应用环境
[J].网络安全和信息化,2018(2).
【通联编辑:张薇】
计算机工程应用技术
5结束语
本文在vSAN集群存储结构分析基础之上提出了一种解决
vSAN集群节点损坏的数据恢复算法,此算法能够解决vSAN集
群中节点损坏导致的用户数据丢失问题,极大的挽回数据丢失
带来的损失。
本栏目责任编辑:梁书
281
发布者:admin,转转请注明出处:http://www.yc00.com/web/1712610242a2089102.html
评论列表(0条)