找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7426|回复: 1
收起左侧

基于单片机的养鸡场室内温度远程监控系统设计

[复制链接]
ID:318280 发表于 2018-4-28 10:37 | 显示全部楼层 |阅读模式
电子信息工程《专业综合设计》研究报告

养鸡场室内温度远程监控系统设计


学生姓名:
学生学号:
指导教师:
所在学院:
专业班级:



电气与信息学院
课程设计任务书
                                                                       
  电气与信息学  电子信息  专业 2014 级,学号 20144070209 姓名  车帅     
一、课程设计课题:
养鸡场室内温度远程监控系统设计
二、课程设计工作日自
三、课程设计进行地点:  信息馆                             
四、程设计任务要求: (详细内容见课程设计文档)
1.课题来源:
老师下发。
2.目的意义:
(1)学习硬件电路的设计还是软件部分的编写。
(2)提高自己的分析问题和解决问题的能力。
3.基本要求:
(1)查阅有关养鸡场的资料和鸡舍的温度要求简述当前温度控制的方法,效果。
(2)要求远程计算机可监控鸡场内温度及视频。
(3)写出设计方案和所实现的技术指标。
(4)画出养鸡场的加热、测温和摄像头设备布置图。
(5)设计下位机测控系统,同时要求设计计算机上位机界面。
(6)详述选择器件的型号、功能、指标和原因。
(7)其他见目录。
课程设计评审表
指导教师评语:

成绩:                           签字:日期:

目录

1 设计任务要求 ……………………………………………………….…3

2 系统设计总体方案 ………………………………………….…………3

3系统硬件设计 …………………………………………………….……4

4软件设计 ………………………………….……………………………11

5总结体会………………………….…………………….………………14

6参考文献 ………………………………………………………………15

附录1…………………………………………….…………….…………16

附录2…………………………………………………………………. …17

附录3 ……………………………………………………………….……18




1 设计任务要求
要求:
(1)查阅有关养鸡场的资料和鸡舍的温度要求,简述当前温度控制的方法,效果。
(2)要求远程计算机可监控鸡场内温度及视频。
(3)写出设计方案和所实现的技术指标。
(4)画出养鸡场的加热、测温和摄像头设备布置图。
(5)设计下位机测控系统,同时要求设计计算机上位机界面。
(6)详述选择器件的型号、功能、指标和原因。
(7)其他见目录。
规定:
(1)设计硬件线路,用protel画图。
(2)按单元电路详细说明硬件线路设计思路,元件参数,选取根据。附详细的元件清单。
(3)软件设计。设计传感器采集,转换和LED显示部分程序。
(4)有完整的程序流程图,包括总流程图和模块流程图。对程序设计思想做详细说明。
(5)有完整的程序清单,并加注释。
(6)总结设计过程和设计体会。
(7)完成时间2周。
2养鸡场室内温度远程监控系统设计总体方案
温度是养鸡场的成败的关键因素。如果温度过低,鸡容易受凉而引起拉稀或产生呼吸道疾病等;小鸡为了取暖容易造成扎堆,影响采食和活动,造成伤残,严重时会造成大量死亡。因此,养鸡场一定要注意温度的控制。
   小鸡生长适宜温度随日龄的增长而下降,1日龄至2日龄孵化器温度35℃至34℃,养鸡场温度25℃~24℃;3日龄~7日龄孵化器温度34℃~31℃,养鸡场温度24℃~22℃;第2周孵化器温度31℃~29℃,养鸡场温度22℃~21℃;第3周孵化器温度29℃~27℃,养鸡场温度21℃~19℃;第4周孵化器温度27℃~25℃,养鸡场温度19℃~18℃。养鸡场温度要比孵化器的低,使舍内有一定温差,孵化就可随意选择所需的适宜温度,有利于小鸡的生长;小鸡生长温度必须保持平稳,不能忽高忽低,否则饲料再好也不能养好小鸡。综上述控制好温度对于养鸡是非常之关键因素。
