一个基于单片机的鸡舍环境控制系统的设计与实现

2023-04-14 09:13:34徐玲
电脑知识与技术 2023年6期

徐玲

摘要:鸡已经成为现代人不可或缺的重要肉类,而人们在食用鸡肉的同时,也在关注着鸡类的养殖环境。环境对鸡的生长有着至关重要的影响,合适的养殖环境能够有效降低发病率死亡率及提高鸡的品质和产蛋能力,经翻阅资料得出,湿温度及有害气体对鸡舍环境的影响最大。该设计以单片机为核心,配合传感器模块,显示屏模块及报警器模块等,设计了一款可以实时监测鸡舍环境中的温湿度及有害气体的控制系统。该系统能够实时检测所处环境中的相关因素并在显示屏上显示相关参数,通过设置相关参数的报警值,当参数超过报警值时系统触发警报模块。当参数符合报警值时,系统会终止警报。设计反应灵敏、误差小、不易出错、使用范围广,具有很强的实用价值及良好的市场前景。

关键词:STM89C52;环境控制;气体传感器;AD转换芯片

中图分类号:TP311        文献标识码:A

文章编号:1009-3044(2023)06-0069-04

开放科学(资源服务)标识码(OSID)

1 绪论

伴随着中国畜牧业的快速发展,养殖行业进行了大幅度变革。传统的养殖行业面临着许多问题,由于天气的原因可能会导致鸡舍内部的温度差变大,从而影响鸡的健康。由于养殖规模的扩大,所需的人力也会增加,饲养人为的浪费也会大大增加。并且人为的饲养会导致饲养的粮食数量不一,鸡也会存在吃得太多,或者不够吃的情况,从而产生一些疾病。并且鸡的喂养,粪便等都需要人为进行操作处理,而智能养鸡舍的出现缓解了以上问题。智能养鸡舍解决了传统养鸡舍的体力劳动造成的人力上过于劳累的问题。智能养鸡舍环境可控,可以使鸡生活在最舒适的环境里,做到集约化、标准化。同时,可以减少生产所需的人力。由于饲养设备的先进性,饲养人为的浪费也就大大减少,从而提高生产效率的同时降低了饲养成本。而且智能养鸡舍还具有环境比较隔绝,外界影响小、疾病好控制等优点。

1.1 课题研究背景及意义

当今时代电子技术不断进步,环境控制方法发展到了一定的高度,以计算机系统为基础的环境控制手段更加快捷、方便,使用更加广泛。社会在现代化的道路上不断拓展,随着生活品质的提高,人民在禽肉的需求上不断膨胀,过去的生产方式已经很难满足社会的需要,而随之诞生问世的现代化农业养殖技术越发受到人民的青睐。据了解,鸡类动物在生产过程中受到湿温度及有害气体等多种因子的共同作用,环境的好坏决定着鸡只的品质。通过现代化的环境控制技术,可以为鸡类动物提供一个最佳的生长环境,从而改善鸡类动物的生长养殖环境,进而提高鸡类动物的质量[1]。因此,如何避免鸡舍养殖环境免受不利因素的影响是人民一直在思考的问题,同时成本低、收益高、使用方便也是需要考虑的。而传感器技术为我们很好地解决了问题,我们可以使用单片机技术配合显示器、警报器和传感器等组成一个基于单片机的鸡舍环境控制系统,该系统可以采集环境数据和显示环境数据,并能够智能报警。通过设置该系统,可实现优化鸡舍的养殖环境,为鸡只提供一个良好的生长环境,从而提高鸡只的整体质量,使得所养殖的鸡只在市场上更加具有竞争力。另外通过智能化控制,鸡舍环境控制的智能化程度大大提升,管理也更加简单,从而为鸡舍的饲养人员减轻了劳动强度。本系统具有成本低,误差小、收益高,使用方便等优点,具有良好的社会效益及经济效益。

1.2 研究内容

