智能大棚系统实训报告.docx

上传人:b****2 文档编号:1616755 上传时间:2023-05-01 格式:DOCX 页数:30 大小:719.35KB
下载 相关 举报
智能大棚系统实训报告.docx_第1页
第1页 / 共30页
智能大棚系统实训报告.docx_第2页
第2页 / 共30页
智能大棚系统实训报告.docx_第3页
第3页 / 共30页
智能大棚系统实训报告.docx_第4页
第4页 / 共30页
智能大棚系统实训报告.docx_第5页
第5页 / 共30页
智能大棚系统实训报告.docx_第6页
第6页 / 共30页
智能大棚系统实训报告.docx_第7页
第7页 / 共30页
智能大棚系统实训报告.docx_第8页
第8页 / 共30页
智能大棚系统实训报告.docx_第9页
第9页 / 共30页
智能大棚系统实训报告.docx_第10页
第10页 / 共30页
智能大棚系统实训报告.docx_第11页
第11页 / 共30页
智能大棚系统实训报告.docx_第12页
第12页 / 共30页
智能大棚系统实训报告.docx_第13页
第13页 / 共30页
智能大棚系统实训报告.docx_第14页
第14页 / 共30页
智能大棚系统实训报告.docx_第15页
第15页 / 共30页
智能大棚系统实训报告.docx_第16页
第16页 / 共30页
智能大棚系统实训报告.docx_第17页
第17页 / 共30页
智能大棚系统实训报告.docx_第18页
第18页 / 共30页
智能大棚系统实训报告.docx_第19页
第19页 / 共30页
智能大棚系统实训报告.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

智能大棚系统实训报告.docx

《智能大棚系统实训报告.docx》由会员分享,可在线阅读,更多相关《智能大棚系统实训报告.docx(30页珍藏版)》请在冰点文库上搜索。

智能大棚系统实训报告.docx

智能大棚系统实训报告

竞赛实训课程设计报告

 

系别:

信息科学与电气工程学院

班级:

姓名:

学号:

指导教师:

实践地点:

实验楼406

时间:

2014年5月19日

至2014年6月6日

 

摘要

随着科技的发展,以广泛应用现代科学技术为主要标志的现代农业应运而生。

现代农业采用先进的科学技术和生产要素装备农业,实现农业生产机械化、电气化、信息化、生物化,同时实现农业组织管理的现代化,实现农业生产专业化、社会化、区域化和企业化。

随着现代农业的迅速发展,国家政策的大力扶持,各类农业现代化设备制造企业蓬勃发展。

智能大棚系统是我们针对农业机械化、规模化生产所设计的现代化农业设备。

他可实现温度控制、干湿度自动调节及其他功能。

根据光照强度自动控制系统内温度,同时检测土壤干湿度进行自动灌溉。

关键字:

现代农业、智能大棚系统、温度检测、自动灌溉。

 

第一节引言

随着科技的发展,以广泛应用现代科学技术为主要标志的现代农业应运而生。

现代农业采用先进的科学技术和生产要素装备农业,实现农业生产机械化、电气化、信息化、生物化,同时实现农业组织管理的现代化,实现农业生产专业化、社会化、区域化和企业化。

随着现代农业的迅速发展,国家政策的大力扶持,各类农业现代化设备制造企业蓬勃发展。

智能大棚系统便是现代农业装备的典型代表。

它可以分为三大组成部分:

传感器检测部分、执行部分、CPU。

智能大棚系统具有温度自动调节和湿度自动调节功能。

可根据系统内温度通过卷帘模块卷起或放下保温帘,以维持系统内温度适宜,当光电传感器检测到停止信号时,卷帘机停止运动;土壤干湿度检测模块可通过多路信号对土壤的干湿度进行检测,通过控制系统与预先设定值进行比较,从而利用水泵进行灌溉,当土壤湿度达到设定值时,土壤湿度检测模块停止灌溉。

卷帘系统采用直流电动机,满足不同负载的要求,实现均匀、平滑的无级调速;同时具有较大的启动力矩。

供电模块采用220V交流电和直流稳压电源,为控制系统提供15V直流电。

后续扩展模块包括:

基于GSM的远距离控制模块、系统二氧化碳浓度监测模块等。

本智能大棚系统满足现代农业技术装备的要求具有广阔的市场和发展空间。

