基于51单片机的湿度检测系统

2023-02-01  

第1章 课题概述


1.1 课题概述

课题的设计和研究方对象,设计过程及研究内容、实际应用的背景等,针对同一课题,同组内也必须不同

本课题是以C51为基础对湿度检测系统进行简单设计,设计的主要过程为确定连接电路,根据电路原理图进行电路板的焊接,再进行湿度检测程序的设计,最终将程序烧录进单片机进行实际验证。研究内容即为主要程序设计。湿度检测的应用场景十分广大,例如在蔬菜大棚、工厂车间、实验室、药房、库房、仓库、粮仓、酒窖、图书馆、档案馆、文物室等地方。

1.2 课题要求

1)利用51单片机做控制芯片,用GY-39来实现环境湿度的检测

2)湿度值需要保留一位小数

3)湿度值通过计算后,要能够准确的显示在数码管上




第2章 系统设计


2.1 框图设计

湿度系统分为两大模块,硬件系统和软件系统,硬件系统分为三个部分,依次数码管焊接,单片机焊接,继电器焊接,主要接口及连线。软件系统主要包括数码管显示,数据处理,继电器控制。

图2.0 电路板背面焊接图



2.2 知识点

  1. C51函数的定义——延迟函数等。

  2. 波特率以及通信方式的设置

通信方式0 1 2 3 其中方式 1 3 是波特率可变 方式0 2 不可变。方式1 3的波特率波特率的计算公式:波特率 = T1溢出率 * (2 ^SMOD) / 32; 2的SMOD次方。{波特率是由T1的溢出率决定的而且定时器1的溢出率是使用定时器1的工作方式2来(提供)}

  1. 接收与发送数据

假设波特率和通信方式设置好了,发送的基本原理:有一个数据发送缓存寄存器(SBUF),CPU如果要通过串口发送数据,可以直接向SBUF赋值,串口控制器在一定的波特率控制下,会一个bit一个bit往TX引脚传输数据,当数据发送完成以后TI标志位会置1,接收伪代码:

char data;

while(RI == 0); //等待数据来到串口接收缓存寄存器

data = SBUF;

RI = 0;

接收的基本原理:一个接收数据缓存寄存器(SBUF),CPU如果接收外部串口发过来的数据,先得判断RI这个标志位是否为1,当RI == 1时,就可以把SBUF里面得值拷贝出,接收和发送数据的方式可以为轮询,也可以采用中断的方式,一般发送数据的时候用轮询,接收的时候用中断

中断方式

void uart() interrupt 4

{

if(RI == 1)

{

data = SBUF; //接收数据

....

RI = 0;

}

}

SMOD:PCON寄存器的第7位 其余的7个位没有实际意义(保留)SMOD位为0波特率不变,为1波特率翻倍,PCON寄存器是叫做串口通信模式选择寄存器。

例如:串口通信方式1

波特率为9600

SM0 = 0;

SM1 = 1; //配置串口通信的工作方式1

REN = 1; //配置串口通信接收使能

//配置串口通信的波特率

PCON = 0x00;//SMOD = 0;//设置波特率不翻倍

波特率 = T1溢出率 * (2 ^SMOD) / 32;

TMOD = 0x20;//配置定时器1的工作方式2

TH1 = 0xFD;

TL1 = 0xFD;

TR1 = 1; //开启定时器1

假设我要使用串口通信中断:

ES = 1; //打开串口中断

EA = 1; //打开总中断

  1. pnp开关电路的控制原理:基极电压高于1v三极管就可以达到饱和导通:低于0.4v就截止。0.6-0.7V左右处于放大区。三极管在数字电路中可以当做开关来使用。可以作为基极电流控制的无触点开关。工作状态为饱和和截止状态,放大状态只是一个过渡过程。三极管饱和相当于开关闭合,截止相当于开关断开。

  2. 共阳极数码管显示数字。

  3. 继电器工作原理:电磁继电器一般由电磁铁,衔铁,弹簧片,触点等组成的,其工作电路由低压控制电路和高压工作电路两部分构成。电磁继电器还可以实现远距离控制和自动化控制。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)释放。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。




2.3 硬件设计

2.3.1 电路原理图

电路图主要包括一个最小系统、四位数码管、继电器、蜂鸣器以及GY-39的连接。

GY-39连接






1-最小系统 2-AT89C51 3-四位数码管 4-GY-39 5-继电器

6-UN2003A 7-蜂鸣器 8-pnp三极管


图2.1 湿度系统结构理论图




2.3.2 元件清单

表编号为:

章数.表序号

不要让表头、说明与表分成2页


表2.1 基于51单片机的湿度检测系统元件清单