本课题设计的是一款能够应用在各种复杂环境的小规模鸡舍,能够监测鸡舍环境中的包括湿温度、有害气体等较为重要的环境因素,并且具备报警功能的,基于单片机的鸡舍环境监控的软件系统及硬件系统[2]。其中湿度的控制尤为重要,把这两个因素控制在合适的范围内,能够有效提高鸡只的生产质量。鸡舍环境控制具有很强的系统性、完整性和整体性。

本次设计是拟实现一个具有实时监测鸡舍环境中的湿温度、HCHO、CO和CO2参数,配合智能报警模块等为一体的多功能基于单片机的鸡舍环境控制系统,要求其精度合适,能应用于鸡舍内环境的监测。其中主要的模块包括报警模块、按键模块、显示模块及气体传感器模块等。

1.3 研究思路

本系统以STC89C52单片机为控制核心,以湿温度、HCHO、CO及CO2检测传感器为测量元件,以LCD显示屏为显示,以电机为执行机构,配上按键模块及警报模块(蜂鸣器及LED灯),构成了基于单片机的鸡舍环境控制系统。系统通过各路传感器电路检测所处环境的温度、一氧化碳、湿度、甲醛和二氧化碳的数据并将其转换成数值的形式,在显示器上实时呈现,同时将采集到的数值与预设值进行比较,当数值超出预设值时,系统会发出警告声和灯光亮起。当数值低于预设值时,系统仅显示数值,报警声停止,灯光熄灭。通过单片机与其他电子元件相互配合,完成设计环境控制系统的需求。

2 硬件设计

2.1 系统硬件方案设计

本设计涉及的主要硬件為:STC89C52单片机、按键系统、湿温度检测电路、由指示灯和蜂鸣器组成的报警模块、CO检测电路、HCHO检测电路、CO2检测电路、ADC0832模数转换器及LCD1602液晶显示模块。系统是基于STC89C52单片机作为中央处理器来进行一系列的控制系统,各路传感器可检测并采集所处环境中的数据并通过A/D转换模块转换后传给单片机处理,或直接传给单片机处理,并在显示屏上呈现,同时根据需要触发报警模块并做出相应的反应[3]。通过按键系统可以设置各数值的报警值。

2.2 最小系统电路

2.2.1 单片机最小系统的构成

单片机最小系统是指用最少的元件组成的单片机可以工作的系统,就是“单片机+晶振电路+复位电路”。

在实际的设计中因为功能的需要,会将按键输入、A/D转换、显示输出等接入上述的电路中,使单片机系统能够完成较复杂的功能并使单片机系统始终处于正常的运行状态。

2.2.2 STC89C52单片机

STC89C52是一种高性能、低功耗CMOS8位微控制器,具有8K在系统可编程Flash存储器。CJMCU—1100型传感器可用于检测空气中0.1 PPM以上的挥发性气体(本设计用于检测空气中的甲醛及二氧化碳),然后经A/D转换电路转换成数字信号后传给单片机处理。其中传感器的4引脚接单片机的VCC接口,3引脚为DOUT,可连接单片机的任意可用引脚,2引脚与ADC0832芯片的CH0或CH1接口连接,1引脚接地。

在实际的设计中因为功能的需要,会将按键输入、A/D转换、显示输出等接入上述的电路中,使单片机系统能够完成较复杂的功能并使单片机系统始终处于正常的运行状态。

以STC89C52单片机为控制核心,连接晶振电路、复位电路、按键电路、传感器电路、报警电路、A/D转换电路和液晶显示屏等,组成了一个具有检测环境中特定因子、显示相关数值、能够设置报警值、智能判断数值是否超过报警值及智能报警功能,基于单片机的鸡舍环境控制系统。

2.2.3 晶振电路

晶振是一种高稳定度及高精度的振荡器。通过特定的外接电路可以生成峰值及频率稳定的正弦波。单片机在运行的时候,需要一个脉冲信号,作为自己执行指令的触发信号。晶振电路就是在一个反相放大器的两端接入晶振,再由两个电容分别接入到晶振的两端,另一个电容则接地,这两个电容串联的电容量就等于负载电容。在STC89C52单片机内部有一振荡电路,只要在单片机的XTAL2(18引脚)和XTAL1(19引脚)引脚外接石英晶体(简称晶振),就构成了自激振荡器并在单片机内部产生时钟脉冲信号。

