简单的课程设计报告-蔬菜大棚的智…

来源:互联网 发布:域名转让程序 编辑:程序博客网 时间:2024/04/28 14:14

蔬菜大棚的智能控制系统

一、       要求和意义

1、 要求

蔬菜大棚的智能控制系统的设计,使用51单片机和无线通信模块完成以下基本功能:

使用温度传感器测量大棚温度;

使用两位数码管进行动态显示;

超过35度自动打开风机(用led灯模拟),低于28度关闭风机。

扩展功能:

利用光敏传感器检测,实现大棚外路灯的自动控制,白天关灯,晚上亮灯(节点模块);

红外遥控手动控制风机和路灯(上位机模块)。

可选用的器件与元件:(具体实物要根据学校给出的作为标准)

STC89C51单片机、nRF24L01模块各两块,18B20、光敏电阻各一个,共阳两位一体数码管一块,电阻、电容、三极管、LED灯、按键任选。

学生2人一组,独立完成电路分析和设计,并完成系统调整和测试。每个人必须能完成不同的功能,最后组成一个总系统,并且做成电路实物系统。

 

2、 意义

根据需要选学参考书,查阅手册,图表和文献资料的自学能力,通过独立思考﹑深入钻研有关问题,学会自己分析解决问题的方法。

利用所学过的最基本的MSC51单片机和无线电通信知识,通过设计计算﹑元件选取﹑电路板制作调试等环节,初步掌握工程设计的技能

掌握常用仪表的正确使用方法,学会简单电路的实验调试和整机指标测试方法,使学生巩固和加深对数字逻辑电路的理论知识,锻炼学生的动手能力

了解与课程有关的电子电路以及元器件工程技术规范,能按课程设计任务书的技术要求,编写设计说明,能正确反映设计和实验成果,能正确绘制电路图。

培养严谨的工作作风和科学态度,能够逐步建立正确的生产观点,经济观点和全局观点。

二、硬件电路设计

   1仿电路设计

根据课程设计的要求,初步决定蔬菜大棚的智能系统框图,如图一:

简单的课程设计报告-蔬菜大棚的智能控制系统

根据图一的大概框架,使用Proteus仿真软件进行系统的仿真,验证电路的可靠性和可行性。

仿真电路如图二所示:

简单的课程设计报告-蔬菜大棚的智能控制系统

仿真图说明:

根据参考器件仿真电路MCU选用STC89C52单片机,如上图所示,查阅资料[1]可以知道该单片机的最小系统,包括:时钟电路(这次仿真电路使用11.0592M晶振)、复位电路等,其中P0八个I/O口要使用10k上拉电阻才能驱动数码管的段位。外部电路有:数码管电路(另一组员负责)、温度传感器电路(本人负责)、抽风机电路(用LED灯代替)。所有程序将在下面说明。

指导老师的检验:

   我们这组的仿真电路已经成功了,但是这是理想状态下的仿真,与实际电路还有一些出入,本人负责的电路中第一个问题是温度传感器,在实际电路中需要使用上拉电阻,电阻阻值范围是4.7k—20K;第二个问题是抽风机电路,虽然是一个LED灯作为代替,但是在实际电路中要使用一个限流电阻,根据这两个问题在实际电路设计的时候要加上。

2器件与元件补充说明

   根据设计需要我们将使用的是STC89C52单片机,但是在学校领取的是STC12C5A60S2单片机。查询资料STC官方资料[2],可以比较出两种单片机的不同点和相同点,不同点:复位电路更加简单,P0将不用上拉电阻,并且P1AD转换功能,这样可以使用在光敏传感器检测中扩展功能色设计。相同点是电源、地、RxTx引脚位置相同,这样可以使用51单片机的开发板进行程序的焼写。

3、电路设计

 1)、STC12C5A60S2单片机最小系统如下图所示:

简单的课程设计报告-蔬菜大棚的智能控制系统


说明:STC12C5A60S2单片机的引脚封装与STC89C52单片机的引脚封装一样,所以使用STC89C52单片机原理图。所以上图部分引脚的标注不正确,但是不影响其封装的使用,两种单片机都是使用一样的封装。复位电路的设计是根据STC12C5A60S2单片机技术文档[2]所描述的来设计,使用一个10uF的电解电容和1k的电阻组成;晶振电路使用两个33uf的瓷片电容和一个11.0592M频率的晶振组成。

 

2)、温度检测模块,如下图所示:

简单的课程设计报告-蔬菜大棚的智能控制系统