舍内常用的控温设备是风机。风机降温系统:湿垫风机降温系统的主要作用是,夏季空气通过湿垫进入鸡舍,可以降低进入鸡舍空气的温度,起到降温的效果;热风炉供暖系统:热风炉供暖系统主要由热风炉、鼓风机、有孔通气道和调节风门等设备组成。它是以空气为介质,煤为燃料,为空间提供无污染的洁净热空气,用于鸡舍的加温。
养鸡场远程监控系统由单片机、上位机、无线收发模块、网络摄像头、传感器、显示屏、继电器、报警器八大主要部分组成。其工作原理是以STC12C5A60S2单片机为核心,温度传感器、测得数据传入60S2单片机,控制继电器开关,进而控制风机控温系统达到控制温度的效果。无线收发模块将单片机数据传送到上位机从而起到监控作。框图如图1所示。

图1 养鸡场远程监控系统总体框图

3系统硬件设计
3.1单片机
STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。
STC12C5A60S2是8051系列单片机,与普通51单片机相比有以下特点:
1、同样晶振的情况下,速度是普通51的8~12倍
2、有8路10位AD
3、多了两个定时器,带PWM功能
4、有SPI接口
5、有EEPROM
6、有1K内部扩展RAM
7、有WATCH_DOG
8、多一个串口
9、IO口可以定义,有四种状态
10、中断优先级有四种状态可定义

图2 STC12C5A60S2引脚图

P0口:P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。当P1口的管脚写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部电位必须被拉高;
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入“1”后,电位被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收;
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚电位被内部上拉电阻拉高,且作为输入。作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号;
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入时,由于外部下拉为低电平,P3口将输出电流(ILL),也是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口:
 P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 INT0(外部中断0)
P3.3 INT1(外部中断1)
P3.4 T0(记时器0外部输入)
P3.5 T1(记时器1外部输入)
P3.6 WR (外部数据存储器写选通)
P3.7 RD (外部数据存储器读选通)
同时P3口同时为闪烁编程和编程校验接收一些控制信号;
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高平时间;
ALE / PROG :当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效;
PSEN:外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期PSEN两次有效。但在访问内部部数据存储器时,这两次有效的PSEN信号将不出现;
EA/VPP:当EA保持低电平时,访问外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,访问内部ROM。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP);
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入;
XTAL2:来自反向振荡器的输出。

图3最小单片机系统
3.2温度传感器
DS18B20芯片是一家美国Dallas子公司研发的一款单一总线的数字式传感器,具有简单的构造、体积小、测量精度高、操作灵活、使用方便等特点,其拥有多样的封装形式,这种微型化的芯片大都利用在空间比较狭小的电子设备中,实现对电子设备很好的监控,确保设备的正常运行。DS18B20具有以下特点。
(1)1-wire接口,单片机只凭借一个I/O端口与该器件相连进行正常的通信。能够轻松的实现多点测温。
(2)无需外部元件,只需采用数据线作为芯片的供电,电源电压的范围是3.0-5.5V之间。
(3)对于每个芯片都用具有独一无二64位光刻ROM编码,对应的家族码是28H.
(4)温度测量范围为-55至125℃,在-10至85℃之间,精度可以达到±0.5℃.
(6)每款温度传感器的分辨率可编程的部分在9至12位之间,其中里面有1位是符号位。
(7)DS18B20的转换时间的大小离不开分辨率的设定,一般是设定的分辨率越大,转换的时间越长。
(8)温度的数据主要由两个字节组成,分别为LSB和MSB,DS18B20在使用11位数据时,对应的分辨率为0.125℃.
(9)DS18B20数字式温度传感器内部有EEPROM的存在,用户先前设定的温度报警上限或下限值以及设定的分辨率倍数,即使中途断电,数据也不会丢失。
DS18B20引脚定义封装形式如图4:GND为电源地。DQ为数据信号输入/输出端。VDD用来作为电源供给端,一般为+5V直流电压(如果选择寄生电源接线形式,该引脚需要接地)。

图4  DS18B20的封装形式

DS18B20数字式温度传感器的内部框架结构图如图5所示,主要分别由64位ROM、温度传感器、高温触发器、低温触发器、暂存寄存器和八位的CRC发生器和高速暂存RAM组成。其中64位ROM主要用于存储各自单一序列号(在出厂前已写入片内ROM),高温触发器和低温触发器主要由用户通过软件写入报警的上、下限值,高速RAM由9个字节组成。

图5  DS18B20内部框架结构

3.3继电器控制电路

光耦隔离电路使被隔离的两部分电路之间没有电的直接连接,主要是防止因有电的连接而引起的干扰,特别是低压的控制电路与外部高压电路之间。
温度的控制由继电器控制电路、温度传感器电路和冷热风机组成。传感器检测的温度与单片机设定的温度进行比较,控制继电器断开与闭合,温度过高冷风机开启,反之热风机开启。控制电路如图6所示。

