预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

系统设计报告 基于51单片机的水温自动控制系统 引言 在现代的各种工业生产中,不少地方都需要用到温度控制系统。而智能化的控制系统成 为一种发展的趋势.本文所阐述的就是一种基于89C51单片机的温度控制系统。本温控系统可 应用于温度范围30℃到96℃。 设计并制作一水温自动控制系统,可以在一定范围(30℃到96℃)内自动调节温度,使水 温保持在一定的范围(30℃到96℃)内。 (1)利用摹拟温度传感器检测温度,要求检测电路尽可能简单。 (2)当液位低于某一值时,住手加热。 (3)用AD转换器把采集到的摹拟温度值送入单片机。 (4)无竞争—冒险,无颤动。 (1)温度显示误差不超过1℃. (2)温度显示范围为0℃—99℃。 (3)程序部份用PID算法实现温度自动控制。 (4)检测信号为电压信号。 根据设计要求和所学的专业知识,采用AT89C51为本系统的核心控制器件。AT89C51是 一种带4K字节闪存可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器。其引脚图如 图1所示。 显示模块主要用于显示时间,由于显示范围为0~99℃,因此可采用两个共阴的数码管 作为显示元件.在显示驱动电路中拟订了两种设计方案: 方案一:采用静态显示的方案 采用三片移位寄存器74LS164作为显示电路,其优点在于占用主控系统的I/O口少,编程 简单且静态显示的内容无闪烁,但电路消耗的电流较大。 方案二:采用动态显示的方案 由单片机的I/O口直接带数码管实现动态显示,占用资源少,动态控制节省了驱动芯片的 成本,节省了电,但编程比较复杂,亮度不如静态的好。 由于对电路的功耗要求不大,因此就在尽量节省I/O口线的前提下选用方案一的静态显 示. 图1AT89C51引脚图 1温度检测:有选用AD590和LM35D两种温度传感器的方案,但考虑到两者价格差距较 大,而本系统中对温度要求的精度不很高,于是选用比较便宜LM35D。温度传感器采用的是 NS公司生产的LM35D,他具有很高的工作精度和较宽的线性工作范围,他的输出电压与摄氏温 度线性成比例,且无需外部校准或者微调,可以提供±1/4℃的常用的室温精度.LM35的输 出电压与摄氏温度的线形关系可用下面公式表示,0℃时输出为0V,每升高1℃, 输出电压增加10mV。其电源供应模式有单电源与正负双电源两种,其接法如图2与图3 所示。 系统设计报告 正负双电源的供电模式可提供负温度的测量,单电源模式在25℃下电流约为50mA,非常 省电。本系统采用的是单电源模式。 Vout=10mV/℃×T(℃) 2液位检测:同样考虑到成本问题,选用自己做一个液位传感装置。 图2单电源模式图3双电源模式 由于需要用大功率加热装置对水温进行调节,故采用带过零检测双向可控硅输出光电耦 合器MOC3041构成后向控制电路. 硬件组成框图如图4所示:主要由AT89C51单片机、温度信号采集和调理、AD转换、数 码显示电路、温度控制等部份组成。 温度信号 A/D转单温度 采集调理 换电路片显示 电路电路 机 系执行 液位检测 统电路 图4硬件框图 电源开启后,可以显示出实时的温度,并且可以判断出此时的温度是否需要对水进行加 热操作 LM35D采用单电源供电模式如图2将采集到的电压信号送入运放uA741进行放大处理, 如图5. 图5信号采集调理电路 显示电路由两片74LS164和两个数码管构成,为了PCB中作图的方便,故采用如图6的连 接方式。 图6温度显示电路 时钟由单片机的P1.1提供,第一个数码管的数据由单片机的P1。0提供,第二个数码管的数 据由第一个164的Q7提供。164的时序图如图7所示。 图774LS164的时序图 温度控制电路由光电耦合器MOC3041和双向晶闸管BT137构成,硬件连接如图8。 图8温度控制电路 本部份电路由ADC0809和一些74系列芯片构成,其中74LS74用于对单片机的ALE信号 进行分频作为0809的时钟,74LS373用做地址锁存实现单片机P0口的分时复用。该部份硬 件电路如图9所示. 图9AD转换电路 系统设计报告 该系统由AT89C51构成,由5V电源供电,采用6Mhz的晶振。主控系统电路主要承担显示 及对温度的PID控制的核心引用,各功能通过软件软件实现。图10为单片机的主控电路. 图10单片机主控电路 系统设计报告 主程序的任务主要是循环检测采集到的温度值,不断比较实现PID控制。流程图如下: 开始 初始化 延时 采集一次温度数 据并进行转换 数据暂存B 修改指针 延时 再采集一次温度数 据并进行转换 A=B? A<