2.2.4 复位电路

复位电路由电容串联电阻构成。复位电路的第一功能是上电复位,由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。连接方式是在RST(9引脚)复位输入引脚下接一个电阻到地,上接一电容至VCC端(40引脚)。

2.2.5 上电复位电路

上电复位是利用电容充电来实现的,即上电瞬间RST端(9引脚)的电位与VCC(40引脚)相同,随着充电电流的减少,RST的电位逐渐下降。DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度传感器,本系统的温湿度检测电路的传感器使用的是DHT11型温湿度传感器。传感器包括一个NTC测温元件和一个电阻式感湿元件,可以将采集到的温湿度直接输出为数字量。其中,DHT11传感器可以直接检测所处环境中的温湿度并输出为数字信号后直接传给单片机做处理。其中传感器的第1引脚与单片机的VDD端(40引脚)连接,第4引脚与单片机的GND端(20引腳)连接,第2引脚与电源之间连接一个4.7K的电阻,然后传感器的第3脚悬浮放置。

3 软件的设计

3.1 系统整体架构

系统通电后,对硬件进行初始化设置,通过按键进行限制设定,依次设置湿温度、CO、HCHO、CO2的限制值,然后系统会读取各路传感器采集到的数据并与限制值进行判定,当超出限制时会发出触发警报程序[4],当满足限制值时在显示器上显示数据。

3.2 温湿度检测程序设计

当单片机系统通电后,单片机向DHT11传感器发出启动的指令,DTH11传感器采集并读取所处环境的温湿度后发送给单片机后,一边将数值结果直接输出到液晶显示屏上,一边由单片机继续处理。温湿度监控子程序的流程如图1所示。

3.3 各路传感器检测电路程序设计

当单片机系统通电后,单片机向各传感器电路发出启动的指令,各路传感器采集并读取所处环境的数据后,经过A/D数模转换模块处理后转换成数字量,并发送给单片机,一边将数值结果直接输出到液晶显示屏上,一边由单片机继续处理。

3.4 报警系统程序设计

当单片机系统运行后,通过按键系统设置温湿度及各气体数值的预设值,然后判断是否超出预设值,当超出预设值时会触发报警[5]。当数值处于预设值以内时,会返回上一步并继续运行。报警系统流程图如图2所示。

3.5 LCD1602液晶显示程序设计

LCD1602液晶显示屏通电后,首先开始初始化,接着屏幕清零,单片机控制写入要显示内容的命令,然后LCD1602液晶显示屏接收命令,最后执行命令并显示内容。

LCD1602液晶显示流程部分程序为:

写数据:

void write(uchar del) { P0 = del;

RS = 1;

E = 1; delay(); E = 0; delay();

}

#include #include #include #include #include

#define uchar unsigned char #define uint unsigned int

* 名称 : Main()