图6继电器控制电路
3.4LCD显示屏
LCD1602是一款能够显示2行32个字符的液晶显示器,每个字符由5×7的点阵形成,每一行能够显示16个字符。目前现实生活中我们所见到的的LCD字符液晶主要是由HD44780液晶芯片制作而成,它们具体工作方法与控制原理都是一模一样,这样对于程序编写在很大程度上带来了方便。这样基于HD44780写的控制程序能够很好的用于市面上多数的字符型液晶,LCD1602显示器拥有微型化、功耗低、色彩鲜艳、轻薄等诸多优点。其具体的参数如下表1。

表1 LCD1602 液晶显示器大致的技术参数表

显示容量

16x2个字符

芯片工作电压

4.5-5.5V

正常工作电流

2 mA (5.0V直流电压源)

模块最佳工作电压

5.0V

字符块大小

2.95mm ×4.35mm (宽×乘×高)


LCD1602液晶一共16 个引脚,每个引脚的功能各有所不同,如图7所示。

图7 LCD1602显示电路
VSS:供电电源地。
VDD:供电电源输入端(接+5V)。
VEE:LCD显示器对比度端口,通过调节端口电流大小可以调节屏幕的显示度。当接正+5v直流电压源时,对比度最低,屏幕显得的较暗;当将该端口接地时,对比度最强。我们可以通过给予端口连接一个电位器(滑动变阻器)来调整其对比度的大小。
RS:寄存器选择输入端.RS=0:表示我们选择指令寄存器,能够完成写指令、读取LCD忙标志位和地址计数器。RS=1:选择数据寄存器,可以写或读数据。
R/W:读/写控制信号。当R/W=1,都操作。当R/W=0,写操作。R/W与RS配合使用,可写指令、读LCD忙标志、写数据等操作。
E:命令使能端口。只有该端口由高电平信号转化为低电平信号,LCD模块才能正常执行命令,否则lCD处于关闭状态,不能正常显示。
D0~D7:8位双向数据线。  

3.5无线收发模块

USBnRF24L01无线收发模块无线串口通信2.4G 大功率,长距离,稳定可靠 透明数据传输,设置协议简单,支持AT指令。其实物图如图8所示。
RFX2401C射频前段放大芯片可以将无线信号放大到最大22dbm,有效增加信号通信距离,实测空旷通信距离可达500米。
图8   nRF24L01无线收发模块

CH341是一个USB总线的转接芯片,CH341 芯片支持 5V与 3.3V 供电,转换的接口为 TTL 电平,输出高电平与供电电压保持一致。

  

图9   USB驱动电路
5V 供电时芯片 V3 引脚需要接一个 104 电容到地,3.3V  供电时需要注意以下几点:
与 USB 芯片相连接的所有电路的电源电压都必须不高于 3.3V;  USB 芯片的 VCC 引脚与 V3 引脚必须短接,必须同时输入 3.3V 电源电压;如果使用 ESD 保护器件或瞬变电压抑制器件,那么其正电压应该是 3.3V。
3.6网络摄像头
悦安高清POE网络数字监控摄像头YA-3064实物图如图10所示。本网络摄像机产品特点:
●超强夜视高清型,200万像素清晰度;
●支持双码流;本地录像,远程监看互不影响;
●内置双滤光片切换,支持日夜转换;
●强大的网络自适应功能,根据网络带宽自动调整码流大小和编码帧率;
●先进的H.264压缩算法,方便在窄带上实现高清的图像传输;
●安装简单,使用方便,只需一根网线和一个软件就可以搞定一切;
●多样化的网络服务功能支持手机、电脑同时监控;
●采用高性能的阵列红外灯,配合超强夜视,红外夜视可达50米。

图10摄像头连接方式

4软件设计
养鸡场室内温度远程监控系统软件设计包括DS18B20温度采集,继电器控制,LCD显示以及上位机等四大主要部分。温度预警值一般设置在鸡的适宜范围之内,在即将越界之前进行控温处理,以保证养鸡场温度始终保持在适宜温度。

程序流程总图如图11所示。

图11程序流程总图

4.1温度采集