第二节智能大棚系统功能及设计方案

2.1设计要求

(1)设计任务

智能大棚系统内温度和湿度自动检测和调节。

(2)设计要求

1)根据系统内的实际温度比较设定的温度值实现保温帘拉起或放下,光电传感器检测到停止信号时,卷帘机停止运动,同时实时显示温度。

2)根据系统内土壤湿度和设定的湿度值比较实现自动灌溉。

2.2总体方案论证与比较

(1)控制系统

根据设计要求,我们认为此设计属于多输入量的复杂程序控制问题。

据此,拟定了以下方案并进行了综合论证,具体如下:

采用单片机作为整个系统的核心,用其控制系统内的各个变量,以实现其既定的性能指标。

我们选定了ATMEL89C52RC单片机作为本设计的主控装置。

(2)直流电机驱动模块(L298N)

采用双H桥大功率驱动芯片。

根据系统中电流、电压以及电动机在启动过程中的堵转、瞬时启动电流等参数,采用大功率的驱动芯片。

同时,考虑到电机在实际运行过程中的稳定性,采用PWM无级调速。

这种双极性脉冲调制方式具有很多优点,例如电流的连续;电机可在四象限运行;电机停止时有微振电流,起到了“动力润滑作用”,消除了正反相时的静摩擦死去;低速运行平稳性较好。

采用PWM占空比调整电动机的电机转速,每一组PWM波用来控制一个电机的转速,另外的I/O口可以控制电机的正反转,控制比较简单,电路也较简单。

(3)土壤湿度检测模块

土壤湿度检测模块的关键是湿度传感器。