* 功能 : 主函数void main() {

uint i, j, testnum;

static unsigned char Cnt = 0,Cnt1 = 0; unsigned char alarm_Tem;

unsigned char alarm_Hum; unsigned char alarm_Lig; unsigned char alarm_Smok; unsigned long sum = 0;

EA = 0;

Timer0_Init(); //定时器0初始化UART0_Init();

Data_Init(); EA = 1;

L1602_init();

L1602_string(1,1," Welcome to T&H "); L1602_string(2,1," Control System!");

//延时

for (i=0; i<1000; i++) for (j=0; j<1000; j++)

{;}

//清屏L1602_string(1,1," ");

L1602_string(2,1," ");

sprintf(dat1,"T:%02dC H:%02d%% %04d",(short)temperature,(short)humidity,PM25_Value); L1602_string(1,1,dat1);

L1602_string(2,1,"HCHO: % CO: "); SmokH=55;

TH=rdeeprom(0); Delay1(20); TL=rdeeprom(1); Delay1(20); HH=rdeeprom(2); Delay1(20); HL=rdeeprom(3); Delay1(20); SmokH=rdeeprom(6); Delay1(20);

VOC_H = rdeeprom(7); Delay1(20);

PM25_H = rdeeprom(8)*10; PM25_Value = Get_AD_Result2(0); while(1)

{

sum += Get_AD_Result2(0); if(++Cnt1 >= 50)

{

Cnt1 = 0;

PM25_Value = (sum /50)*(sum /25) ; sum = 0;

}

if (FlagStartRH == 1)

{

TR0 = 0;

testnum = RH(); FlagStartRH = 0; TR0 = 1;

Light_Value = Get_AD_Result(0); Smoke_Value= Get_AD_Result(1); humidity = U8RH_data_H; temperature = U8T_data_H;

{

Cnt = 0;

}

4 系统调试

4.1 显示测试

本系统采用的LCD1602液晶显示屏,接通电源并按下开关后系统开始运行,经测试,液晶显示屏能够正常运行,亮度适中,反应速度快,无闪烁无卡顿,显示清晰易于判断。各检测数据参数显示第1行从左往右分别是温度值(T)、湿度值(H)、二氧化碳值(由于显示屏位置有限,仅显示数值)。第2行从左往右分别是甲醛值(HCHO)、一氧化碳值(CO)。

4.2 报警值的测试

设置温度的报警值:“TH”表示温度的上限值,“TL”表示温度的下限值。两者的数值都可以使用按键去调节。系统通电之后,首先通过按键S1进入设置界面,然后通过按键S2(增加一个单位)、S3(减少一个单位)进行数值的设置,再按一次按键S1即可进入下一项的设置。待数值设置完毕之后,通过S4按键确定数值并退出设置界面,然后系统就会读取设置好的报警值并进入运行。“HH”表示湿度的上限值,“HL”表示湿度的下限值。两者的数值都可以使用按键去调节。系统通电之后,首先通过按键S1进入设置界面,再按一次按键S1即可进入下一项的设置,然后通過按键S2(增加一个单位)、S3(减少一个单位)进行数值的设置。待数值设置完毕之后,通过S4按键确定数值并退出设置界面,然后系统就会读取设置好的报警值并进入运行。“CO”表示一氧化碳的报警值,可根据实际需要进行设置。系统通电之后,首先通过连续使用按钮S1,即可进入CO报警值的预设界面。接着可以通过按键S2(增加一个单位)、S3(减少一个单位)进行数值的调整。待数值设置完毕之后,通过S4按键确定数值并退出设置界面,然后系统就会读取设置好的报警值并进入运行。“HCHO”表示甲醛的报警值,可根据实际需要进行设置。系统通电之后,首先通过连续使用按钮S1,即可进入HCHO报警值的预设界面,然后通过按钮S3(减少一个单位)和按钮S2(增加一个单位)进行数值的调整。待数值设置完毕之后,通过S4按键确定数值并退出设置界面,然后系统就会读取设置好的报警值并进入运行。“C02”表示二氧化碳的报警值,可根据实际需要进行设置。系统通电之后,首先通过连续使用按钮S1,即可进入CO2报警值的预设界面,然后通过按钮S3(减少一个单位)和S2(增加一个单位)进行数值的调整。待数值设置完毕之后,通过S4按键确定数值并退出设置界面,然后系统就会读取设置好的报警值并进入运行。

4.3 报警值的具体参数

当前系统预设的报警值分别是:温度值为5℃~30℃,湿度值为27 %~69 %,甲醛值为10 %,一氧化碳值为30,二氧化碳值为160,也就是说当检测到的这些数据的数值超过这些预设的报警值时,系统会触发报警[6]。本次测试是通过向系统中的DHT11温湿度传感器进行人工加湿使湿度升高。经测试,DHT11温湿度传感器能够以缓慢的速度检测、反应并将具体的数值显示在系统中的液晶显示屏上。当前湿度值为72 %,已经超出了预设报警值的27 %~69 %,这时系统中的蜂鸣器会进行报警。当环境中的湿度恢复到报警值以内时,蜂鸣器关闭。同理,通过使用打火机对DHT11温湿度传感器进行加热处理,温度能够以缓慢的速度上升并显示在液晶显示屏。本次测试是通过使用打火机向系统中的CJMCU—1100传感器进行人工升高甲醛值。经测试,CJMCU—1100传感器能够以较快的速度检测、反应并将具体的数值显示在系统中的液晶显示屏上。

4.4 一氧化碳值和二氧化碳值超限时的报警测试

本次测试是通过使用打火机向系统中的CJMCU—1100传感器进行人工升高二氧化碳值。经测试,CJMCU—1100传感器能够以较快的速度检测、反应并将具体的数值显示在系统中的液晶显示屏上。实验中二氧化碳值为3200,已经超出了预设报警值的160,这时系统中的蜂鸣器会进行报警并且红色的LED灯也会亮起来。当环境中的二氧化碳值恢复到报警值以内时,蜂鸣器关闭,红色LED灯也会停止亮起。同理,通过使用打火机对MQ-7型气体传感器进行人工升高一氧化碳值。

4.5 温湿度超限时的报警测试

本次测试是通过向系统中的DHT11温湿度传感器进行人工加湿使湿度升高。经测试,DHT11温湿度传感器能够以缓慢的速度检测、反应并将具体的数值显示在系统中的液晶显示屏上。当前环境中二氧化碳值为83,已经超出了预设报警值的30,这时系统中的蜂鸣器会进行报警并且黄色的LED灯也会亮起来。當环境中的二氧化碳值恢复到报警值以内时,蜂鸣器关闭,黄色LED灯也会停止亮起。

5 结论

本文设计了一种基于STC89C52单片机的鸡舍环境控制系统,本系统具有温湿度检测、智能报警功能、气体检测和数据显示。其中采用STC89C52单片机作为控制核心,配合ADC0832型芯片、MQ-7型气体传感器、CJMCU—1100型气体传感器和DHT11温湿度传感器等,组成了本鸡舍环境控制系统。该系统具有反应灵敏、显示清晰易懂、误差小、方便操作使用等特 点,经过测试,整个系统都能在通电状态下正常运行,各项功能也能够正常运行及使用,符合设计的要求。本系统也有很多地方需要改进:功能上,鸡只在实际养殖中还受到光照、粉尘等因素的影响,这些因素在设计中没有考虑进去,因此可以增加多个因素的检测功能,使得能够检测所有不利于鸡只生产的不利因素[7]。报警上,本设计可以检测5个因素,但只使用了2个指示灯,在实际使用中难以满足通过指示灯判断哪个因素超标,因此可以使用不同颜色的指示灯对应不同的可检测因素。本系统还可以发展为全自动的环境控制系统,可以自动检测相关因素,当某因素超标时自动触发报警的同时,还会触发相应的措施解决问题。

总而言之,基于单片机的鸡舍环境控制系统拥有强大的功能,也有很大的改进空间,其应用能够有效解决鸡舍环境问题及减少人力物力等,而且该系统成本低收益高,具有远大的发展前景及推广价值。

参考文献:

[1] 曾学,贺成柱.基于物联网的温室大棚控制系统设计[J].机械研究与应用,2021,34(6):83-86.

[2] 郑伟南.建筑节能运行智能控制系统设计研究[J].电子世界,2021(23):53-54.

[3] 沈华刚,赵旭,蒋世权,等.基于AT89C51单片机的鸡舍环境检测与控制系统[J].河南科技,2021,40(2):24-26.

[4] 刘超峰,王宪磊.基于单片机的南疆温室大棚环境自动控制系统的设计[J].新疆农机化,2020(4):36-38.

[5] 于斯淇,汪俊菊,李慧颖,等.基于单片机的环境控制系统[J].科学技术创新,2019(10):89-90.

[6] 毛伟成.基于单片机的列车车厢环境实时监测控制系统[J].物联网技术,2018,8(4):23-24.

[7] 李张丽,钟玲玲,李峰,等.基于单片机STM32的环境检测教室系统的设计[J].电子制作,2021(17):80-82.

【通联编辑:代影】