根据DS18B20数字传感器与单片机之间的通讯协议,单片机对DS18B20数字式传感器的数据处理过程大致的分为三个步骤:首先在处理信息之前,先对单总线进行复位的操作,进行初始化,初始化之后通过单总线发送ROM 指令,紧接着在发送一条RAM指令,这个过程我们已经完成了对DS18B20 数字式温度传感器的预定设置。当启动复位时,通过CPU 将DQ数据线接口主动下拉大致为500us的等待延时时间,等待时间过后,紧接着CPU将释放DQ总线,当DS18B20数字传感器DQ端收到数据后,延迟时间约为16-60us,然后发送60-240us低脉冲信号,该CPU接收低脉冲信号后复位成功。

表2 ROM的操作指令

指令功能
指令代码
指令含义
Search ROM
Read ROM
Match ROM

Skip ROM
Alarm ROM
0FOH
33H
55H

CCH
ECH
检测总线上存在的DS18B20数字式传感器
读取系列代码、序列号及CRC校验码
允许总线控制器在多点总线上定位一只特定的DS18B20
跳过对ROM编码的搜索
搜索有报警的DS18B20

4.2LCD显示

LCD1602字符型显示器模块内部存在2种寄存器,它们分别是指令寄存器和数据寄存器。LCD1602在应用时,首先对LCD进行初始化操作(单片机向指令寄存器写入不同的指令数据),然后确定显示字符的地址,最后把需要显示的字符写入LCD的数据寄存器,来实现对数据的显示功能,流程图如图12所示。

图12  流程图

对LCD1602显示字符的控制,通过访问1602内部RAM地址实现,LCD1602内部RAM地址实现,LCD1602内部控制器具有80字节RAM,RAM地址与字符位置关系如表3所示。

表 3 DDRAM的地址与字符显示位置具体的对应联系

列行

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

1

00

01

02

03

04

05

06

07

08

09

0A

0B

0C

0D

0E

0F

2

40

41

42

43

44

45

46

47

48

49

4A

4B

4C

4D

4E

4F

4.3上位机

该系统上位机界面如图13所示,养鸡场理想温度以及预警温度最大值、最小值可自由设置,可监控实时养鸡场内视频以及温度,同时可绘测出温度曲线。

5总结与体会

通过了两个星期的努力,也掌握了许多知识,例如温度传感器及LCD显示的工作原理等。同时提高了硬件电路的设计、调试,查阅资料、解决问题的能力也得到了一定的提高。在设计电路过程中,理论知识很重要。理论知识决定了设计电路的成败。需要足够的耐心、细心去研究问题,解决问题。还必须有实事求是地分析问题,了解理论与实际是有一些差别的。总之,通过本次综合设计巩固了以前所学的知识,同时也学到了新的知识点,提高了自己的分析问题和解决问题的能力。

该设计的成功完成离不开老师的帮助,从资料的准备、课题的研究,最后到论文的修改、答辩等各个环节,都得到了我们席老师的悉心指导。


感谢席老师的及时沟通,给予合理的建议,让我从中学到了很多,丰富了我单片机的知识,无论是硬件电路的设计还是软件部分的编写都得到了很大的提升,对电子产品的开发有了更深的理解。使我更加喜爱电子产品的研发。

参考文献
[1] 曹天汉.单片机原理与接口技术.电子工业出版社.2007
[2] 关键.电子CAD 技术.电子工业出版社.2006
[3] 宋嘉玉.EDA 实用技术.人民邮电出版社.2007
[4] 张大明.单片机控制实训指导及综合应用实例.机械工业出版社.2008
[5] 陈晓文.电子线路课程设计.电子工业出版社2007
[6] 刘伟.传感器实训教程.东南大学出版设.2003

附录1