说明:温度传感器使用的是DS18b20,其封装是TO-92封装,数据传输引脚使用一个4.7K的电阻作为上拉电阻,并且跟单片机的P3^7接口相连接。DS18B20的数字温度计提供912位(可编程设备温度读数)。由于DS18B20是一条口线通信,所以DS18B20只有一个一条口线连接。为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。因为每一个DS18B20的包含一个独特的序号,多个ds18b20s可以同时存在于一条总线。

 

3)、抽风机模块和其他模块,如下图所示:

简单的课程设计报告-蔬菜大棚的智能控制系统

说明:在抽风机模块中,使用一个LED灯代替抽风机,这样就要使用一个470欧电阻个LED灯串联使用,并且跟单片机的P3^5引脚连接如上图所示。灯与光敏传感器组成的电路时扩展部分设计,具体电路如上图所示。

 

4)、电源模块,如下图所示:

说明:电源模块在系统设计中是一个很重要的部分,在这个模块中,因为外接电源是5v电压,所以在本系统设计中主要是加入滤波跟开关部分,滤波电路由一个104瓷片电容跟一个10uf电解电容组成。

简单的课程设计报告-蔬菜大棚的智能控制系统

 

5)、调试电路模块,如下图所示:

简单的课程设计报告-蔬菜大棚的智能控制系统

说明:系统的调试是一个很重要的步骤,所以要加上调试接口,这样就不用经常拔插单片机,方便以后的调试系统使用。本接口主要的部分是电源引脚和P3^0引脚、P3^1引脚,这四个引脚都是为了焼写程序做准备,其他引脚作为附加和固定作用。

 

 

二、       程序设计

1)、温度传感器子程序

说明:程序的设计使用KeiluVision4软件,本人负责的是DS18b20温度传感器[3]对温度的检测和温度的读取部分。本人将关于温度传感器有关的子程序做成一个头文件来使用,具体的程序流程,如下图所示。在温度读取上,直接在头文件里就做数据的处理,转换成十进制两位数,转换语句如下:

 

 

a=ReadOneChar();

b=ReadOneChar();

temp=b;

temp<<=8;

temp=temp|a;//将读取到的两个八位二进制数据合并

f_temp=temp*0.0625; //计算出温度,带小数点,16位分辨率是0.0625

temp=f_temp+0.5; //四舍五入,取整数如实际温度是11.6°,将//显示12°

 

上面的转换过程能够在仿真时正确使用。

简单的课程设计报告-蔬菜大棚的智能控制系统

 

 

 

 

 

2)、抽风机子程序流程图

说明:首先是对温度的处理一次,然后使用if语句进行对温度的判断,如果温度大于35°就打开抽风机;如果温度小于28°就关闭抽风机。在这就有一个数据段是没有处理的,就是温度在28°到35°这一段,根据实际分析可以做出处理:当温度是有35°以上开始下降的,下降到35°不用关闭抽风机,一直下降到28°才关闭抽风机,这样有利于对温度的下降。反之当温度上升到35°才开始打开抽风机。

简单的课程设计报告-蔬菜大棚的智能控制系统

 

 

 

 

3)、主程序流程图

   说明:主程序是一个大循环,使用的while语句处理,在主函数中,首先读取温度,然后是温度的显示,最后是抽风机子函数的处理。

简单的课程设计报告-蔬菜大棚的智能控制系统


 

 

四、调试记录