序号 名 称 型 号 数 量 用 途
1 单片机芯片 AT89C52 1片 控制作用
2 传感器 GY-39 1个 获取外界数据
3 四位数码管 3461BS-1 1个 数码显示
4 排阻 RESPACK-8 1个 稳定单片机输出电压
5 蜂鸣器 2048Hz 1个 测量环境温度
6 COMS逻辑器件 ULN2003L 1片 驱动继电器和蜂鸣器
7 小信号三极管 PNP 4个 驱动数码管
8 晶振 12MHZ 1个 稳定震荡
9 晶振 11.0592 1个 稳定震荡
10 电阻 1K 4个
11 电阻 330 4个

2.3.3 电子焊接制版及效果

表编号为:

章数.表序号

不要让表头、说明与表分成2页

在实际焊接过程中,由于操作不熟练,造成了部分元器件的损坏,有些焊点不均,在实际连线中注意连线,数码管8个排针与P0口连起来, PUT1-4四个管脚与P1^0-P1^4,Vcc、Ground对应传感器的连接,P3^0与P3^1连接CT、DR。

图2.2 电路板背面焊接图


图2.3 电路板正面接线图

2.4 软件设计

2.4.1 程序流程图

先是接收传感器数据,然后对数据进行处理,传到数码管显示,并进行数据判断,如果数据超过范围值,执行继电器,结束。以此将其划分为四个模块,传感器与单片机通信模块,单片机内部数据处理模块,数据显示模块,继电器模块。

总的来说就是在实际应用中,大棚里面的湿度状况经由传感器获得数据,传到单片机里进行数据处理,处理完毕后,将湿度数字以四位显示在数码管上,之后再进行判定,如果湿度达到一定值以上或者一下,就将大棚的大门打开通风,减小湿度,或者关闭大棚大门,增加湿度。

图2.4 程序流程图

2.4.2 程序设计

主要程序设计为发送接受数据、显示、执行控制三个。

由图2.5可以看出此部分程序,通过用循环的方式,将数组中的值不断传到发送缓存器中,之后将发送标志位手动清零。

图2.5 发送程序流程图


数据处理就是将传到单片机的一帧数据进行处理,将传进来的第10位和11位进行处理,再由传感器说明书上的Hum=(高 8 位<<8)|低 8 位 得到后续处理,因为数码管要逐位显示,所以要将int数据通过除,取余来化成对应的个十百千位上的数据。



数码管显示用动态扫描,先将共阳极0-9段码存入数组中,之后将得到的数值带入数组中,遍历显示,视觉暂留,所以延迟了几毫秒。

图2.7 数码管程序流程图


接受一帧数据,由于我们只需要10位以及11位的数据,所以取到了15位。然后对RI手动清零。

继电器以及蜂鸣器功能部分是通过for循环对数据进行判断,首先判断湿度是否大于60,如果大于60蜂鸣器报警,然后下一步判断湿度是否大于30,如果大于30,经由继电器启动,大棚大门打开,如果小于25,大门关闭。

图2.8 蜂鸣器和继电器程序流程图


2.5 系统仿真及调试

由于protuse中不含有GY-39,所以使用实际情况图片代替仿真图,在实际过程中吹口气增加了湿度。数值由66.82增加至了87.38,符合预期效果。

图2.9 吹气前数据图

图2.10吹气后数据图

结 论


通过两周课程设计,使我更加扎实的掌握了电工电子&单片机方面的知识,在设计过程中虽然遇到了一些问题,像是某些电路的连接中,存在短路现象,对于传感器的说明与应用,这些问题在老师的提点以及同学的帮助下得到解决,在程序编辑过程中,也暴露出了前期我在这方面的知识欠缺和经验不足,在焊接电路板的时候,焊过之后就是应该先焊贴片类元件,再焊大的元件。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵,从制版到制作程序的知识得到了应用于加深。

知识的加深是一方面,团队合作的重要性是另一回事,团队需要合作,不能搞什么大包干之类的,要合理分配,组队时要选择合适的搭档,长处互补。此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。

本次课程设计基本达到课程要求,可以成功显示湿度值,需进一步改进的地方,是湿度检测执行方面,将继电器开关可以改成电机之类的控制蔬菜大棚的帘子,以此控制通风,来达到调节湿度的目的,再就是可以增加调节功能,以此满足用户在种植培育不同作物时,需要不同的最佳湿度状况的发生。


参考文献


谢永超,杨利.基于STC89C52单片机土壤温湿度检测器的设计[J].计算机测量与控制,2019,27(10):205-208+213.

南志坚.基于STM32的室内温湿度检测器设计[J].黑龙江科技信息,2014(07):21.

杜豫平.基于51单片机的温湿度检测器设计[J].电子世界,2011(15):64-65+95.

周志宏.基于STEM的中职Arduino机器人教学设计——以“实时温湿度检测器”为例[J].数码世界,2019(08):188.

]亚萍,李抗抗.实验室温湿度智能监控系统设计[J].兰州文理学院学报(自然科学版),2020,34(06):72-75.

[6]鹏娟,任宇双.基于花房的温度湿度光照控制系统设计[J].机械研究与应用,2020,33(04):86-90.附 录




文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。