机电一体化课程设计
说明书
题目: 智能鱼缸设计
班级: 机电一体化11-9班
组长:
组员:
(按拼音先后排序)
二〇一四 年 十 月
随着社会的发展和人们生活质量的提高,越来越多的人喜欢饲养观赏鱼。但如果由于某些原因忽视了对观赏鱼的照顾,观赏鱼则有可能因饥饿或鱼缸内生态环境变坏而死亡。因此,设计一款智能鱼缸系统是非常必要的。
本文设计了一款基于单片机的智能鱼缸系统。本设计选用Arduino UNO单片机作为自动喂养系统的控制核心,用传感器采集鱼缸内的环境参数。经数据处理后,单片机向各执行机构传送控制信号,实现自动喂食和对鱼缸内温度、水位等环境因素的自动控制,从而为观赏鱼创造一个良好的生存环境。本设计采用了模块化的设计方法,主要包括主控芯片模块、喂食器模块、温度控制模块、水位控制模块和换水模块。本设计集众多功能于一身,具有结构小巧,操作简便,成本低廉等优点,可以广泛应用于观赏鱼的饲养。
关键词:自动喂食器结构;单片机;传感器;自动控制;驱动电路;C语言
摘 要 I
目 录 II
第一章 绪 论 1
1.1 研究目的 1
1.2国内外研究现状 1
1.3研究的主要内容和目标 1
第二章 模块方案选择与论证 2
2.1硬件框图 2
2.2主控芯片模块 2
2.3温度测量模块 3
2.4水位检测模块 3
2.5喂食器模块 3
2.6换水模块 4
2.7显示模块 5
第三章 各模块的具体设计 7
3.1控制模块 7
3.2温度测量模块 7
3.3水位检测模块 8
3.4电机模块 9
3.5喂食器模块 12
3.6显示模块 14
第四章 系统原理图 15
第五章 结 论 17
5.1设计总结 17
5.2创新点 17
参考文献 17
附录 18
随着社会的发展和人们生活质量的提高,越来越多的人喜欢饲养观赏鱼。它在美化我们生活环境的同时,给我们带来了视觉上的美感和身心享受。但人们不可能每时每刻都控制好鱼类的生活环境,如果由于某些原因长时间忽视了对观赏鱼的照料,观赏鱼则有可能因饥饿或生态环境变坏而死亡。因此,设计一款智能鱼缸系统是非常必要的。
目前市场上的鱼缸系统功能比较分散,往往只能实现某个功能,如过滤功能,增氧功能,加热功能等,而且大多需要人工操作,自动化程度不高。喂食器部分主要采用以定时电路为控制核心的单次间歇式喂养系统,喂食器每次喂食都需要重新设定,且定时不准确,投料不均匀,可靠性差,喂食与间歇时间设置不合理,易浪费饵料,这些都无法满足观赏鱼自动喂养的功能要求。倘若同时安装各种功能不同的设备,又会使系统结构复杂,增加成本,影响美观,而且也缺乏彼此功能的协调性。
现在越来越多的人们开始注重生活环境的改善,水族箱便进入了人们的视线,许多宾馆、展会、写字楼等都摆上了水族箱来美化环境,应用于水族箱的观赏鱼自动控制系统应运而生,由于水族箱一般体积较大,而且该自动喂养系统嵌入在水族箱的橱柜内,不可分离,使自动喂养系统移植性差,无法应用于小型的观赏鱼鱼缸上。智能鱼缸系统在市场上还基本处于空白,基于这个市场空白,本文设计了基于单片机的自能鱼缸系统。
本设计选用Arduino UNO单片机作为自动喂养系统的控制核心,加上外设备组成单片机最小系统,用传感器采集环境参数,输入单片机处理,单片机控制各执行机构实现自动喂食,水温自动控制,水位自动控制,力求系统集成化高,结构小巧,操作简单。
设计思路大体为:设计方案的选择,机械结构的设计,程序的编写,电路设计,修改校核,撰写说明书和总结。
本设计所要达到的预期目标:
1. 可以定时投掷颗粒状饵料
2. 可以实现水温的自动控制
3. 可以实现水位的自动控制
4. 可以实现定时换水
5. 可以实时显示参数设置数据
喂养系统硬件框架图
采用Arduino UNO作为主控制芯片,该芯片有足够的存储空间,可以方便的在线ISP下载程序,能够满足该系统软件的需要,该芯片提供了两个计数器中断,对于本作品系统已经足够,采用该芯片可以比较灵活的选择各个模块控制芯片,能够准确的计算出时间,有很好的实时性。
而且与传统51相比有如下优点
(1) 学习Arduino 单片机可以完全不需要了解其内部硬件结构和寄存器设置,仅仅知道它的端口作用即可;可以不懂硬件知识,只要会简单的C语言,就可用Arduino 单片机编写程序。
(2) Arduino 软件语言仅仅需掌握少数几个指令,而且指令的可读性也强,稍微懂一点C语言即可,轻松上手,快速应用。
(3) Arduino 的理念就是开源,软硬件完全开放,技术上不做任何保留。针对周边I/O设备的Arduino 编程,很多常用的I/O 设备都已经带有库文件或者样例程序,在此基础上进行简单的修改,即可编写出比较复杂的程序,完成功能多样化的作品。-->针对DIY,做绚丽作品.
(4) Arduino 由于开源,也就意味着从Arduino 相关网站、博客,论坛里得到大量的共享资源,在共享资讯的辅助下,通过资源整合,能够加快您创作作品的速度及效率。
(5) 相对其他开发板,Arduino 及周边产品相对质廉价优,学习或创作成本低,重要一点是:烧录代码不需要烧录器,直接用USB线就可以完成下载。-->针对所有想玩电子编程者 。
总之,Arduino编程变得简单更人性化和直观,没有单片机基础的人也能很快上手,是一种综合性较强,开放性较高操作系统。
采用投入式液位计。投入式液位计又称为静压投入式液位变送器,是一种测量液位的压力传感器.由于液体静压与该液体的高度成比例,该液位计就是根据这一原理采用隔离型扩散硅敏感元件或陶瓷电容压力敏感传感器作为测量元件,将静压转换为电信号,经过高可靠性的放大处理电路及精密温度补偿,将被测介质的表压或绝压转换为标准的电压或电流信号。本产品体积小巧,使用安装方便,直接投入水中即可测量出变送器末端到液面的液位高度。
查资料得,应选取YWZ-200液位计。
1)驱动采用步进电机。步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。你可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时你也可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。选型MP28GA,具体参数如下:
2)机械结构采用步进电机驱动自己设计的食物储存器里,具体设计见下一章内容。
2.6换水模块
采用单片机控制电磁阀定期打开,来控制换水。
选用直动式电磁阀。直动式电磁阀,通电时,电磁线圈产生电磁力把关闭件从阀座上提起,阀门打开;断电时,电磁力消失,弹簧把关闭件压在阀座上,阀门关闭。翻阅相关资料,选取JY2303型号,其相关参数如下:尺寸,25;阀座直径,25mm;流量系数,12.0kv;流体压力范围0~0.8MPa
方案1:采用七段数码管显示。数码管是一类数字形式的显示屏,通过对其不同的管脚输入相对的电流,会使其发亮,从而显示出数字能够显示时间、温度等参数。由于它的价格便宜、使用简单、在电器,特别是家电领域应用极为广泛,但数码管显示屏不能显示汉字[10]。
方案2:采用1602LCD显示屏。字符型液晶模块是一种用5x7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等等。该液晶显示器体积小、功耗低、显示内容丰富、超薄轻巧使用方便,在各种仪器仪表和低功耗应用系统中应用广泛[11]。
方案3:采用全彩LED显示屏。该彩屏不仅能够显示数字、字符而且能够显示图像,性能稳定,色彩艳丽,画面逼真,在手机,相机等数码产品中有着广泛的应用。但这种显示屏相比较而言价格较贵。
综合设计要求,系统需要显示数字、字符但不需要显示画面,为了节约成本我们采用方案2。
1602LCD主要技术参数:
显示容量为16×2个字符;芯片工作电压为4.5~5.5V;工作电流为2.0mA(5.0V);模块最佳工作电压为5.0V;字符尺寸为2.95×4.35(W×H)mm。
1602液晶接口引脚定义:
接口说明:
1、两组电源 一组是模块的电源 一组是背光板的电源 一般均使用5V供电。本次试验背光使用3.3V供电也可以工作。
2、VL是调节对比度的引脚,串联不大于5KΩ的电位器进行调节。本次实验使用1KΩ的电阻来设定对比度。其连接分高电位与低电位接法,本次使用低电位接法,串联1KΩ电阻后接GND。
3、RS 是很多液晶上都有的引脚 是命令/数据选择引脚 该脚电平为高时表示将进行数据操作;为低时表示进行命令操作。
4、RW 也是很多液晶上都有的引脚 是读写选择端 该脚电平为高是表示要对液晶进行读操作;为低时表示要进行写操作。
5、E 同样很多液晶模块有此引脚 通常在总线上信号稳定后给一正脉冲通知把数据读走,在此脚为高电平的时候总线不允许变化。
6、D0—D7 8 位双向并行总线,用来传送命令和数据。
7、BLA是背光源正极,BLK是背光源负极。
1602液晶的基本操作分以下四种:
上图为Arduino的原理图,接线为GND接地,5v接5v电压
LM35 是很常用且易用的温度传感器元件,在元器件的应用上也只需要一个LM35元件,只利用一个模拟接口就可以,难点在于算法上的将读取的模拟值转换为实际的温度。
与单片机的连接如图所示:
系统用液位计对水位进行检测,当鱼缸中水位低于预定值时,与液位计相连的单片机会发出信号,继电器导通,开关闭合,便控制电磁阀导通,向鱼缸内补水,当水位达到设定值时,单片机便使电磁阀关闭,停止补水。
该步进电机空载耗电在50mA以下,带64倍减速器,输出力矩比较大,可以驱动重负载,极适合开发板使用。步进电机驱动器是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速和定位的目的。 步进电动机和步进电动机驱动器构成步进电机驱动系统。步进电动机驱动系统的性能,不但取决于步进电动机自身的性能,也取决于步进电动机驱动器的优劣。对步进电动机驱动器的研究几乎是与步进电动机的研究同步进行的。
步进电机
步进电机驱动板UL2003,外形尺寸:31×35mm
接线图
由于喂食器需要定时向鱼缸投入饲料,为了防止因临时断电导致的定时功能失效问题,我们需要单片机可以向外部读取时间,所以添加了DS1307。
DS1307是一款低功耗,具有56字节非失性RAM的全BCD码时钟日历实时时钟芯片,地址和数据通过两线双向的串行总线的传输,芯片可以提供秒,分,小时等信息,每一个月的天数能自动调整。并且有闰年补偿功能。
有以下特点:可对秒,时,分,每月的天数,月份,每周的天数进行计数,并具有闰年补偿功能;计年上限2100;56字节非失性的RAM;两线串行接口;可编程方波输出;自动掉电检测和切换电路;在电池备份模式下,功耗小于500nA;工业级的工作温度: -40 到80;8脚DIP和SOIC封装;
主要参数:
存储器配置:64 x 8Bit;
电源电压范围:4.5V to 5.5V;
芯片封装类型:DIP和SOP;
针脚数:8;
工作温度范围:0°C to +70°C;
封装类型:DIP;
工作温度最低:0°C;
工作温度最高:70°C;
中断类型:全天时间;
器件标号:1307;
器件标记:DS1307+;
存储器容量:56 bytes;
存储器类型:RAM;
接口类型:Serial, I2C;
时钟频率:32.768kHz;
温度范围:商用;
特点:方波输出;
电压, Vcc 最大:5V;
电源电压最大:5.5V;
电源电压 最小:4.5V
类型:RTC
芯片标号:1307
表面安装器件:通孔安装
输出数:1
逻辑功能号:1307
机械结构3d图如下
电机通过联轴器与喂食器相连,电机转动一周,喂食器翻转一周,即喂食一次,通过单片机控制步进电机的转动速度和频率来实现定时喂食的功能。
联轴器的选用,通过查相关手册,选用GH1-15-M联轴器。
步进电机的选用在上文中已介绍过。
喂食器为一个圆柱体加一个外壳,外壳内放置食物,顶部设有盖子用于添加食物,圆柱体的旋转轴为转矩输入轴,圆柱体设有一个挖开的不同口,可以在旋转到底部的时候将一定数量的食物投入鱼缸,而且能有效防止食物的卡死。
设计尚有不足,未经实验验证,只是简单制作装配图。
鱼缸的整体结构如下:
如上文中2.7所示,我们选用1602LCD实现系统数字和字符的显示。1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。内置128个字符的ASCII字符集字库,可显示两行,每行16个字符,但不能显示汉字或图形,只有并行接口,无串行接口。
系统电路原理图
ULN2003APG驱动芯片原理图
液位计机械图
显示部分电路图
(1)单片机控制,智能化程度高。(2)恒温控制。(3)水位控制。(4)定时换水。(5)定时喂食。(6)显示
(1)没有水中氧气含量检测装置,不能独立准确供氧。(2)没有无线模块,不能远程控制
本文所设计的智能鱼缸系统,采用单片机为控制芯片,实现定时定量喂食,实现水温、水位的自动控制,控制水位,定时换水等。系统体积小,重量轻,自动化程度高,操作简便,能够实现科学、自动喂养,用户可以通过按键选择,设定自动喂养系统的各项工作参数,从而控制喂养系统工作,易学易用,降低了人力物力成本。在程序上,本设计用C语言进行编程,采用模块化的编程方法,各模块间独立程度高,避免了模块间的相互影响,对系统整体进行了综合调试,运行效果良好,设计比较完善。
[1]张海萍.小小水族箱装着大市场[N].市场报,2002-10-21.
[2]葛华.多功能观赏鱼缸自动控制系统的设计[D].南京:东南大学机械工程学院,2010.05.
[3]刘建辉.单片机智能控制技术[M].北京工坊工业出版社,2007.
[4]夏宇闻.Verilog HDL数字设计教程[M].北京:北京航空航天大学出版社,2008,6.
[5]兰吉昌.单片机C51完全学习手册[M].北京:化学工业出版社,2008,10.
[6]求是科技.单片机典型模块设计实例导航第二版[M].北京人民邮电出版社,2009.
[7]雷伏容.51单片机常用模块涉及查询手册[M].北京清华大学出版社,2010.
[8]江志红.51单片机技术与应用系统开发案例精选[M].北京清华大学出版社,2008.
[9]郭天祥.51单片机C语言教程[M].北京:电子工业出版社.2009,12.
[10]阎石.数字电子技术基础[M].北京:高等教育出版社.2006,1.
[11]唐继贤.51单片机工程应用实例[M].北京:北京航空航天大学出版社,2009,1.
[12]Atmel Microcontroller Handbook,2001.
[13]慧仇.手把手教你学51单片机[M].北京 电子工业出版社, 2009.
[14]谭浩强. C程序设计[M]. 北京:清华大学出版社,1991.
[15]Clive max Maxfiled .The Designed Warrior’s Guide to FPGAs[M].Newnes,2004,6.
编程:
#include
#include
#include
#include
#define STEPS 100// 设定步进电机步数
#define outmotor 4// 设定排水电磁阀控制口
#define inmotor 5// 设定进水电磁阀控制口
Stepper stepper(STEPS, 8, 9, 10, 11);// 指定步进电机的步数与控制引脚
int potPin = 0; //定义模拟接口0 连接LM35 温度传感器
int time=0;//定义初始时间
int oneday=000;seconds
void setup() {
//系统初始设置
//设置各接口初始输入输出模式
pinMode(13, OUTPUT);
pinMode(outmotor, OUTPUT);
pinMode(inmotor, OUTPUT);
//步进电机控制模块初始化设置
stepper.setSpeed(30);// 将电动机的转速设定到 30 RPMs
//1602液晶显示器初试设置
LiquidCrystal_I2C lcd(0x27,16,2);//设定1602液晶显示器I2C地址为0x27
//显示模式为16字节双行显示
lcd.init(); //初始化1602显示器
lcd.backlight();//启用1602显示器灯光
}
void loop() {
// 反复运行
//检测到的时间
//一天
Lcddisplay();//1602显示器显示内容函数(未定义)
Getbutton();//按键信息获取函数(未定义)
Systemsetup();//系统参数设置函数(未定义)
time=gettime;//获取时间,如果间隔时间大于设置的喂食时间,驱动步进电机转
//动喂食机构
if(time>=oneday){
stepper.step(4096);}
//LM35温度检测
int val;//定义变量
int dat;//定义变量
int temp;
val=analogRead(0);//read 0 pin temperture.
dat=(125*val)>>8;//温度计算公式
if(dat<20){temp=1}else{temp=0};
if(temp=1){digitalWrite(7, HIGH);}
else{digitalWrite(7,LOW)};//加热器开关检测
//水位检测与阀门控制程序
int val1;//定义变量
Int temp1;
val1=analogRead(1);
if(val1
if()val1>xxxxx{temp1=0};
if(temp1=1){
digitalWrite(13, HIGH);}
if(temp=0){
digitalWrite(13, LOW);}
}
任务分工:
组长: 夏小维(20110714) :喂食机的机械结构设计和三维建模,液位计二维图的绘制,控制进排水元件的选择和分析,总结全组人员劳动成果进行说明书的撰写。
组员: 姚森(20110736) :总电路图的设计,主控制元件的选取和分析,总体电路图的绘制,整体编程,和ULN2003APG驱动芯片驱动原理图的绘制。
孔成晨(20110698):温度测量模块的整体设计(包括温度传感器的选取、和部分电路接线),显示部分元件的选择。
何佳文(20110709):水位控制模块的设计(包括思路设计,液位计选型,和部分电路接线),显示部分连线设计。
汤松(20110723) :喂食器动力模块设计(包括电机选型,和电机模块电路的设计),显示部分电路图的绘制。
非常感谢老师抽出宝贵的时间来阅读我们的机电课程设计成果!虽然小组成员中有80%的成员参与考研,但我们深知本次课程设计对我们意义重大,所有成员都以认真务实的态度不同程度得完成了本次课程设计的任务。设计仍有许多不足之处,希望老师给予指导!
¥29.8
¥9.9
¥59.8