单片机源程序如下:

  1. #include < reg51.h >
  2. #include < intrins.h >
  3. #define uchar unsigned char
  4. #define uint   unsigned int
  5. #define lcddata P2
  6. sbit LCDRS=P1^7;              //液晶数据选择命令端
  7. sbit LCDRW=P1^6;             //液晶读写命令端
  8. sbit LCDEN=P1^5;            //液晶使能端
  9. //sbit LCDRS = P2^6 ;     // 命令/数据选择端  0为写命令 1为写据      
  10. //sbit LCDRW = P2^5 ;                // lcd读写端
  11. //sbit LCDEN = P2^7 ;                //lcd使能端
  12. void write_com(uchar com);
  13. void zdyzfxs();
  14. unsigned char code   mytab[8] = {0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00} ;//lcd自定义字符
  15. //sbit DQ = P3^7 ;   //定义DS18B20端口DQ  
  16. sbit DQ = P1^0;   //定义DS18B20端口DQ
  17. bit presence;           //ds18b20 DQ被拉低 信号0允许,1禁止
  18. uint cc,cc2;       //变量cc中保存读出的温度值
  19. float cc1;
  20. uchar flag;       //flag为温度值正负标志位,“1”表示温度为复制,“0”表示为正值//flag为温度值正负标志位,“1”表示温度为复制,“0”表示为正值
  21. void write_com(uchar com);
  22. uchar code cdis0[ ] = "CHECKING...";
  23. uchar code cdis1[ ] = "   DS18B20 OK   " ;
  24. uchar code cdis5[ ] = "Temp: ";
  25. uchar  cdis2[ ] = "+00.00";
  26. uchar code cdis3[ ] = " DS18B20   ERR0R " ;
  27. uchar code cdis4[ ] = "   PLEASE CHECK  " ;
  28. unsigned char data   temp_data[2] = {0x00,0x00} ;  //存储16位温度
  29. /*********************lcd1602******************************/
  30. void delaylcd(uint z)
  31. {uchar x,y;
  32. for(x=z;x>0;x--)
  33.   {for(y=110;y>0;y--);
  34.   }
  35. }
  36. /*lcd1602初始化        */
  37. void lcd_init(void)
  38. {
  39. LCDRW=0;                 //低电平为写
  40. LCDEN=0;
  41. write_com(0x38);         //使用8位数据开关,显示两行,使用5*7字形
  42. write_com(0x0c);         //显示器开,光标关,字符烁      0x0e 光标开
  43. write_com(0x06);           //字符不动,光标自动右移动一位
  44. write_com(0x01);          //清屏
  45. }

  46. /*设定显示位置             */
  47. /********************************/
  48. void lcd_pos(uchar pos)
  49. {                 //第一行第几列直接写pos为几,第二行pos从0x40开始
  50.    write_com(pos | 0x80) ;   //数据指针=80+地址变量
  51. }
  52. //------------------------------------
  53. /*温度显示                       */
  54. void temperature_display()
  55. {
  56.   uchar m;
  57.   flag=0;
  58.   while(1)
  59.   {
  60.     ddelay(2);
  61. EA=0;      //DS18B20读写数据按照严格的时序,最好不要被打断,
  62. 故把所有中断关闭
  63.         start_convert();                          //启动温度转换
  64.     ddelay(250);
  65.         read_tempreture();                          //读取温度
  66.     EA=1;
  67.         cc=temp_data[1]*256.0+temp_data[0];
  68.         if(temp_data[1]>0xF8) {flag=1;cc=~cc+1;} else flag=0;
  69.         cc1=cc*0.0625;
  70.         cc2=cc1*100;
  71.         cdis2[1]=cc2/1000+0x30;
  72.         if(cdis2[1]==0x30)
  73.          {cdis2[1]=0x20;}
  74.         cdis2[2]=cc2/100%10+0x30;
  75.         cdis2[4]=cc2%100/10+0x30;
  76.     cdis2[5]=cc2%10+0x30;
  77.         if(flag==1)
  78.            cdis2[0]='-';
  79.         else
  80.            cdis2[0]='+';
  81.             lcd_pos(6) ;                 //设置显示位置为第一行的第6个字符
  82.      m=0;
  83.      while(cdis2[m]!='\0')
  84.       {                          //显示字符
  85.         write_data(cdis2[m]) ;
  86.                 m++;
  87.           }                                                                  
  88.    }
  89. }




  90. //---------------------------------
  91. /*主函数             */
  92. void main()
  93. {
  94.   lcd_display();
  95.   ddelay(1000);
  96.   ow_reset();
  97.   if(presence==0)
  98.     {
  99.          Ok_Menu ();
  100.          ddelay(1000);
  101.          temp_c();zdyzfxs();
  102.          temperature_display();  
  103.     }
  104. ……………………

  105. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

完整的Word格式文档51黑下载地址:

养鸡场监控系统.doc (1.7 MB, 下载次数: 59)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:673181 发表于 2019-12-25 14:45 | 显示全部楼层
少了一张图,图1的系统总体框图没有上传
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表