该模块利用AD转换装置将土壤湿度传感器检测的模拟信号转换为单片机可以识别的数字信号,并通过I2C总线(I2C(Inter-Integrated Circuit)将该信号传送给单片机,单片机根据信号控制是否灌溉。

本模块采用FC-28土壤湿度传感器,它利用电磁脉冲原理、根据电磁波在介质中传播频率来测量土壤的表观介电常数(ε),从而得到土壤容积含水量(θv),FDR具有简便安全、快速准确、定点连续、自动化、宽量程、少标定等优点,同时测量精度高、性能可靠。

(4)其他辅助模块

温度显示模块采用最小系统中的数码管显示,直流电机采用25G-A280-150,温度传感器采用DS18b20,光电传感器采用E18-8MNK,电源模块采用THDPJ-2单片机开发综合试验箱中的直流电源。

第三节模块设计

3.1直流电机驱动模块(L298N)

采用双H桥大功率驱动芯片。

根据系统中电流、电压、以及电动机在启动过程中的堵转、瞬时启动电流等参数,采用大功率的驱动芯片。

同时,考虑到电机在实际运行过程中的稳定性,采用PWM无极调速。

在电机的运行过程中,消除了由于信号不稳定而引起的电机“爬行现象”,使电机平稳运行;同时,消除了在启动时,由于自身惯性而产生的冲击现象。

直流减速电机使用一路H桥,每个电机设置一个方向控制端,控制电机的转向。

单个通道可以向电机提供小于20A的驱动电流,满足了电机的启动要求,其最大的优点是内部还集成有续流二极管,该芯片的功耗也比较小比较适合直流电动机或步进电机的驱动。

图1L298N图2H桥驱动芯片

 

3.2土壤湿度检测模块

该模块利用AD转换装置将土壤湿度传感器检测到的模拟信号转换为单片机可以识别的数字信号,并通过I2C总线(I2C(Inter-Integrated Circuit)将该信号传送给单片机,单片机根据信号决定是否灌溉。

本模块采用FC-28土壤湿度传感器,它利用电磁脉冲原理、根据电磁波在介质中传播频率来测量土壤的表观介电常数(ε),从而得到土壤容积含水量(θv),FDR具有简便安全、快速准确、定点连续、自动化、宽量程、少标定等优点,同时测量精度高、性能可靠。

图3AD转化模块电路图4土壤湿度传感器电路

图5土壤湿度传感器

3.3电源模块

智能大棚系统的电源部分采用15V直流电和220V交流电。

可以提供充足的电压。

同时,在硬件方面,为了防止输出电压过高在电源输出的末端采用了两个稳压管,以保证两条PWM调速通道的电压稳定,避免由于电源而引起的调速干扰,从而维持电机的稳定运行。

图615V直流电源

3.4卷帘机及光电传感器模块

当温度达到设定值时,直流电动机带动卷帘机运动。

同时,在卷帘机的运动过程中,当光电传感器检测到卷帘机运动到极限位置时,给单片机发出停止信号,卷帘机停止运动。

NPN型光电传感器,未收到信号时,输出为高电平,当采集到外部信号后,输出为低电平。

图7光电传感器电路图8卷帘机

图9光电传感器

第四节程序设计流程图

 

 

 

4.1单片机系统的组成

单片机系统是整个智能大棚系统的核心部分,它对各路传感信号的采集、处理、分析及对各部分整体调整。

主要组成:

单片机ATMELC52一块、电机驱动芯片及各类传感器、数码管显示。

4.2PWM调速的实现

PWM调速控制的基本原理是按一个固定频率来接通和断开电源,并根据需要改变一个周期内接通和断开的时间比(占空比)来改变直流电机电枢上的电压,从而控制电机的转速。

在脉宽调速系统中,当电机通电时其速度增加,电机断电时其速度减低。

只要按照一定的规律改变通、断电的时间,即可控制电机转速。

而且采用PWM技术构成的无级调速系统.启停时对直流系统无冲击,并且具有启动功耗小、运行稳定的特点。

采用了单片机内部的定时器触发来产生脉冲信号,通过调节周期以及占空比就可以调节PWM输出波形,进而改变输出电压,以达到控制电机的目的。

通过示波器测试后确认单片产生合格的脉冲信号。

PWM控制原理:

每一组PWM波用来控制一个电机的速度,另外的IO口控制电机的转向,控制比较简单,电路也比较简单,简化了电路的复杂性,P2^5、P2^6控制右侧电机的转向,P2^0、P2^1控制左侧电机的转向;P0^4控制左侧电机的速度,P1^6控制右侧电机的速度。

图10PWM理想波形

两个电机的PWM调速程序:

#include

unsignedcharPWM1;

sbitIN1=P2^0;

sbitIN2=P2^1;

sbitIN3=P2^2;

sbitIN4=P2^3;

sbitPWM_zuo=P0^4;

sbitPWM_you=P0^5;

sbitKey1=P3^1;

sbitKey2=P3^0;

sbitKey3=P3^2;

CYCLE=10;

count=0;

PWM_ON1=7;

PWM_ON2=7;

voidchushihua()

{

TMOD=0x10;

TH1=0xff;

TL1=0xfc;

IE=0x88;

TR1=1;

}

voiddianji()

{

PWM_zuo=PWM_you=PWM1;

//PWM_you=PWM2;

}

voidzhengzhuan()

{

IN1=1;

IN2=0;

IN3=0;

IN4=1;

}

voidfanzhuan()

{

IN1=0;

IN2=1;

IN3=1;

IN4=0;

}

voidting()

{

IN1=0;

IN2=0;

IN3=0;

IN4=0;

 

}

voidmain()

{

chushihua();

while

(1)

{

IN1=1;

IN2=1;

IN3=1;

IN4=1;

if(Key1==0)

{

zhengzhuan();

}

if(Key2==0)

{

fanzhuan();

}

if(Key3==0)

{

ting();

}

//IN1=1;

//IN2=0;

//IN3=0;

//IN4=1;

dianji();

}

}

voidtime0(void)interrupt3using1

{

TH1=0xff;

TL1=0xfc;

count++;

if(count

{

PWM1=0;

}

elsePWM1=1;

//if(count

//{

//PWM2=0;

//}

//elsePWM2=1;

if(count>=CYCLE)

{

count=0;

PWM1=0;

//PWM2=0;

}

}

4.3温度显示及检测的实现

温度检测原理:

低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量。

计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值。

减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。

温度显示及检测子程序:

voidLcdDisplay(inttemp)//显示

{

//定义数组

floattp;

if(temp<0)//当温度值为负数

{

LcdWriteCom(0x80);//写地址80表示初始地址

SBUF='-';//将接收到的数据放入到发送寄存器

while(!

TI);//等待发送数据完成

TI=0;//清除发送完成标志位

LcdWriteData('-');//显示负

//因为读取的温度是实际温度的补码,所以减1,再取反求出原码

temp=temp-1;

temp=~temp;

tp=temp;

temp=tp*0.0625*100+0.5;

//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点

//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就

//算由0.5,还是在小数点后面。

}

else

{

LcdWriteCom(0x80);//写地址80表示初始地址

LcdWriteData('+');//显示正

SBUF='+';//将接收到的数据放入到发送寄存器

while(!

TI);//等待发送数据完成

TI=0;//清除发送完成标志位

tp=temp;//因为数据处理有小数点所以将温度赋给一个浮点型变量

//如果温度是正的那么,那么正数的原码就是补码它本身

temp=tp*0.0625*100+0.5;

//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点

//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就

//算加上0.5,还是在小数点后面。

}

datas[0]=temp/10000;

datas[1]=temp%10000/1000;

datas[2]=temp%1000/100;

datas[3]=temp%100/10;

datas[4]=temp%10;

}

4.4数码管显示模块的实现

数码管显示利用38译码器进行段选和位选,并通过数码管输出信号。

由于只要求显示四位,故只驱动四个数码管。

数码管显示子程序:

voidDigDisplayr()interrupt1

{

//定时器在工作方式二会自动重装初,所以不用在赋值。

//TH0=0X9c;//给定时器赋初值,定时1ms

//TL0=0X00;

DIG=0;//消隐

switch(Num)//位选,选择点亮的数码管,

{

case(7):

LSA=0;LSB=0;LSC=0;break;

case(6):

LSA=1;LSB=0;LSC=0;break;

case(5):

LSA=0;LSB=1;LSC=0;break;

case(4):

LSA=1;LSB=1;LSC=0;break;

//case(3):

//LSA=0;LSB=0;LSC=1;break;

//case

(2):

//LSA=1;LSB=0;LSC=1;break;

//case

(1):

//LSA=0;LSB=1;LSC=1;break;

//case(0):

//LSA=1;LSB=1;LSC=1;break;

}

DIG=disp[Num];//段选,选择显示的数字。

Num++;

if(Num>7)

Num=0;

}

4.5光电传感模块的实现

通过光电开关接收外部的控制信号,当外部无信号时,光电开关输出高电平,当光电开关检测到卷帘机运动到极限位置时,由于遮挡,输出低电平,卷帘机停止运动。

温度传感器达到设定温度时,光电开关传感器恢复动作。

光电开关传感器子程序:

voidmain()

if(((temp%1000/100>0))&&((temp%1000/100<2)))

{

fanzhuan();

if(key1==0)//停止传感器

{

ting();

}

}

else

{

ting();

}

if(((temp%1000/100>2))&&((temp%1000/100<4)))

{

zhengzhuan();

if(key1==0)//停止传感器

{

ting();

}

}//高温

4.6系统分析

智能大棚系统基本上可以满足前期的设计要求,能够完成温湿度自动检测,自动灌溉等功能。

但同时也存在着一些设计之前未曾预料到的问题,主要问题如下:

1.直流电机的调速不完美。

理论上,直流电机通过L298N调速之后可以输出各种电压,但实际调速中,由于受到电机参数等影响,最终输出电压只能稳定在3V左右。

同时,输出的电压由于实时检测,所以很不稳定,导致电机有堵转的情况发生,电机在启动过程中,启动惯性较大,但提供的启动电流较小。

2.单片机的输出端口接负载时,对外输出产生影响。

单片机的某些端口,由于外加负载,对外输出电压发生变化。

L298N驱动板在调试过程中碰到了P1端口输出电压较小的问题,直接影响了桥式电路的运行,在花费了半天的时间之后才发现毛病。

3.温度传感器对电机运行的影响。

由于温度传感器对信号进行实时转化,这样,温度便在实时的变化,电机依照设定的温度进行运行,由于温度的跳跃性,以及温度传感器的检测精度等问题,导致,电机的运行不精确。

 

第六节课程设计总结

通过各种方案的讨论和尝试,再经过多次的整体软硬件的结合调试,不断的对系统进行优化,智能大棚系统可以完成各项功能。

大棚模型总长25mm,宽20mm,高15mm。

在系统的设计过程中,我们力求硬件线路简单,充分发挥软件编程灵活方便的特点,来满足系统设计的要求。

从最终综合测试的结果来看,本系统能够很好地完成设计要求,并具有发展空间。

在本次设计活动中,我们学到了很多东西,从机械到软件,掌握了各种元件的基本原理,并学会了使用方法,注意事项等,极大地丰富了我们的课外知识,拓宽了我们的知识面。

在整个设计、制造的过程中,还遇到了很多突发的事件和各种困难。

直流电机调速过程中,单个电机运行可以满足各种调速要求,但是,当直流电机和温度模块整合测试时,由于温度测量模块18b20使用数码管输出温度,在显示过程中,需要不断地进行“刷屏”,因此需要用定时中断程序;而PWM电机调速中,输出的PWM波形,同样也是依靠定时中断程序来完成的,这两个中断发生冲突。

温度显示模块的定时程序对时间的要求较低,(定时时间不需要太短,只要刷屏的速度超过人的肉眼的辨别力即可)而PWM的定时,由其原理决定,定时时间要求极短,这样才能满足波形精确的要求。

通过不断的进行调试、整合、修改,最终将输出电压稳定在3V左右。

同样,在程序的最终整合阶段,由于使用了温度、湿度、光电传感器,这样就需要不断的进行AD转化,多路信号的传输,对单片机的运行提出了很高的要求,多次遇到多路信号相互影响的情况,但通过仔细的分析、讨论和我们自己的调整,最后这些问题都解决了,提高了我们分析问题,解决问题的能力,也进一步提高了我们的动手能力。

在硬件模型制作的过程中更是对我们的动手能力提出了较高的要求,大棚的拱形模型的制作耗费了大量的时间,卷帘机的制作也让我们吃尽了苦头。

不过,值得欣慰的是,模型最终制成了,也基本满足了我们的要求。

无可否认,在调试的艰难阶段,也想过放弃,不过,最终还是坚持下来了。

在这里对给予我们帮助的王常顺、饶中洋老师,以及韩峰波、段成杰、董勇圣、王智、吴明明、冯延猛等同学一并表示感谢。

这次活动让我学到了很多课堂之内远远学不到的东西,譬如毅力、耐力,这些都将使我终生获益,而我们也认为,精神上的收获与充实,高于最终比赛的成绩。

 

附录

附录1:

实物模型

附录2:

主程序:

#include

#include"temp.h"

#include"i2c.h"

//--定义使用的IO--//

#defineGPIO_DIGP0

sbitLSA=P2^2;

sbitLSB=P2^3;

sbitLSC=P2^4;

sbitwet=P2^7;

//--定义PCF8591的读写地址--//

#defineWRITEADDR0x90//写地址

#defineREADADDR0x91//读地址

//--定义全局变量--//

unsignedcharcodeDIG_CODE[17]={

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码

unsignedcharDisplayData[8];

//用来存放要显示的8位数的值

//unsignedcharcodeFFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};//反转顺序

//unsignedcharcodeFFZ[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};//正转顺序

//unsignedcharDirection,Speed;

//

//--声明全局函数--//

voidDigDisplay();//动态显示函数

voidPcf8591SendByte(unsignedcharchannel);

unsignedcharPcf8591ReadByte();

voidPcf8591DaConversion(unsignedcharvalue);

voidDigDisplay();

//数码管IO

#defineDIGP0

/*sbitLSA=P2^2;

sbitLSB=P2^3;

sbitLSC=P2^4;

inttemp;

unsignedcharcodeDIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};*/

unsignedcharNum=0;

unsignedintdisp[8]={0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f};

unsignedcharPWM1,PWM2;

sbitIN1=P2^0;//没用

sbitIN2=P2^1;//没用

sbitIN3=P2^5;

sbitIN4=P2^6;

sbitPWM_zuo=P0^4;//没用

sbitPWM_you=P1^6;

sbitkey1=P3^1;//停止按键

CYCLE=8;

count=0;

PWM_ON1=7;

PWM_ON2=7;

voidLcdDisplay(int);

voidTimer0Configuration();

voidchushihua()

{

TMOD=0x10;

TH1=0x9c;

TL1=0x9c;

IE=0x88;

TR1=1;

}

voiddianji()

{

PWM_zuo=PWM_you=PWM1;

//PWM_you=PWM2;

}

voidzhengzhuan()//RIGHT

{

IN

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2