1、调试前的准备

   在调试之前就是对硬件的处理,首先确保PCB电路板要设计正确,PCB板的制作要符合电磁兼容性(EMC原则;然后是电子元件必须正确焊接;接着使用万用表检查电路是否短路,焊接是否合格,检查是否有断路、虚焊的情况;最后把程序下载到单片机中,并接到电路板中。

2、上电调试过程

   在接电源之前,要确保电源的正负极接正确,开关是否在正确的位置。根据实际情况我们是使用分模块调试的方法进行对电路的调试。首先是数码管显示的调试,这部分是另一位组员负责,在这里不作详细说明。

   在调试好数码管,使之能够正常显示后,本人开始对温湿度传感器模块进行调试,下面是本人的详细调试过程:

   本人将仿真使用过的程序把它焼写进单片机,观察数码管时能够正常显示出当前的温度,发现数码管不能正常显示,显示出两个0

   首先,检查是否是硬件的问题,因为这个模块使用的元件比较少,只有一个上拉电阻和一个传感器,首先检查上拉电阻是否使用正确,这个电阻的阻值是4.7k,正常使用时可以的;然后检查温度传感器的引脚是否接正确,实际上没问题;最后检查温度传感器是否不能工作,在这个过程本人编写了一个串口温度检测程序,在上位机上测试发现PC机能够正常显示出温度,说明温度传感器没有损坏,能够正常工作;在这里排除硬件的问题。

   然后,检查是否是单片机的问题,因为对于温度处理,全部是在温度传感器这个头文件中。程序是在STC12C5A60S2单片机中运行的,而仿真时使用的单片机是STC89c52单片机,也许两者有一些不同的地方,查阅STC12C5A60S2单片机的技术文档发现,该单片机的运行频率比较高,在读取温度上可能不能正常读取,所以要利用时钟分频控制寄存器进行时钟分频,从而使单片机在较低频率下工作,设置如下:

 

sfr CLK_DIV = 0x97; //定义时钟分频控制寄存器地址

CLK_DIV = 0x03;//(外部晶振时钟或内部RC振荡时钟)/8

 

再次,焼写改写过的程序,依然不能正常显示温度。

   接着,在排除单片机的问题之后,开始对程序的检查是否正确。主要是在头文件中找问题,可能的问题就是在温度的转换过程中出现错误,仔细分析在处理温度的程序,发现本人在主函数处理的温度主要是整数部分,而小数点之后的数据是没有读取的,在这里本人将在头文件的子程序中转换和读取四位数据,包括两位整数和两位小数,在主程序中只显示整数部分。在ab读取温度之后,就让程序的处理如下:

 

   //传感器返回值除16得实际温度值

   //为了得到2位小数位,先乘100,再除16,考虑整型数据长度,

   //技巧处理后先乘25,再除4,除4用右移实现

    t =(b*256+a)*25;

   return( t >> 2  );

 

3)、最后再次焼写改写后的程序进单片机,就可以得到正常的温度了,并且能够正常工作。

 

4)、我们这组准备做的扩展模块是光敏对电灯的控制,我们的计划是使用该单片机的P1  IO口进行八位的AD转换,通过测量经过光敏电阻的不同电压来控制电灯的亮跟灭。由于在电路设计上的缺陷,不能正常测量出经过光敏电阻的电压,最后不能成功。因为在AD转换引脚上的信号输入,没有加上滤波电容和一个分压电阻,所以不能正常工作。这是我们感到遗憾的一个地方

 

 

 

调试时间

调试步骤

调试结果

分析结果

解决方法

结论

2014325

调试前硬件电路检查

发现短路和断路的布线

造成电路板不能正常工作

认真检查原理图和用万用表检查电烙铁电焊位置

在电焊的时候要注意电路走线是否正确,焊盘之间是否短路

2014325

数码管模块调试(另一组员负责)

2014325

DS18b20模块调试

不能正常显示温度,只显示00

1、硬件电路问题

 

1、再次检查硬件电路和上拉电阻是否使用正确

在模块调试过程中,要一步步来调试排除问题,通过分析问题,找出最优的方案来得出实验的结果。

2、新单片机与仿真用的单片机有性能差别;

2、在程序中加上降低工作频率的代码

3、温度传感器损坏;

3、使用开发板测试温度传感器是否正常工作,可以正常使用

4、程序出现错误

4、修改DS18b20头文件,读取全部温度位数

2014325

抽风机模块(LED灯代替)

不能正常亮

1、硬件电路问题;

1、用万用表检查硬件电路

在用万用表检查电路是发现有断路的现象,最后检查是焊盘出现虚焊的原因,解决后再次用程序测试,LED灯可以正常显示

2、程序出问题

2、编写测试程序

 

 

五、课程设计体会

      作为一名通信工程的大三学生,单片机课程设计是十分有意义的,而且是十分必要的。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?类似的课程设计就为我们提供了良好的实践平台。

      在这次的单片机课程实际过程中,我们这组从开始到调试结束经过了5个星期的时间,而且扩展模块没有完成,虽然一开始就计划好要做光敏电阻那一部分,最后还是未能完成,这是一个小小的遗憾。主要问题是在硬件设计时就没有好好考虑扩展部分电路问题,导致那一部分简单电路不能正常工作。从这里可以看出考虑问题的水平,以及后续问题处理能力还有待提高。

      我们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,若遇到实在搞不明白的问题就会及时请教同学和老师,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。

通过这次课程设计发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。这也激发了今后努力学习的兴趣,这将对我以后的学习产生积极的影响
0 0
原创粉丝点击