基于大林算法的温度控制系统设计_第1页
基于大林算法的温度控制系统设计_第2页
基于大林算法的温度控制系统设计_第3页
基于大林算法的温度控制系统设计_第4页
基于大林算法的温度控制系统设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机控制技术课程设计计算机控制技术课程设计 2015 2016 学年第二学期 设计课题 基于大林算法的电路温度控制系统的设 计 专 业 班 级 学 号 姓 名 2016 年 5 月 目目 录录 第一章 课题简介 1 1 1 课题的目的 1 1 1 1 本机实现的功能 1 1 1 2 扩展功能 1 1 2 课题的任务及要求 1 第二章 系统方案设计 2 2 1 水温控制系统的总体介绍 2 2 2 系统框图 2 2 3 闭环系统的工作原理 2 第三章 系统硬件设计 3 3 1 系统原理图 3 3 2 单片机最小系统设计 3 第四章 大林控制算法设计 5 4 1 大林控制算法原理 5 4 2 控制器的设计及公式推导过程 6 4 3 采样周期的选择 7 第五章 水温控制系统的仿真 7 5 1 振铃现象 7 5 2 Matlab 仿真 9 5 2 大林算法控制系统编程设计 10 5 3 各模块子程序设计 11 5 3 1 主程序设计 11 5 3 2 读出温度子程序 12 5 5 3 数码管显示模块 13 5 5 4 温度处理程序 14 第六章 小结与体会 15 第七章 参考文献 16 第八章 附录 17 1 第一章第一章 课题简介课题简介 1 11 1 课题的目的课题的目的 1 1 11 1 1 本机实现的功能本机实现的功能 1 利用温度传感器采集到当前的温度 通过 AT89S52 单片机进行控制 最后通过 LED 数 码管以串行口传送数据实现温度显示 2 可以通过按键任意设定一个恒定的温度 3 将水环境数据与所设置的数据进行比较 当水温低于设定值时 开启加热设备 进行 加热 当水温高于设定温度时 停止加热 从而实现对水温的自动控制 4 当系统出现故障 超出控制温度范围时 自动蜂鸣报警 1 1 21 1 2 扩展功能 扩展功能 1 具有通信能力 可接收其他数据设备发来的命令 或将结果传送到其他数据设备 2 采用适当的控制方法实现当设定温度或环境温度突变时 减小系统的调节时间和超调 量 3 温度控制的静态误差 1 21 2 课题的任务及要求课题的任务及要求 一升水由 800W 的电热设备加热 要求水温可以在一定范围内由人工设定 并能在环境 温度降低时实现自动调整 以保持设定的温度基本不变 1 温度测量范围 10 100 最小区分度不大于 1 2 控制精度在 0 2 以内 温度控制的静态误差小于 1 3 用十进制数码管显示实际水温 2 第二章第二章 系统方案设计系统方案设计 2 12 1 水温控制系统的总体介绍水温控制系统的总体介绍 本次设计采用采样值和键盘设定值进行比较运算的方法来简单精确地控制温度 先通 过键盘输入设定温度 保存在 AT89S52 单片机的指定单元中 再利用温度传感器 DS18B20 进行信号的采集 送入单片机中 保存在采样值单元 然后把采样值与设定值进行比较运 算 得出控制量 从而调节继电器触发端的通断 来实现将水温控制在一定的范围内 当 水温超出单片机预存温度时 蜂鸣器进行报警 单片机控制系统是一个完整的智能化的集 数据采集 显示 处理 控制于一体的系统 由传感器 LED 显示单片机及执行机构控制 部分等组成 2 22 2 系统框图系统框图 DS18B20 温度传感器 LED 显示 指示灯 蜂鸣器 AT89S52 单片机 加热继电器 按键 2 32 3 闭环系统的工作原理闭环系统的工作原理 本设计以 AT89S52 单片机系统进行温度采集与控制 温度信号由模拟温度传感器 DS18B20 采集输入 AT89S52 利用温度传感器采集到当前的温度 通过 AT89S52 单片机进行 控制 最后通过 LED 数码管以串行口传送数据实现温度显示 可以通过按键任意设定一个 恒定的温度 将水环境数据与所设置的数据进行比较 当水温低于设定值时 开启加热设 备 进行加热 当水温高于设定温度时 停止加热 从而实现对水温的自动控制 当系统 出现故障 超出控制温度范围时 自动蜂鸣报警 用单片机控制水温可以在一定范围内设 定 并能在环境温度变化时保持温度不变 3 第三章第三章 系统硬件设计系统硬件设计 3 13 1 系统原理图系统原理图 在温度测量控制系统中 实际温度值由 PT100 恒流工作调理电路进行测量 为了 克服 PT100 线性度不好的缺点 在信号调理电路中加入负反馈非线性校正网络 调理 电路的输出电压经 ADC0808 转换后送入单片机 AT89S51 对采样数据进行滤波及标定处 理后 由 3 位 7 段数码管显示 输入的设定值由 4 位独立按键电路进行设定 可分别 对设定值的十位和个位进行加 1 减 1 操作 设定值送入单片机后 由另外一组 3 位 7 段数码管显示 数码管的段码由 74HC05 驱动 位码由三极管 2N2222A 驱动 系统采用 PID 闭环控制方案 将预置初值与温度传感器反馈信号比较得到偏差 e 进行 PID 运算处理得到控制量 u 通过此量来控制加热器的加热时间 从而控制加热 功率 由于水本身具有很大的热惯性 所以必须对水温的变化趋势作出预测 并且根 据需要及时反方向抑制 以防止出现较大的超调量的波动 在 PID 控制中 积分环节 I 具有很强的滞后效应 而微分环节 D 具有预见性 所以该方案最终采用 PD 算 法 能够很好的控制超调 并且稳态误差也很小 图 3 1 系统原理图 3 23 2 单片机最小系统设计单片机最小系统设计 基本的 AVR 硬件线路 包括以下几部分 1 复位线路的设计 AT89S52 已经内置了上电复位设计 并且在熔丝位里 可以控制复位时的额外 时间 故 AVR 外部的复位线路在上电时 可以设计得很简单 直接拉一只 10K 的电 4 阻到 VCC 即可 R6 为了可靠 再加上一只 0 1uF 的电容 C0 以消除干扰 杂波 D3 1N4148 的作用有两个 作用一是将复位输入的最高电压钳在 Vcc 0 5V 左右 另一作 用是系统断电时 将 R1 10K 电阻短路 让 C0 快速放电 让下一次来电时 能产生有效的 复位 当 AVR 在工作时 按下 S0 开关时 复位脚变成低电平 触发 AVR 芯片复位 重要说明 实际应用时 如果你不需要复位按钮 复位脚可以不接任何的零件 AVR 芯片 也能稳定工作 即这部分不需要任何的外围零件 图 3 2 复位电路设计 2 晶振电路的设计 Mega16 已经内置 RC 振荡线路 可以产生 1M 2M 4M 8M 的振荡频率 不过 内置的毕竟是 RC 振荡 在一些要求较高的场合 比如要与 RS232 通信需要比较精确的波特 率时 建议使用外部的晶振线路 早期的 90S 系列 晶振两端均需要接 22pF 左右的电容 Mega 系列实际使用时 这两只小 电容不接也能正常工作 不过为了线路的规范化 我们仍建议接上 重要说明 实际应用时 如果你不需要太高精度的频率 可以使用内部 RC 振 荡 即这部分不需要任何的外围零件 5 图 3 3 晶振电路设计 3 电源设计 AVR 单片机最常用的是 5V 与 3 3V 两种电压 本线路以转换成 5V 直流电压 电路需要变压 器把 220 交流电压转换成 28V 交流电 再通过整流器 把交流电转化成直流电 通过 7809 和 7805 三端正电源稳压电路转化成直流 5V 电源如图 3 4 220v 28v D Diode D Diode D Diode D Diode VinVout GND 7089 Volt Reg VinVout GND 7085 Volt Reg 0 33uF C Cap Semi 100nF C Cap Semi 0 33uF C Cap Semi 100uF C Cap Semi 5 图 3 4 电源电路设计图 第四章第四章 大林控制算法设计大林控制算法设计 4 14 1 大林控制算法原理 大林控制算法原理 在许多工业过程中 被控对象一般都有纯滞后特性 而且经常遇到纯滞后较大的对象 美国 IBM 公司的大林 在 1968 年提出了一种针对工业生产过程中 含有纯滞后对象的控制 算法 具有较好的效果 假设带有纯滞后的一阶 二阶惯性环节的对象为 1 1 s C Ke G s Ts 12 11 s c Ke G s TsTs 式中 为纯滞后时间 为时间常数 K 为放大系数 为简单起见 设 NT N 为 1 T 2 T 正整数 大林算法的设计目标是设计合适的数字控制器 使整个闭环系统的传递函数为具有时 间纯滞后的一阶惯性环节 而且要求闭环系统的纯滞后时间等于对象的纯滞后时间 6 4 24 2 控制器的设计及公式推导过程控制器的设计及公式推导过程 3 1 0 221z 1 0 779z 电炉电炉 10 s 10 温度传感器温度传感器 D A A D 被控对象的传递函数 10 s s 10 C G 采样周期 T 1s 期望闭环传递函数的惯性时间常数 4sT 设期望闭环传递函数为 2s 1 s e 4s 1 系统的广义对象传递函数 1 1 1 e1 e10 s s sss 10 C GG 系统广义对象的脉冲传递函数为 1 1 1 11 3 3 1 1 1 1 z1 e 1 e101 e0 632z z z ss 101 e z1 0 368z1 ez NT T GZ 系统的闭环脉冲传递函数为 1s 3 2s 1 1 e10 221z z e s4s 11 0 779z Z 数字控制器的脉冲传递函数为 1 3 z 10 221 z z1 z1 0 779z 0 291z D G 当输入为单位阶跃时 输出为 3 345 11 0 221z Y z z z 0 2210 1240 284 1 0 779z 1 Rzzz z 控制量的输出为 7 3 1 1 1 113 11 0 221z1 0 368z0 350 1 0 368z z 0 350 0 129z 1 0 779z 1 0 632 1 0 779z 1 Y z U Gzzzz 4 34 3 采样周期的选择 采样周期的选择 在本实验中 定时中断间隔选取 100ms 采样周期 T 要求既是采样中断间隔的整数倍 又要满足 而由被控对象的表达式可知 所以取 N 1 T 1s 取 T 1s 因为 因为采样周期 T 1s 定时中断为 yk m k m k m k m k 1N 1s 就是说 1 个定时中断后进行采样 第五章第五章 水温控制系统的仿真水温控制系统的仿真 5 15 1 振铃现象振铃现象 直接用上述控制算法构成闭环控制系统时 人们发现数字控制器输出 U z 会以 1 2 采样频率大幅度上下摆动 这种现象称为振铃现象 振铃现象与被控对象的特性 闭环时间常数 采样周期 纯滞后时间的大小等都有关 系 振铃现象中的振荡是衰减的 并且于由被控对象中惯性环节的低通特性 使得这种振 荡对系统的输出几乎无任何影响 但是振铃现象却会增加执行机构的磨损 在交互作用的 多参数控制系统中 振铃现象还有可能影响到系统的稳定性 所以 在系统设计中 应设 法消除振铃现象 可引入振铃幅度 RA 来衡量振荡的强烈程度 振铃幅度 RA 的定义为 在单位阶跃信号 的作用下 数字控制器 D z 的第 0 次输出与第 1 次输出之差值 设数字控制器 D z 可以表示为 1 1 2 2 1 1 2 2 1 1 zQkz zaza zbzb kzzD NN 5 1 其中 2 2 1 1 2 2 1 1 1 1 zaza zbzb zQ 5 2 那么 数字控制器 D z 输出幅度的变化完全取决于 Q z 则在单位阶跃信号的作用 8 下的输出为 2 12 1 1 2 2 1 1 1 1 1 1 1 zaaza zbzb z zQ 5 3 2 1 1 122 1 11 zaabzab 根据振铃的定义 可得 1111 1 1baabRA 5 4 上述表明 产生振铃现象的原因是数字控制器 D z 在 z 平面上位于 z 1 附近有极 点 当 z 1 时 振铃现象最严重 在单位圆内离 z 1 越远 振铃现象越弱 在单位圆内 右半平面的极点会减弱振铃现象 而在单位圆内右半平面的零点会加剧振铃现象 由于振 铃现象容易损坏系统的执行机构 因此 应设法消除振铃现象 大林提出了一个消除振铃的简单可行的方法 就是先找造成振铃现象的因子 然后令 该因子中的 z 1 这样就相当于取消了该因子产生振铃的可能性 根据终值定理 这样处理 后 不会影响输出的稳态值 本设计的被控对象是含有纯滞后的一阶惯性环节 大林算法求得的数字控制器为式 1 1 1 1 1 1 1 1 1 1 NTTT TT zezeek zee zD 5 5 有可表示为式 3 14 所示 1 1 1 1 1 1 121 1 1 1 zNzzzeek zee zD TT TT 5 6 可能引起振铃现象的因子是式 3 15 所示 1 1 21 Nzzze T 5 7 其振铃的幅度为 1 TT eeRA 5 8 根据 r 值的不同 有一下几种情况 1 当 r 0 时 不存在振铃极点因子 此时不产生振铃现象 2 当 r 1 时 存在一个极点 z 1 T e 当 时 z 1 存在严重的振铃 1 当 r 2 时 存在极点 Z 2 11 1 4 1 1 22 TTT ejee 当 T 时 z Z 1 时 存在振铃现象 13 22 j 9 对于 r 2 时的振铃极点 令 Z 1 代入式中可得 1 1 1 1 12 14 14 4 1 1 1 1 T TT T T TTr eez D z ezezzz 1 1 1 1 1 1 4 1 32 1 TT TT eez eez 此时就求得的消除振铃的数字控制器 D z 表达式为 1 1 1 1 1 1 4 1 32 1 TT TT eez D z eez 11 11 10 1 4 10 32 1 e z ez 5 25 2 MatlabMatlab 仿真仿真 10 Matlab 仿真图 无振铃现象 5 25 2 大林算法控制系统编程设计 大林算法控制系统编程设计 根据系统的总体功能和键盘设置选择一种最合适的监控程序结构 然后根据实时性的 要求 合理地安排监控软件和各执行模块之间地调度关系 本部分详细介绍了基于 AT89S52 单片机的多路温度采集控制系统的软件设计 根据系 统功能 可以将系统设计分为若干个子程序进行设计 如温度采集子程序 数据处理子程 序 显示子程序 执行子程序 采用 Keil uVision3 集成编译环境和 C 语言来进行系统软 件的设计 本章从设计思路 软件系统框图出发 先介绍整体的思路后 再逐一分析各模 块程序算法的实现 最终编写出满足任务需求的程序 采集到当前的温度 通过 LED 数码管实现温度显示 通过按键任意设定一个恒定的温 度将水环境数据与所设置的数据进行比较 当水温低于设定值时 开启加热设备 进行加 热 当水温高于设定温度时 停止加热 当系统出现故障 超出控制温度范围时 自动蜂 鸣报警并对温度进行实时显示 采用 C 语言编写代码 鉴于篇幅限制及 DS18B20 的应用已 经规范和成熟 本文仅就主程序流程图和显示子程序流程图及其代码进行说明 通过定时 器 T0 P3 4 口的定时来实现 在此不再赘述 有关 DS18B20 的读写程序 编程时序分析等 请见附录三 功能主程序流程图主程序通过调用温度采集子程序完成温度数据采集 然后 调用温度转换子程序转换读取温度数据 调用显示子程序进行温度显示和判断温度数据 主程序 见附录二 调用四个子程序 分别是温度采集程序 数码管显示程序 温度 处理程序和数据存储程序 温度采集程序 对温度芯片送过来的数据进行处理 进行判断和显示 数码管显示程序 向数码的显示送数 控制系统的显示部分 温度处理程序 对采集到的温度和设置的上 下限进行比较 做出判断 向继电器输 出关断或闭合指令 数据存储程序 对键盘的设置的数据进行存储 11 设定温度值 显示当前温度 判断当前温度值 超过设定 1 低于设定 1 报警 报警 是 否 否 是 图 1 系统总流程图 5 35 3 各模块子程序设计各模块子程序设计 5 3 1 主程序设计 主程序的主要功能是负责温度的实时显示 读出并处理 DS18B20 的测量的当前温度值 温度测量每 1s 进行一次 这样可以在一秒之内测量一次被测温度 其程序流程见图 2 所示 通过调用读温度子程序把存入内存储中的整数部分与小数部分分开存放在不同的两个 单元中 然后通过调用显示子程序显示出来 12 开始 调用读温度子程序 数字变换程序 显示子程序 图 2 主程序流程图 5 3 2 读出温度子程序 读出温度子程序的主要功能是读出 RAM 中的 9 字节 在读出时需进行 CRC 校验 校验 有错时不进行温度数据的改写 DS18B20 的各个命令对时序的要求特别严格 所以必须按 照所要求的时序才能达到预期的目的 同时 要注意读进来的是高位在后低位在前 共有 12 位数 小数 4 位 整数 7 位 还有一位符号位 DS18B20 的数据读写是通过时序处理位来确认信息交换的 当总线控制器发起读时序 时 DS18B20 仅被用来传输数据给控制器 因此 总线控制器在发出读暂存器指令 BEh 或 读电源模式指令 B4H 后必须立刻开始读时序 DS18B20 可以提供请求信息 所有读时序必 须最少 60us 包括两个读周期间至少 1us 的恢复时间 当总线控制器把数据线从高电平拉 到低电平时 读时序开始 数据线必须至少保持 1us 然后总线被释放在总线控制器发出读 时序后 DS18B20 通过拉高或拉低总线上来传输 1 或 0 当传输逻辑 0 结束后 总线将被释 放 通过上拉电阻回到上升沿状态 从 DS18B20 输出的数据在读时序的下降沿出现后 15us 内有效 因此 总线控制器在读时序开始后必须停止把 I O 脚驱动为低电平 15us 以读取 I O 脚状态 13 DS18B20 复位 应答子程序 跳过 ROM 匹配命令 写入子程序 温度转移命令 写入子程序 延时显示子程序 DS18B20 复位 应答子程序 跳过 ROM 匹配命令 写入子程序 读温度命令子程序 终止 图 3 读出温度子程序 5 5 3 数码管显示模块 本系统采用八位共阳极数码管 用模拟串口的动态显示数据 其流程图如图 4 所示 14 子程序入口 初始化 查表取段码 位码送译码器选通低位数码管 数字是否显示亮 关显示 返回 段码送驱动显示 显示缓冲区左移 Y N 图 4 数码管显示流程图 5 5 4 温度处理程序 基于单片机水温控制系统通过 DS18B20 温度传感器采集到的温度和设置的温度上 下 限进行比较得出结果 如果低于下限温度或是高于上限温度 则报警器进行进行报警 15 第六章第六章 小结与体会小结与体会 这次的课程设计分配到两个人一组完成 虽然只有短短的两周时间 但是通过这些天的 学习使我收获巨大 让我更加深刻的复习了课本知识 使得自己在专业技能和动手能力方 面有了很大的提高 为以后自己进入社会打下了一个良好的基础 在这次的课程设计过程中 我与周航一组 我很感谢老师对我的指导及同学的帮助 我 主要负责软件的仿真 周航负责硬件系统的设计 在大林控制算法的设计中 遇到了许多 的难题 对于原理概念十分模糊 一些公式也忘了如何去使用 拿出了以前的课本对遗忘 的知识进行了回顾 在同学的帮助下 与周航的讨论中一步一步的完成了控制器的设计和 大林算法公式的推导 使得我能够顺利的完成此次的课程设计 通过完成这次的课程设计 使我深刻的体会到了团队的重要性 这次的课程设计很 但两人一组的团队的合作使课程 设计简单了许多 每个人都有明确的分工 这样 再加上自己的努力终能取得成功 感谢此次的课程设计让我收获良多 16 第七章第七章 参考文献参考文献 1 于海生主编 微型计算机控制技术 M 北京 清华大学出版社 2009 2 李小坚 赵山林 冯晓军 龙怀冰 Protel DXP 电路设计与制版实用教程 第 2 版 北京 人民邮电出版社 2009 3 全国大学生电子设计竞赛组委会 全国大学生电子设计竞赛获奖作品选编 第一届 第五届 北京 北京理工大学出版社 2004 4 张琳娜 刘武发 传感检测技术及应用 北京 中国计量出版社 1999 5 沈德金 陈粤初 MCS 51 系列单片机接口电路与应用程序实例 北京 北京航 空航天大学出版社 1990 6 周立功等 增强型 80C51 单片机速成与实战 北京 北京航空航天大学出版社 2003 7 7 马忠梅等 单片机的 C 语言应用程序设计 北京 北京航空航天大学出版社社 1998 10 8 胡汉才 单片机原理及接口技术 北京 清华大学出版社社 1996 9 李志全等 智能仪表设计原理及应用 北京 国防工业出版社 1998 6 10 何立民 MCS 51 系列单片机应用系统设计 北京 北京航空航天大学出版社 1990 1 17 第八章第八章 附录附录 附录一 系统程序 include 52 系列头文件 include define uchar unsigned char define uint unsigned int sbit ds P3 4 sbit dula P2 6 sbit beep P1 4 定义蜂鸣器 sbit led P1 1 sbit jdq P1 0 uint temp t w 定义整型的温度数据 uchar flag float f temp 定义浮点型的温度数据 uint low 定义温度下限值 是温度乘以 10 后的结果 uint high 定义温度的上限值 sbit led1 P1 0 控制发光二极管 sbit led2 P1 1 控制发光二极管 sbit s1 P3 5 sbit s2 P3 6 sbit s3 P3 7 uchar flag1 flag2 flag3 flag4 s1num qian bai shi ge uchar code table 0 xc0 0 xf9 0 xa4 0 xb0 0 x99 0 x92 0 x82 0 xf8 0 x80 0 x90 0 xc6 共阳数码管段码表 uchar code table1 0 x40 0 x79 0 x24 0 x30 0 x19 0 x12 0 x02 0 x78 0 x00 0 x10 带小数点的编码 void delay uchar z 延时函数 uchar a b for a z a 0 a for b 100 b 0 b void init EA 1 ET1 1 TR1 1 18 TMOD 0 x10 TH1 65536 4000 256 TL1 65536 4000 256 flag 0 high 100 jdq 1 void didi beep 0 led 0 delay 500 beep 1 led 1 delay 500 void dsreset void DS18b20 复位 初始化函数 uint i ds 0 i 103 延时最短 480us while i 0 i ds 1 等待 16 60us 收到低电平一个约 60 240us 则复位成功 i 4 while i 0 i bit tempreadbit void 读 1 位数据函数 uint i bit dat ds 0 i ds 1 i i i 起到延时作用 dat ds i 8 while i 0 i return dat uchar tempread void 读 1 字节的数据函数 uint i j dat dat 0 for i 1 i 8 i j tempreadbit 19 dat j 1 读出的数据最低位在最前面 这样刚好一个字节在 dat 里 return dat void tempwritebyte uchar dat 向 DS18B20 写一个字节的数据函数 uint i uchar j bit testb for j 1 j 1 if testb 写 1 ds 0 i i ds 1 i 8 while i 0 i else 写 0 ds 0 i 8 while i 0 i ds 1 i i void tempchange void DS18B20 开始获取温度并转换 dsreset delay 1 tempwri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论