养鸡场的智能监控系统设计.doc_第1页
养鸡场的智能监控系统设计.doc_第2页
养鸡场的智能监控系统设计.doc_第3页
养鸡场的智能监控系统设计.doc_第4页
养鸡场的智能监控系统设计.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

内 容 摘 要养鸡场在现代社会中占据着重要的作用,用它有效地控制温度、光照、湿度、气体浓度等是改变鸡禽生长环境、为鸡禽生长创造最佳条件、避免外界四季变化和恶劣气候对其影响的前提。本设计以stc89c52单片机为核心完成了对空气温度、湿度、光照度进行数据的采集、处理、显示等系统的基本框图和工作原理控制的设计的工作。主要内容有:(1)通过数字温湿度传感器dht11采集实时温、湿度。(3)通过光敏电阻采集实时光照度。(4)通过气体传感器mq-2检测室内是否有某种气体浓度过量。通过以上设计可以对鸡禽生长过程中的环境温度、湿度和光照度进行了实时地、连续地检测、直观地显示。克服了传统的人工测量方法不能进行连续测量的弊端,节省了工作量,并避免了人为的疏漏或错误造成的不必要的损失。关键词单片机;温湿度传感器;光敏电阻;气体传感器;lcd。第一章 概述11.1 选题背景11.2 国内外的发展现状11.3 课题内容、目的及思路21.4 设计过程及工艺要求2第二章 系统的总体设计32.1系统设计目标32.2 系统的组成和工作原理32.3 环境参数检测方案的比较和选择52.3.1 湿度传感器的选择52.3.2 温度传感器的选择62.3.3 光亮度传感器的选择82.3.4 气体传感器的选择82.3.5 方案选择总结9第三章 硬件的设计93.1 mcu选型93.2 湿湿度测量电路103.3 光照度测量电路113.4 数据显示电路123.5 复位电路133.6 气体浓度检测电路143.7 电源电路14总结致谢15参考文献16附录 系统源代码172基于单片机的养鸡场温湿度亮度气体监控系统设计第一章 概述1.1 选题背景现代化禽类养殖中的重要一环就是对养殖环境的一些重要参数进行检测和控制。例如:空气的温度、湿度、光照强度、二氧化碳含量、土壤的含水量等。养殖环境与生物的生长、发育、能量交换密切相关,进行环境测控是实现禽类养殖生产管理自动化、科学化的基本保证,通过对监测数据的分析,结合生物生长发育规律,控制环境条件,使养殖达到优质、高产、高效的目的。以养殖鸡禽为代表的现代养殖设施在现代化养殖生产中发挥着巨大的作用,所以对养殖场的温度、湿度与光照强度等参数的控制就显的非常重要了。传统的方法是用毛发湿度表、酒精温度计等进行人工测量,再对不符合的温度、湿度、光照度通过在养殖场进行降温、遮光等控制来调节,这种人工测控的方法费时费力、效率低、且无法保证测量的连续性,测量的误差大、随机性大,随意性强。为了克服以上几点不足,我们需要一种造价低廉,使用方便且测量准确的自动测控系统。1.2 国内外的发展现状国外的养殖设施己经发展到比较完备的程度,并形成了一定的标准,但是价格非常昂贵,缺乏与我国气候特点相适应的测控软件,不利于在我国广泛地推广,而当今在我国大多数地方对养殖场温度、湿度、光照强度的检测与控制都采用人工管理,存在着测控精度低、劳动强度大及由于测控不及时等弊端,容易造成不可弥补的损失,结果不但大大增加了成本,浪费了人力资源,而且很难达到预期的效果。本系统主要针对养殖场内温度、湿度,光照强度研制了单片机控制的养殖场自动控制系统,综合考虑系统的精度、效率以及经济性要求三个方面因素之后,最终确定以单片机为控制核心,选用性价比比较高的传感器,实现对温湿度的精确测量与准确控制,同时又具有价格低等优点,便于在我国推广。1.3 课题内容、目的及思路本系统主要采用单片机作为系统的控制核心,由养殖场内的空气温度湿度传感器、光照度传感器采集数据,经过模数转换后送入单片机,由单片机根据采集的数据做出相应的控制,例如控制继电器的开合,使换气风扇、滴灌设备、遮阳幕等设备的启动或停止,达到控制养殖场内各项参数的目的。同时在外接的lcd液晶上显示实时参数 ,便于观察。 1.4 设计过程及工艺要求 在本系统中为了保证对温度、湿度和光照度的检测的实时性和准确性,采用了数字温湿度传感器来检测温、湿度。采用光敏电阻检测光照度。最后通过单片机处理后显示在lcd液晶显示屏上,对养殖场的各个参数进行实时监控,以便及时作出调整,以达到鸡禽生长的环境条件。 本系统的基本功能有:检测空气温度、湿度、环境光照度和各气体浓度情况并显示以上各项参数。第二章 系统的总体设计2.1系统设计目标本设计的要求是以单片机为控制核心,以湿度传感器、温度传感器、光敏电阻完成对养殖场内的各项参数进行测量,并将数据输入到单片机中,有单片机根据所编写的程序,及时将通过各种传感器测的数据实时地显示在液晶屏上。2.2 系统的组成和工作原理硬件系统主要有信号采集、信号分析、信号处理三个部分组成。(1) 信号采集 由湿度传感器、温度传感器、光敏电阻组成。(2) 信号分析 由单片机基本系统组成。(3) 信号处理 由并行口lcd液晶显示屏。 单片机通过湿度传感器检测土壤的湿度,若土壤的湿度过低,单片机就打开滴灌设备的电磁阀一分钟,对作物进行滴灌作业,增加土壤湿度,经过一段时间,单片机再次检测土壤湿度,如果湿度过高,就关闭滴灌设备的电磁阀,停止滴灌作业。如果开始检测的土壤湿度在适宜的范围,单片机则维持现有状态不变。27设计的原理框图:2.3 环境参数检测方案的比较和选择2.3.1 湿度传感器的选择单片机作为控制核心,要有被检测信号输入,由单片机处理。如何准确的确定外围环境的各项参数就显的非常重要。传感器是实现测量与控制的首要环节,是测控系统的关键部件,如果没有传感器对原始信号进行准确可靠的捕捉和转换,系统就无法实现要求的各项功能。工业生产过程中的自动化的测量和控制,大部分主要依靠各种传感器来检测和控制生产过程中的各项参量,使系统工作在最佳的状态下。测量空气湿度的方法有很多种,其原理是根据某种物质从其周围的空气中吸收水分后引起的物理或化学的性质的变化,间接的获得空气的湿度。电容式、电阻式和湿涨式湿敏元件分别是根据其高分子材料吸水后的介电常数、电阻率和体积发生的变化进行湿度的测量。方案一:采用hos-201湿敏传感器。hos-201湿敏传感器为高湿度开关传感器,它的工作电压为交流1v以下,频率为50hz1khz,测量范围为0%100%rh,工作温度为050,阻抗在75%rh(25)时为1m。这种传感器主要用于开关的传感器,不能在宽频域内检测湿度。这种传感器只限于一定范围内使用时具有良好的线性度。方案二:采用dht11湿度传感器。dht11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。传感器包括一个电阻式感湿元件和一个ntc测温元件并与一个高性能8位单片机相连接,因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。综合比较方案一和方案二,方案一虽然满足精度和测量温度的要求,但是只是限定于一定的范围内使用时具有良好的线性度。因此,我们选择方案二作为本设计的湿度传感器。2.3.2 温度传感器的选择方案一:采用ad590温度传感器。ad590温度传感器是美国模拟器件公司生产的单片集成两端感温电流源。ad590性能描述:测量范围在-50- +150,满刻度范围误差为0.3,当电源电压在510v之间,稳定度为1时,误差只有0.01 。ad590为电流型传感器温度每变化1其电流变化1ua在35和95时输出电流分别为308.2ua 和368.2ua 。方案二:采用dht11湿度传感器。dht11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。传感器包括一个电阻式感湿元件和一个ntc测温元件并与一个高性能8位单片机相连接,因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。综合比较方案一和方案二,两方案都可以满足设计所要求的精度温度要求,但方案一的后续电路复杂,需要经过放大,数模转换等步骤,增加了设计的复杂度和成本,并需要占用单片机较多的i/o口。方案二的后续电路简单,占用的i/o口数量少,为整体设计留出了足够的i/o口资源。故我们采用方案二作为本系统的温度传感器。1、传感器性能说明参数条件mintypmax单位湿度分辨率111%rh16bit重复性1%rh精度254%rh0505%rh互换性可完全互换量程范围03090%rh252090%rh502080%rh响应时间1/e(63%)25,1m/s 空气61015s迟滞1%rh长期稳定性典型值1%rh/yr温度分辨率111161616bit重复性1精度12量程范围050响应时间1/e(63%)630s2、 接口说明 建议连接线长度短于20米时用5k上拉电阻,大于20米时根据实际情况使用合适的上拉电阻。3、电源引脚dht11的供电电压为35.5v。传感器上电后,要等待 1s 以越过不稳定状态在此期间无需发送任何指令。电源引脚(vdd,gnd)之间可增加一个100nf 的电容,用以去耦滤波2.3.3 光亮度传感器的选择方案一:采用光照度传感器m124749,该光照度传感器采用先进的电路模块技术开发变送器,用于实现对环境光照度的测量,输出标准的电压及电流信号,体积小,安装方便,线性度好,传输距离长,抗干扰能力强,量程可调。但价格昂贵,性价比不高,且不易购买。方案二:采用光敏电阻。光敏电阻的工作原理是当有光线照射时,电阻内原本处于稳定状态的电子受到激发,成为自由电子,所以光线越强,产生的自由电子也就越多,电阻就会越小。光敏电阻的优点有内部的光电效应和电极无关(光电二极管才有关),即可以使用直流电源。灵敏度和半导体材料、以及入射光的波长有关,价格低廉,性价比高。比较以上两个方案,方案一虽然具有更好的设计精度和线性度,但性价比不如光敏电阻好。方案二具有较高的性价比且同时也能满足系统的设计要求,故采用光敏电阻作为光照度传感器。2.3.4 气体传感器的选择 mq-2气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(sno2)。当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。以检测空气中co的含量是否在一般情况下。 基于本次只是检测空气中一氧化碳含量是否超标,我们经过详细的探讨最终决定使用气体传感器mq-2。2.3.5 方案选择总结(1) 湿度传感器采用dht11。(2) 温度传感器采用dht11。(3) 光亮度传感器采用光敏电阻。(4) 气体传感器采用mq-2。第三章 硬件的设计3.1 mcu选型stc89c52是一种低功耗、高性能cmos8位微控制器,具有 8k 在系统可编程flash 存储器。在单芯片上,拥有灵巧的8 位cpu 和在系统可编程flash,使得stc89c52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节flash,512字节ram, 32 位i/o 口线,看门狗定时器,内置4kb eeprom,max810复位电路,三个16 位 定时器/计数器,全双工串行口,最高运作频率35mhz。 它是mcs-51系列单片机的派生产品,在指令系统、硬件结构和片内资源上与标准8052单片机完全兼容,dip40封装系列与8051兼容均为pin-to-pin,使用时容易掌握; 高速、低功耗、价格低、稳定可靠、应用广泛、通用性强,在系统/在应用可编程(isp,iap),不占用户资源。stc89c52单片机管脚如图3-1:图3-1 stc89c52单片机管脚定义图3.2 湿湿度测量电路dht11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个ntc测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个dht11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在otp内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为 4 针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。 图3-2 温湿度测量电路3.3 光照度测量电路系统采用价格低廉的光敏电阻5测量光照度,因其没有良好的线性度,所以只能大致的测量。根据光敏电阻在不同的光照下有不同的阻值,经过a/d转换后输入到单片机内进行处理。 图3-3 光敏传感器连接电路3.4 数据显示电路12864引脚说明:1 vss-模块的电源地2 vdd-模块的电源正端3 v0-lcd驱动电压输入端4 rs(cs)h/l并行的指令/数据选择信号;串行的片选信号5 r/w(sid)h/l并行的读写选择信号;串行的数据口6 e(clk)h/l并行的使能信号;串行的同步时钟7 db0h/l数据08 db1h/l数据19 db2h/l数据210 db3h/l数据311 db4h/l数据412 db5h/l数据513 db6h/l数据614 db7h/l数据715 psbh/l并/串行接口选择:h-并行;l-串行16 nc空脚17 /reth/l复位低电平有效18 nc空脚19 led_a-背光源正极(led+5v)20 led_k-背光源负极(led-ov)逻辑工作电压(vdd):4.55.5v电源地(gnd):0v 图3-4 lcd12864与单片机的连接电路图3.5 复位电路 为了确保系统中的电路温度可靠工作,复位电路是必不可少的部分 ,其第一功能就是高电平复位,高电平复位是在通电瞬间通过充电来实现的。手动复位是指通过接通一按键开关,使单片机进入复位状态。系统上电运行后,如果需要复位,只需通过手动复位就可以实现。本系统使用的复位电路如图3-7所示: 图3-5 复位电路图3.6 气体浓度检测电路 图3-6 气体检测电路3.7 电源电路由于stc89c52的工作电压为+5v,所以电源需要输出+5v稳定电压可以使单片机可以稳定正常的工作,电源电路如图3-9所示: 图3- 电源电路总体电路图: 参考文献1 梅晓榕,柏桂珍,张卯瑞.自动控制元件及线路m.北京:科学出版社,20072 张义和,王敏男,许宏昌,余长春.例说51单片机(c语言版)m.北京:人民邮电出版社,2010,63 胡汉才.单片机原理与接口技术m.清华大学出版社,1996.4 黄贤斌,郑筱霞.传感器原理与应用m.北京:高等教育出版社. 成都:电子科技大学出版社,2004,3(2009.1重印)5 何立民.单片机应用系统设计m.北京:北京航天航空出版社.1990,50-4906 刘笃仁,韩保君.传感器原理及应用技术m.机械工业出版社.2003,8 7 王勇等.凌阳单片机原理及其毕业设计精选m.科学出版社8 童诗白.模拟电路基础m,北京:高等教育出版社,20019 马忠梅,籍顺心,张凯等.单片机的c语言应用程序设计m.北京航天航空大学出版社,200310 m考夫曼,ah塞得.电子计算手册m.国防科技出版社.11 王毅.单片机器件应用手册m.北京:人民邮电出版社,199412 谭浩强 c程序设计(第二版) 清华大学出版社,1999年12月。附录 系统源代码 #include #include /keil library #include /keil library#include #include 12864.h#include bh1750.h#include main.h#include dht11.h#define bcd2dec(x) (x&0x70)4)*10+(x&0x0f)#define dec2bcd(x) (x/10)4|(x%10)code unsigned char wendu= 温度: ;code unsigned char shidu= 湿度: rh;code unsigned char guangzhao=光照: lm;code unsigned char aboutme= 智能养鸡场;u16 a,b,t;u8 flag,i;u8 temp_fordh112; void delay_nms(unsigned int k);void gui_init(void);/毫秒延时*void delay_nms(unsigned int k)unsigned int i,j;for(i=0;ik;i+)for(j=0;j121;j+);void wendu_fuhao(void) writecommandlcd(0x86 ,0); writedatalcd(0xa1); writedatalcd(0xe6);void gui_init(void)displaylistchar(0,1,wendu);displaylistchar(0,2,shidu);displaylistchar(0,3,guangzhao);displaylistchar(0,4,aboutme);wendu_fuhao();void main() float temp; unsigned char temp_for_gz5; t=0;flag=0; p1_0=1;p2=0xff;delay(40); delay_nms(200); /延时200ms /初始化lcd init_bh1750(); /初始化bh1750 lcdinit(); single_write_bh1750(0x01); / power on single_write_bh1750(0x10); gui_init(); while(1) /循环 rh(); writecommandlcd(0x83,0); temp_fordh110=(u8t_data_h)/10; temp_fordh111=(u8t_data_h)%10; writedatalcd(0x30+temp_fordh110); writedatalcd(0x30+temp_fordh111); writecommandlcd(0x93,0); temp_fordh110=(u8rh_data_h)/10; temp_fordh111=(u8rh_data_h)%10; writedatalcd(0x30+temp_fordh110); writedatalcd(0x30+temp_fordh111); delay_nms(180); /延时180ms multiple_read_bh1750(); /连续读出数据,存储在buf中 dis_data=buf0; dis_data=(dis_data0;a-)for(b=110;b0;b-);void delay5ms128(void) unsigned int tempcyc = 5552; while(tempcyc-);void delay400ms(void) unsigned char tempcyca = 5; unsigned int tempcycb; while(tempcyca-) tempcycb=7269; while(tempcycb-); /*写数据*/void writedatalcd(unsigned char wdlcd) /readstatuslcd(); /检测忙 lcd_rw = 0; lcd_data = wdlcd; lcd_rs = 1; lcd_e=0;delay_for12864(20);lcd_e=1;delay_for12864(20); lcd_e = 0;/*写指令*/void writecommandlcd(unsigned char wclcd,buysc) /buysc为0时忽略忙检测 /if (buysc) readstatuslcd(); /根据需要检测忙 lcd_rw = 0; lcd_data = wclcd; lcd_rs = 0; lcd_e=0; delay_for12864(20); lcd_e =1; delay_for12864(20); lcd_e=0; /*读数据*/unsigned char readdatalcd(void)unsigned char lcdda; lcd_rs = 1; lcd_rw = 1; lcd_e = 1; lcd_e = 1;lcdda=lcd_data; lcd_e = 0; return(lcdda);/*读状态*/unsigned char readstatuslcd(void) lcd_data = 0xff; lcd_rs = 0; lcd_rw = 1;lcd_e = 1;lcd_e = 1; while (lcd_data & busy); /检测忙信号 lcd_e = 0; return(1);/*初始化*/void lcdinit(void)delay5ms128();lcd_e=1;lcd_e=0;lcd_e=1; writecommandlcd(0x30,0); /显示模式设置,开始要求每次检测忙信号 delay5ms128(); writecommandlcd(0x30,0); delay5ms128(); writecommandlcd(0x0c,1); / 显示开及光标设置 delay5ms128();delay5ms128(); writecommandlcd(0x01,1); /显示清屏 writecommandlcd(0x06,1); / 显示光标移动设置 /*清屏*/void lcdclear(void) writecommandlcd(0x01,1); /显示清屏 writecommandlcd(0x34,1); / 显示光标移动设置 writecommandlcd(0x30,1); / 显示开及光标设置/*闪烁效果*/void lcdflash(void) writecommandlcd(0x08,1); /显示清屏 delay400ms(); writecommandlcd(0x0c,1); / 显示开及光标设置 delay400ms(); writecommandlcd(0x08,1); /显示清屏 delay400ms(); writecommandlcd(0x0c,1); / 显示开及光标设置 delay400ms(); writecommandlcd(0x08,1); /显示清屏 delay400ms();/*按指定位置显示一个字符*/void displayonechar(unsigned char x, unsigned char y, unsigned char ddata1, unsigned char ddata2)if(y4) /displayonechar(0,1,0xd0) y=4;x &= 0x0f; /限制x不能大于16,y不能大于1switch(y)case 1:x|=0x80;break;case 2:x|=0x90;break;case 3:x|=0x88;break;case 4:x|=0x98;break;writecommandlcd(x, 0); /这里不检测忙信号,发送地址码writedatalcd(ddata1);writedatalcd(ddata2);/*按指定位置显示一串字符*/void displaylistchar(unsigned char x, unsigned char y, unsigned char code *ddata)unsigned char listlength,x2;listlength = 0;x2=x;if(y4) y=4; x &= 0x0f; /限制x不能大于16,y在1-4之内 switch(y)case 1:x2|=0x80;break;/根据行数来选择相应地址case 2:x2|=0x90;break;case 3:x2|=0x88;break;case 4:x2|=0x98;break; writecommandlcd(x2, 1); /发送地址码 while (ddatalistlength=0x20) /若到达字串尾则退出 if (x = 0x0f) /x坐标应小于0xf writedatalcd(ddatalistlength); listlength+; x+; delay5ms128(); #endif#ifndef _bh1750_h#define _bh1750_h#define slaveaddress 0x46 #define uchar unsigned char#define uint unsigned intsbit scl=p23; /iic时钟引脚定义sbit sda=p24; /iic数据引脚定义typedef unsigned char byte;typedef unsigned short word;byte buf8;uchar ge,shi,bai,qian,wan; /显示变量int dis_data; void conversion(int temp_data);void init_bh1750(void);void single_write_bh1750(uchar reg_address); /单个写入数据void multiple_read_bh1750(); /连续的读取内部寄存void bh1750_start(); /起始信号void bh1750_stop(); /停止信号void bh1750_sendack(bit ack); /应答ackbit bh1750_recvack(); /读ackvoid bh1750_sendbyte(byte dat); /iic单个字节写byte bh1750_recvbyte(); /iic单个字节读void conversion(int temp_data) / 数据转换出 个,十,百,千,万 wan=temp_data/10000+0x30 ; temp_data=temp_data%10000; /取余运算qian=temp_data/1000+0x30 ; temp_data=temp_data%1000; /取余运算 bai=temp_data/100+0x30 ; temp_data=temp_data%100; /取余运算 shi=temp_data/10+0x30 ; temp_data=temp_data%10; /取余运算 ge=temp_data/1+0x30; void delay5ms() word n = 560; while (n-);void delay5us() _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();/*起始信号*/void bh1750_start() sda = 1; /拉高数据线 scl = 1; /拉高时钟线 delay5us(); /延时 sda = 0; /产生下降沿 delay5us(); /延时 scl = 0; /拉低时钟线/*停止信号*/void bh1750_stop() sda = 0; /拉低数据线 scl = 1; /拉高时钟线 delay5us(); /延时 sda = 1; /产生

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论