基于单片机的温室大棚的温度测控系统设计(编辑修改稿)内容摘要:

阻呈指数关 系减小、具有负温度系数的热敏电阻现象和材料。 它 的 主要材料 是 锰、 镍和铜等金属氧化物, 采用陶瓷工艺制造而成的。 这些金属氧化物材料都具有半导体性质,在导电方式上完全类似锗、硅等半导体材料。 随着温度的升高,载流子数目增加,所以电阻值降低 ; 当 温度低时 ,这些氧化物材料的载流子(电子和孔穴)数目少,所以其电阻值较高。 NTC 热敏电阻器在室温下的 电阻 变化范围 一般 在 100~1000000 欧姆,温度系数 为2%~%。 NTC 热敏电阻器 广泛应用于温度补偿、温度测量、抑制浪涌电流、 温度补偿等方面 [12]。 第 6 页 共 25 页 3 硬件电路设 计 单片机控制单元 图 31 单片机控制单元图 单片机控制包括主体 AT89C52 芯片, 一个上电复位电路 , 一个晶振电路, 10K 上拉电阻。 此为整个设计的核心部分。 它不仅要计算 通过键盘输入 的高低电平 , 控制数码管显示相应的 温度值, 还要实时将经过 LTC1860数模转换后的电压值显示为相应的 温度值。 并且通过判定温度值来确定是否发出警报。 第 7 页 共 25 页 温度采样部分 图 32 温度采集单元图 1 TL431的简介 德州仪器公司( TI)生产的 TL431 是一是一个有良好的热稳定性能的三端可调分流基准源。 它的输出电压用两个电阻就可以任意地设置 s到从 Vref ( )到 36V范围内的任何值(如图 2)。 该器件的典型动态阻抗为 ,在很多应用中可以用它代替齐纳二极管,例如,数字电压表,运放电路、可调压电源,开关电源等等。 左图是该器件的符号。 3个引脚分别为:阴极( CATHODE)、阳极( ANODE)和参考端( REF)。 TL431的具体功能可以用如图 1的功能模块示意。 由图可以看到, VI 是一个内部的 ,接在运放的反相输入端。 由运放的特性可知,只有当 REF 端(同相端)的电压非常接近 VI( )时,三极管中才会有一个稳定的非饱和电流通过,而且随着 REF端电压的微小变化,通过三极管 图 1 的电流将从 1到 100mA变化。 当然,该图绝不是 TL431 的实际内部结构,所以不能简单地用这种组合来代替它。 但如果在设计、分析应用 TL431 的电路时,这个模块图对开启思路,理解电路都是很有帮助的,本文的一些分析也将基于此模块而展开。 第 8 页 共 25 页 5V 电源 输入。 NTC 温度传感器,温度越高,它的阻值就会越小,常温下即 25 度时,它的阻值大概为 10K 欧,然后通过 10mA 恒流源电路,它可以达到 ,经过放大电路放大 10 倍后,电压为 1V。 通过 AD 芯片 LTC1860 测得电压值,因为电压随温度的变化而线性变化。 LED显示部分 图 33 LED显示器图 通过 74HC245 芯片将 51 单片机处理的温度信息显示在 LED 数码管上,图为温度测控系统的的单片机显示部分。 显示部分在整个设计中起到非常大的作用,它不仅显示了我们输入的标准温度同时也实时显示了温室大棚 的环境温度。 输入输出部分 第 9 页 共 25 页 图 34 按键输入及报警输出 按键用来设置报警温度, 通过 INC、 DEC、 OK 这三个按键来实现人机对话,人为的设定需要达到的温度。 INC 为设置上限温度, DEC 为设置下限温度, OK 为确认设定键。 报警采用蜂鸣器,当温度 未达到设定温度内时 ,蜂鸣器鸣叫。 4 软件设计 软件设计介绍 软件的编程设计是单片机系统设计的核心部分,也是能否实现预定功能的关键。 单片机编程常用的语言是 C语言和汇编语言,最终都要转为 Intel HEX格式或二进制格式 (Binary)文件拷入单片 机芯片内。 这里我们使用的是 C 语言进行编程设计。 编程前,必须将地址、数据以及控制信号设置好。 原理图设计 及 PCB 设计 采用了 protel99 SE。 它 提供了对高密度封装(如 BGA)的交互布线 , 精确移动器件,总线布线等功能。 系统设计中所用到的 AD芯片 LTC1860 为 s08 封装,贴片; 74HC245 为 DIP20 封装;单片机 89C52 为 DIP40 封装;蜂鸣器:5V;轻触开关: 6*6;三极管 9013 为直插式;稳压器 TL431 为三脚直插;无源晶振:12M;运放 LM358 为 8 脚直插。 第 10 页 共 25 页 主程序流程图 图 41 系统流程图 第 11 页 共 25 页 子程序模块 A/D 转换子程序 AD 转换程序,需要根据 LTC1860 的读时序图,对照时序来看。 其结果为串行输出的,所以需要一根数据线,一根时钟线,还有一根是转换控制线。 以下是 A/D 转换 的部分 子程序 : uint ult1860() //AD 转换子程序 { uchar i。 uint output=0。 CONV=1。 CONV=0。 for(i=12。 i0。 i) { SCK=0。 SCK=1。 output|=DATA。 output=1。 } CONV=1。 return (output)。 } LED 显示子程序 为简化硬件电路,通常将所有 LED 动态显示。 显示程序,因为显示是三位数,所以需要把结果转成,百位、十位、和个位数。 然后把转换的结果,对照显示码显示出来。 比如显示 1,并不是输出 1 就行,而是要输出 1 的七段码才行。 P0 是输出数据, P1 用来选择显示的数码管 第 12 页 共 25 页 以下是设 置 LED液晶显示的部分子程序: void Display(uint dat) V[2]=dat/100。 V[1]=(dat%100)/10。 V[0]=dat%10。 for(i=3。 i0。 i) { P0=dig_num[V[i1]]。 if(i==2) P0|=0x80。 P1=~(0x4(i1))。 delay(1)。 P1=0xff。 } } 按键输入子程序 此程序是本毕业设计中最为重要的一个部分,它对输入部分进行一个判断来区分各个按键起到的 作用。 以下是路灯开关控制部分程序: uchar presskey1(void) 第 13 页 共 25 页 { if(K1==0) return 1。 else return 0。 } uchar presskey2(void) { if(。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。