水温控制系统设计_第1页
水温控制系统设计_第2页
水温控制系统设计_第3页
水温控制系统设计_第4页
水温控制系统设计_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

第 1 页 共 31 页 水温控制系统的设计报告 第 2 页 共 31 页 摘要 PID 控制是工控领域内的一种重要控制方法 将 PID 算法应用到以 51 单片 机为核心的控制系统中 能产生良好的控制效果 基于 PID 算法的水温控制系统采用 目前性价比较高的数字温度传感器 DS18B20 作为检测变送器 通过键盘向单片机输入 设置数码管温度 单片机将温度偏差进行 PID 运算后 输出 PWM 波 PWM 波作为执行机 构的输入从而来决定电炉工作电压的大小 最终实现水温的控制 整个系统的电路结构 简单 可靠性能高 经实验测试 该系统基本满足要求 关键词 PID 51 单片机 温度传感器 DS18B20 PWM 键盘 显示 第 3 页 共 31 页 目录 第 1 章 系统方案 4 1 1 设计思想 4 1 2 方案论证 4 1 3 论证分析 6 第 2 章 系统设计 8 2 1 硬件设计 8 2 1 1 电源电路 8 2 1 2 温度检测与变送环节 8 2 1 3 单片机最小系统 9 2 1 4 键盘电路 11 2 1 5 显示电路 11 2 1 6 加热驱动模块 12 2 1 7 报警电路 13 2 2 软件设计 13 3 2 1 主函数 13 2 2 3 按键设定函数 14 2 2 4 温度采集函数 15 2 2 6 PID 运算子函数 15 2 2 7 PWM 产生函数 17 2 3 系统调试 18 2 3 1 人机界面调试 18 3 3 2 温度显示 18 第 3 章 总 结 19 附录 系统源程序 20 第 4 页 共 31 页 第第 1 章章 系统方案系统方案 1 1 设计思想设计思想 温度的期望值可用键盘设定 温度传感器检测实际温度 控制器根据实测值与期望值偏差通过 相应运算 输出相应的控制参数给加热驱动模块 从而实现闭环控制 整体设计框图整体设计框图 1 2 方案论证方案论证 1 1 控制器控制器 根据设计要求 控制器主要用于对温度测量信号的接收和处理 控制显示电路对温 度值实时显示 控制键盘实现对温度值的设定 控制加热驱动模块等 对控制器的选 择有以下两种方案 方案一 采用 FPGA 作为系统控制器 FPGA 采用并行的 I O 口方式 运算速度快 稳定 性高 可用 EDA 软件仿真及调试 功能强大 易于拓展 适合做大规模实时系统控制 核心 由于本设计对数据处理的速度要求不高 FPGA 处理速度快的优势得不到充分体 水 温度传感器测 量当前水温 控制器根据偏差进 行相应运算 输出 控制参数 键盘输入 给定温度 加热驱动模块 加热器 控制器 显示 键盘 温度传感器 电源 加热驱动模 块 蜂鸣报警 加热器 第 5 页 共 31 页 现 且其成本较高 引脚较多 硬件电路布线复杂 方案二 采用 STC90C516RD 作为系统控制器 单片机运算功能强 软件编程灵活 自 由度大 可软件编程实现各种算法和逻辑控制 并且其功耗低 技术成熟 成本也较 低 本设计对数据处理的速度要求不高 单片机已能满足设计需求 基于以上分析拟定采用方案二 由 STC90C516RD 作为控制核心 对温度采集 实时显 示以及加热装置进行控制 2 2 控制算法控制算法 在水温控制系统中 选择一个好的算法是系统达到技术指标的保证 对算法的选择有 以下两种方案 方案一 数字 PID 控制算法 在连续时间控制系统中 PID 控制应用非常广泛 其设计 技术成熟 长期以来形成了典型的结构 参数整定方便 结构更改灵活 整合了比例 控制 积分控制和微分控制 3 种基本控制规律 由于计算机程序的灵活性 数字 PID 控制比连续 PID 控制更优越 方案二 分段非线性加积分分离 PI 算法 当偏差较大时 控制量采用由实验总结出的 经验值 当偏差较小时 切换为积分分离 PI 算法 该算法可较好地改善系统的非线性 及静态特性 但 PI 控制只能消除稳态误差 而动态过程不能令人满意 方案三 模糊 PID 控制算法 该算法是在传统 PID 控制算法上增加模糊控制 在确定 的基础上 增加模糊集 进行模糊化 以自适应不同的环 p k i k d k p k i k d k 境 实现控制的精确性和鲁棒性 由于对数字 PID 控制算法比较熟悉 且该算法参数整定方便 结构灵活 综上所述 选择方案一 3 3 温度传感器温度传感器 温度信号为模拟信号 本设计要求对温度进行控制和显示 所以要把模拟量转为数字 量 温度传感器模块有以下两种方案 方案一 利用热电阻传感器作为感温元件 热电阻阻值随温度变化而变化 测量电阻 值即可得到对应的温度值 电阻阻值的变化经变送器转化为电流信号 再转化为电压 信号送到 A D 转换器 PCF8591 将模拟信号转为数字信号 该方案在系统测量的温度范 围内线性度良好 方案二 采用数字温度传感器 DS18B20 该温度传感器无需其他外加电路 直接输出数 字量 可直接与单片机通信 读取测温数据 电路简单 能够达到 0 5 度的固有分辨 率 满足设计要求 考虑到现有的资源的有限选择以及热敏电阻传感器也能达到设计要求且线性度好 综 上所诉 选择方案一 4 4 加热驱动模块加热驱动模块 根据设计要求 可使用电热棒进行加热 控制加热棒的功率即可控制加热速度 由于 加热的功率较大 考虑到简化电路的设计 我们直接采用 220V 电源 对加热驱动模块 有以下两种方案 方案一 采用可控硅作为开关器件控制电路 可控硅是一种半控器件 由交流过零检 第 6 页 共 31 页 测电路输出方波经适当延时可控制可控硅的导通角 延时时间即移相偏移量由温度误 差计算得到 可以实现对交流电单个周期有效值周期性控制 保证系统的动态性能指 标 该方案可以实现功率的连续调节 响应速度快 控制精度高 但电路稍复杂 需 使用光耦合驱动芯片以及变压器等器件 方案二 采用固态继电器作为开关器件控制电路 固态继电器的使用比较简单 没有 触点 可以频繁动作 且其内部本身就存在电磁隔离 因此单片机输出控制功率的 PWM 信号 即可控制固态继电器的导通和关断 从而达到控制加热棒通电和断电的目的 采用固态继电器控制可省去光耦隔离和交流过零检测电路 且由于系统设计对输出 PWM 信号频率要求不高 考虑电路中流过开关器件的电流较大 所以只要在选用时注意器 件的最大功率和最大电流 选用适当参数的固态继电器型号就能达到设计要求 故选 择采用方案二 5 5 键盘模块键盘模块 根据设计要求 水温要由人工设定给定值并设置报警温度 对键盘模块有以下两种方 案 方案一 采用矩阵键盘 矩阵键盘可大大节省 I O 口的使用 但编程和电路较为复杂 方案二 采用独立键盘 独立键盘编程简单且电路也较为简单 但由于每一个按键都 需要一个 I O 口 故在 I O 资源有限的情况下是一种浪费 考虑到本次设计所需按键较少 系统所需 I O 充足 而独立按键编程及电路简单 故 采用方案二 6 6 显示模块显示模块 根据设计要求 需要实时显示水温 显示模块有以下两种方案 方案一 采用液晶显示屏 液晶显示屏具有功耗小 平面直角显示以及影像稳定不闪 烁 可视面积大 画面效果好 抗干扰能力强等特点 但其成本较高 编程工作量大 控制器资源占用较多 方案二 采用七段 LED 数码管功耗低 寿命长 耐老化 对外界环境要求较低 且数 码管采用 BCD 编码显示数字 编程简单 资源占用较少 由于本次设计只需显示三位温度值 信息量较少 故采用方案二 本系统中采用数码 管的动态显示 节省单片机的内部资源 7 7 电源模块电源模块 该模块为单片机及各器件提供电源 采用 220V 变压整流电路输出 5V 直流电 8 8 报警模块报警模块 为使系统的人机交互界面更友好 设置了两路报警信号和两路标志信号 用于显示越 限报警 强电电路通断情况以及温度稳定情况 1 3 论证分析论证分析 经过比较 采用 DS18B20 测量水温 硬件电路简单 测量精度高 信号易处理 第 7 页 共 31 页 故温度变送器选用 DS18B20 驱动加热采用固态继电器 在实行控制的时候不像其它采 用 D A 转换后再控制调节阀的方法 而是直接外接一个固态继电器 通过内部改变定 时器的中断时间来调节一个周期内电子开关的导通和断开时间 这样既节省了材料也 可以很大程度上减少硬件电路的结构 4 系统原理框图如图 1 1 所示 温度显示报警 DS18B20 按键设定温度 电炉固态继电器 51 单 片 机 图 1 1 系统原理框图 综上所述方案有如下的特点 1 在完成所要求的任务的基础之上还有着结构简单 明了的特点 很容易实现 而且在一定的程度上节约成本 2 由于采用了离线的方法 很大程度上的减少了编程的麻烦 实现起来较容易 3 采用了无污染能源 保护环境 同时也省去了为建造燃料供应子系统的费用 节约了成本 采用了模拟的 PWM 变换 和固态继电器 可以将采样频率提高到很多的 水平 使控制结果更准确 实时性 控制效果更好 第 8 页 共 31 页 第 2 章 系统设计 整个系统由软件和硬件两部分组成 本章详细介绍了系统的硬件和软件设计 并 对硬件和软件的每一个部分进行了分析 在后半部分还对系统模型进行了仿真与程序 调试 硬件和软件的每一个坏节都是深思熟虑而成 各自完成相应的功能并组成一个 统一的整体 2 1 硬件设计 系统的硬件包括 电源模块 温度设定模块 温度采集变送模块 温度偏差处理 模块 温度显示模块 报警模块 电炉加热模块 2 1 1 电源电路 由于整个系统都是用单片机和各类芯片及电阻 电容组成的 其工作电压为 5V 不需要负电压 可采用三端固定正电压集成稳压器 7805 系列的芯片 其输出电 压 5V 按输出电流不同可分为 78M05 78L05 输出电流分别为 0 5A 和 1 0A 转换成 功率分别为 2 5W 和 5W 从整个系统的设计来看 其中有几块集成芯片和多个电阻 电 容等器件 其功率总和应在 2W 左右 所以考虑整个系统的功率裕量 采用 78M05 作为 整个系统的供电芯片 如图 2 1 所示 图 2 1 电源电路图 其中输入电压为交流 220V 经过变压器其输出为 12V 再进行整流 整流可通过 四个二极管进行全波整流 也可以利用集成整流堆来进行 后面接电容 C1 C2 为滤波 电容进行滤波 注意电解电容应该要有一定裕量 否则不能起到很好的滤波效果 本 电路中使用的电容大小为 470 F 78M05 的输出级接入两个滤波电容 用于减小因为电 源波动对系统造成的影响和滤波 其不需要采用大容量的电解电容器 容量大小为 100pF 再接入 470F 的电容器 便可减少因为电源波动的影响和滤去纹波 很好地改 善负载的瞬态响应 5 2 1 2 温度检测与变送环节 第 9 页 共 31 页 检测与变送设备主要根据被检测参数的性质与系统设计的总体考虑来决定 被检测 参数性质的不同 准确度要求 响应速度要求的不同以及对控制性能要求的不同都影 响检测 变送器的选择 要从工艺的合理性 经济性加以综合考虑 DS18B20 是数字温度传感器 具有 3 引脚 TO 92 小体积封装形式 温度测量范围 为 55 125 可编程为 9 位 12 位 A D 转换精度 测温分辨率可达 0 0625 被测温度用符号扩展的 16 位数字量方式串行输出 其工作电源既可在远端引入 也可 采用寄生电源方式产生 DS18B20 的核心功能部件是它的数字温度传感器 它的分辨率可配置为 9 10 11 12 位 它们对应的温度值分辨率为 0 5 0 25 0 125 0 0625 温度信息的低位 高位字节内容还包括了符号位 S 和二进制小数部分 本系统中 DS18B20 接线图如图 2 2 所示 当测量距离较远时 可在数据输出口加上拉电阻 R9 其阻值为 5K 左右 确保数据传输的准确性 图 2 2 DS18B20 接线图 由于本系统中涉及到 PID 调节 PID 调节需要精度稍高的输入量 故本系统选取 16 位分辨率 精度为 0 0625 2 1 3 单片机最小系统 整个系统采用常用的 51 单片机 90C516RD 是一种带 4K 字节闪烁可编程可擦除只 读存储器的低电压 高性能 CMOS8 位微处理器 称单片机 1 主要特性 与 MCS 51 兼容 4K 字节可编程闪烁存储器 寿命 1000 写 擦循环 数据保留时 间 10 年 全静态工作 0Hz 24Hz 三级程序存储器锁定 128 8 位内部 RAM 32 个 可编程 I O 线 两个 16 位定时器 计数器 5 个中断源 可编程串行通道 低功耗的闲 置和掉电模式 片内振荡器和时钟电路 2 本设计中 90C516RD 与外围电路的接口 本系统采用 P3 口与键盘电路连接 P1 3 口与 DS18B20 的数据端连接 P0 口作为 显示与报警电路端口 VCC 端接 5V 电源 X1 X2 接晶振电路 RESET 端接复位电路 其余 INT1 INT0 T1 T0 RD WR RXD TXD ALE PSEN 端置空 第 10 页 共 31 页 图 2 3 90C516RD 单片机引脚图 3 复位电路 90C516RD 单片机的复位是由外部的复位电路来实现的 最简单的上电自动复位电 路 是通过外部复位电路的电容充电来实现的 只要 Vcc 的上升时间不超过 1 毫秒 就可以实现自动上电复位 当时钟频率选用 12MHz 时 C 取 22uF R 取 1K 除上电复位外 有时还需要按键手动复位 按键手动复位有电平方式和脉冲方式 两种 其中电平复位是通过 RST 端经电阻和电源 Vcc 接通而实现的 按键手动电平复 位电路如图 2 4 所示 当时钟频率选用 12MHz 时 C1 选取 10uF R18 选择 1000 欧 R20 选择 10000 欧 图 2 4 复位电路 4 晶振电路 晶振有一个重要的参数 那就是负载电容值 选择与负载电容值相等的并联电容 第 11 页 共 31 页 就可以得到晶振标称的谐振频率 一般的晶振的负载电容为 15pF 或 12 5pF 如果再考 虑元件引脚的等效输入电容 则两个 20pF 的电容构成晶振的振荡电路就是比较好的选 择 晶体振荡器与石英晶体谐振器都是提供稳定电路频率的一种电子器件 石英晶体 振荡器是利用石英晶体的压电效应来起振 而石英晶体谐振器是利用石英晶体和内置 IC 来共同作用来工作的 振荡器直接应用于电路中 谐振器工作时一般需要提供 3 3V 电压来维持工作 振荡器比谐振器多了一个重要技术参数为 谐振电阻 谐振器没有 电阻要求 RR 谐振电阻的大小直接影响电路的性能 也是各商家竞争的一个重要参数 9 本设计采用 12MHz 晶振 并联两个 20pF 电容构成晶振电路 图 2 5 晶振电路 2 1 4 键盘电路 要想控制温度 就要采用良好的人机界面 选择用 4 个按键组成一个小键盘执行 某些功能 如清零 预置值 改变测量范围等 如图 2 6 所示 图 2 6 按键电路 其中 S1 作为设定期望温度 上下限报警温度 通过软件配合可实现电炉加热的通 断 S2 S3 用来设定所需温度的具体数值 S4 用来确定温度设定 并启动温度测量程 序 2 1 5 显示电路 LED 显示是用发光二极管显示字段的显示器件 也可称为数码管 其外形结构如图 所示 由图可见它由 8 个发光二极管构成 通过不同的组合可用来显示 0 9 A F 及 小数点 第 12 页 共 31 页 图 2 7 8 字型共阳数码管及锁存器连接图 LED 显示器分为共阴极和共阳极 共阴极是将 8 个发光二极管阴极连接在一起作为 公共端 而共阳极是将 8 个发光二极管的阳极连接在一起作为公共端 在 51 单片机系 统中常用的数码管显示方法有两种 动态扫描显示和串行静态显示 本系统中 DS18B20 的工作周期为几百毫秒 而且后续的 PID 运算涉及到浮点数运算 PWM 波的中断周期小 于温度采样周期控制 若采用动态扫描显示 显示时间短 且容易被中断打断 所以 综上考虑 为使显示部分显示的是实时温度 且为了保持良好的人机界面 必须采用 串行静态显示 对于四位数码管的串行静态显示 工作周期不超过 40 微秒 完全符合 要求 2 1 6 加热驱动模块 固体继电器工作可靠 寿命长 无噪声 无火花 无电磁干扰 开关速度快 抗 干扰能力强 且体积小 耐冲击 耐振荡 防爆 防潮 防腐蚀 能与 TTL DTL HTL 等逻辑电路兼容 以微小的控制信号达到直接驱动大电流负载 主要不足是存在通态 压降 有断态漏电流 交直流不能通用 触点组数少 另外过电流 过电压及电压上 升率 电流上升率等指标差 固体继电器目前已广泛应用于计算机外围接口装置 电炉加热恒温系统 数控机 械 遥控系统 工业自动化装置 信号灯 闪烁器 照明舞台灯光控制系统 仪器仪 表 医疗器械 复印机 自动洗衣机 自动消防 保安系统 以及作为电网功率因素 补偿的电力电容的切换开关等等 另外在化工 煤矿等需防爆 防潮 防腐蚀场合中 都有大量使用 第 13 页 共 31 页 图 2 8 加热驱动电路 如图 2 11 所示 PWM 口用来进行 PID 调节 改变加热丝中电流通断时间 2 1 7 报警电路 为使系统的人机交互界面更好 设置了两路报警信号和两路标志信号 用于显示 越限报警 强电电路通断情况 温度稳定情况 当电炉中水温高于工作人员所设定的上限温度或者低于设定的下限温度时 则认 为发生了越限 L1 和 L2 分别用来表示上限报警和下限报警 值得一提的是 当系统从 低温开始加热 到下限温度以前系统都会出现越限报警 当出现越限报警时 工作人 员应该注意是不是此种情况 此情况可以忽略 利用 LED 发光进行报警 2 2 软件设计 系统的软件部分以主程序为入口 在初始化之后调用键盘管理程序 完成对键盘 的扫描 读入键值 并根据相应的键值进行各类操作 温度采样频率由软件延时控制 在每一次采样完成之后进行控制时间的计算和显示刷新 软件部分主要包括主函数 延时子函数 温度采集子函数 按键扫描子函数 PID 处理子函数 PWM 波产生子函数 报警显示函数 3 2 1 主函数 主程序作为程序的入口 控制各类程序的调用 在系统中其主要的任务是调用键 盘管理程序 然后其它的功能都由 DS18B20 温度转换程序和中断程序完成 可以说主 第 14 页 共 31 页 程序起到了重启动后读入 E2PROM 中的设计温度和上 下限温度 设计各类定时器和开 中断的 并调用键盘管理程序的功能 这样处理主程序起到了分散功能的作用 即主 程序会变得很容易编写 而具体的功能都由功能子程序完成 流程图如图 2 9 所示 读取温度 按键扫描 输出PWM PID运算 显示 延时 初始化 图 2 9 主程序流程图 2 2 2 按键设定函数 系统的被控温度 上下限报警温度等都是通过按键来设定的 由于采用键盘的接 法是最普通的 所以按键处理函数并不会占用整个程序太多时序 流程图如图 2 10 所 示 按键口 0 消抖延时 按键口 0 按键次数累计 1 按键次数 2 按键次数 1 按键次数 3 设定期望温度设定上限报警值设定下限报警值 Y N Y N YYY N N N 第 15 页 共 31 页 图 2 10 按键设定流程图 2 2 3 温度采集函数 DS18B20 是数字式温度传感器 它与单片机的硬件接口电路简单 采用单总线工作 方式 所以使用 DS18B20 需详细了解其工作时序和内部寄存器 主机通过拉低单线 480 微秒以上 产生复位脉冲 然后释放该线 进入 RX 接收模式 主机释放总线时 会产 生一个上升沿 DS18B20 检测到上升沿后 延时 15 至 60 微秒 DS18B20 通过拉低总线 60 240 微秒来产生应答信号 主机接收到有应答信号后 说明有单线器件在线 流程图如图 2 11 所示 发起READ 命令 读取第1 2字节即 温度数据 初始化DS18B20 延时 等待温度转 换完成 发起CONVERT T指令 发SKIP ROM命令 应答脉冲 应答脉冲 Y N Y N DS18B20初始化 图 2 11 DS18B20 测温流程图 2 2 4 PID 运算子函数 常规的模拟 PID 控制系统原理框图如图 2 12 所示 该系统由模拟 PID 控制器和 被控对象组成 其中 r t 是给定值 y t 是系统的实际输出值 给定值与实际输出值 第 16 页 共 31 页 构成控制偏差 e t 2 1 e tr ty t 图 2 12 模拟 PID 控制系统原理图 e t 作为 PID 控制的输入 u t 作为 PID 控制器的输出和被控对象的输入 所以 模拟 PID 控制器的控制规律为 2 2 0 1 tde t u tKp e te t dtTd Tidt 其中 Kp 控制器的比例系数 Ti 控制器的积分系数 Td 控制器的微分系数 1 比例部分 在模拟 PID 控制器中 比例环节的作用是对偏差瞬间做出反应 偏差一旦产生控 制器立即产生控制作用 使控制量向减少偏差的方向变化 控制作用的强弱取决于比 例系数 Kp 比例系数 Kp 越大 控制作用越强 则过渡过程越快 控制过程的静态偏差 也就越小 但是越大 也越容易产生振荡 破坏系统的稳定性 故而 比例系数 Kp 选 择必须恰当 才能过渡时间少 静差小而又稳定的效果 2 积分部分 从积分部分的数学表达式可以知道 只要存在偏差 则它的控制作用就不断的增 加 只有在偏差为 0 时 它的积分才能是一个常数 控制作用才是一个不会增加的常 数 可见 积分部分可以消除系统的偏差 积分环节的调节作用虽然会消除静态误差 但也会降低系统的响应速度 增加系 统的超调量 积分常数 Ti 越大 积分的积累作用越弱 这时系统在过渡时不会产生振 荡 但是增大积分常数 Ti 会减慢静态误差的消除过程 消除偏差所需的时间也较长 但可以减少超调量 提高系统的稳定性 当 Ti 较小时 则积分的作用较强 这时系统 过渡时间中有可能产生振荡 不过消除偏差所需的时间较短 所以必须根据实际控制 的具体要求来确定 Ti 3 微分部分 实际的控制系统除了希望消除静态误差外 还要求加快调节过程 在偏差出现的 第 17 页 共 31 页 瞬间 或在偏差变化的瞬间 不但要对偏差量做出立即响应 比例环节的作用 而 且要根据偏差的变化趋势预先给出适当的纠正 为了实现这一作用 可在 PI 控制器的 基础上加入微分环节 形成 PID 控制器 PID 控制器参数的工程整定 各种调节系统中 PID 参数经验数据以下可参照如下数 据 温度 T P 20 60 T 180 600s D 3 180s 压力 P P 30 70 T 24 180s 液位 L P 20 80 T 60 300s 流量 L P 40 100 T 6 60s 本系统中 PID 控制器的输入是实测温度与期望温度的偏差 输出是 PWM 波的脉宽 由于温度具有热惯性这个特性 且在温度控制场合尽量不允许出现超调现象 所以在 在选取比例系数不能太大 但为了和相应时间保持协调 可以当温差大于 10 时不进 行 PID 运算 只有当温度偏差进入 10 范围内时 开启定时器进行 PID 控制 根据工 程经验 本系统可忽略微分项 只进行比例与积分运算 最终实现稳准快的指标 流 程图如图 2 13 所示 偏差 10 0 偏差 10 计算偏差 设定值 实测值 PID运算 调节脉宽 PWM 0 PWM 1 N N N Y Y Y 图 2 13 PID 运算流程图 2 2 5 PWM 产生函数 脉冲宽度调制是一种模拟控制方式 其根据相应载荷的变化来调制晶体管栅极或 基极的偏置 来实现开关稳压电源输出晶 体管或晶体管导通时间的改变 这种方式能 使电源的输出电压在工作条件变化时保持恒定 是利用微处理器的数字输出来对模拟 电路进行控制的一种非常有效的技术 第 18 页 共 31 页 PWM 的一个优点是从处理器到被控系统信号都是数字形式的 无需进行数模转换 让信号保持为数字形式可将噪声影响降到最小 噪声只有在强到足以将逻辑 1 改变为 逻辑 0 或将逻辑 0 改变为逻辑 1 时 也才能对数字信号产生影响 用 PWM 波输入固态 继电器的输入端 从而改变电炉加热丝内的电流通断时间 15 本设计中 PWM 由单片机定时器中断产生 与主程序和其他函数不影响 脉宽受 PID 控制器的输出量控制 流程图如图 2 14 所示 重装50毫秒定时器 初值 i PWM 0 PWM 1 i 0 i Uk i 200 返回 N Y Y N 图 2 14 PWM 产生流程图 3 3 系统调试 3 3 1 人机界面调试 本系统涉及到人机界面的部分包括按键电路 显示电路 报警电路 首先对显示 电路进行调试 根据移位寄存器的八个并行输出口与数码管的管脚的连接情况得出 0 9 H L S 的字型码 其中 H 用来标志上限报警值 L 用来标志下限报警值 S 用来标 志期望设定值 当 SET 键第一次被按下时 四位数码管的第三位显示 S 随后按动 add10 键和 add1 键 用来设定所需控制的温度值 当 SET 键第二次被按下时 四位数 码管的第三位显示 H 随后按动 add10 键和 add1 键 用来设定温度的上限报警值 当 SET 键第三次被按下时 四位数码管的第三位显示 L 随后按动 add10 键和 add1 键 用来设定温度的下限报警值 当 CHECK 键被按下时 启动温度测量 当设定温度值小 于下限温度值时 下限报警指示灯亮 当设定温度值大于上限温度值 上限报警指示 灯亮 3 3 2 温度显示 系统的控制对象为温度 所以温度测量的准确性至关重要 DS18B20 采用了 12 位 的分辨率 精度达到 0 0625 由于 DS1820 与微处理器间采用串行数据传送 占用了 一定的时序 并且串行静态显示需要几百毫秒的延时 所以数码管显示的温度大致就 第 19 页 共 31 页 是当前的温度 该系统测量精度符合要求 但是响应时间比较慢 这样就对软件设计 中的采样周期提出了较高的要求 第 3 章 总 结 基于 90C516RD 单片机温度控制系统 利用温度传感变送器 将采样到的温度信号 输入到单片机中 再由单片机作为 90C516RD 单片机的控制器 根据测量温度与设定温 度的差值和 90C516RD 单片机的算法生成控制信号 控制电炉的通电与断电 整个系统 结构紧凑 所用芯片少 控制精度高 在键盘 变送器 显示电路上都采用了串行方 式 从而减小了单片机口线的使用 也使使用口线小的单片机成为可能 减小了成本 开支 电源电路虽未采用流行的开关稳压电源 但也经济实惠 性能稳定 在软件上 基于 90C516RD 单片机的算法的温度控制系统采用了经典的 90C516RD 单片机的算法 从某个角度上说这种算法优于传统的控制算法 有更稳定 控制精度 更高等优点 而控制量的输出上采用了模拟的 PWM 变换 免去了一级 D A 转换器 减 小了成本 且简单易行 在程序的编写过程中特别注意了人机的交互性及各种功能的 实现 如键盘控制管理程序和 90C516RD 单片机的运算程序都是经过深思熟虑而精心设 计 使系统的操作界面更容易让人理解 同时使用键盘输入控制温度 虽然一定程度 上增加了程序的复杂性 但同时也使系统的温度更容易设定 当然 系统同时也存在几点缺点 在选择 89C51 单片机的控制器时用了速度相对较 慢的单片机 若采用速度更快的单时钟周期系列的单片机 提高采样频率 控制精度 将会更高 第 20 页 共 31 页 附录 系统源程序 名称 DS18b20 数码管显示 内容 显示格式 符号 xxx x C 可以显示负温度 include 包含头文件 一般情况不需要改动 头文件包含特殊功能寄存器的定义 include 18b20 h include delay h define DataPort P0 定义数据端口 程序中遇到 DataPort 则用 P0 替换 define uint unsigned int define uchar unsigned char sbit LATCH1 P2 2 定义锁存使能端口 段锁存 sbit LATCH2 P2 3 位锁存 sbit set P3 0 定义按键输入端口 sbit add1 P3 2 sbit add10 P3 4 sbit check P3 6 sbit spk P1 0 警报 sbit pwm P2 7 pwm 波 struct PID unsigned int setpoint unsigned int p unsigned int i unsigned int d signed long lasttime signed long prevtime signed long sumerror struct PID spid bit ReadTempFlag 定义读时间标志 unsigned char code dofly DuanMa 10 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f 显示段码值 0 9 unsigned char code dofly WeiMa 0 xfe 0 xfd 0 xfb 0 xf7 0 xef 0 xdf 0 xbf 0 x7f 分别对应相应 的数码管点亮 即位码 第 21 页 共 31 页 unsigned char TempData 8 存储显示值的全局变量 uchar dbuf 4 0 bit flag uchar k h p l p uint temp set temp h temp l tset th tl e lastt uint uk uk1 kp float ki kd unsigned int TempH TempL temp uchar high time 0 low time 0 count 0 unsigned int shi ge void Display unsigned char FirstBit unsigned char Num 数码管显示函数 void Init Timer0 void 定时器 0 初始化 void Init Timer1 void 定时器 1 初始化 void ds18b20 void 读取温度 显示 警报 void key set void 设置温度及上下限 void key add1 void 加 1 void key add10 void 加 10 void key check void 显示实时 设置温度 void pidcalc void PID 运算 void c pwm void 主函数 void main void unsigned int TempH TempL temp PT1 1 Init Timer1 kp 4 ki 0 0015 kd 0 pwm 0 while 1 key set key add1 key add10 key check while flag 1 ds18b20 第 22 页 共 31 页 if e0 pidcalc else pwm 0 key set 显示函数 用于动态扫描数码管 输入参数 FirstBit 表示需要显示的第一位 如赋值 2 表示从第三个数码管开始显示 如输入 0 表示从第一个显示 Num 表示需要显示的位数 如需要显示 99 两位数值则该值输入 2 void Display unsigned char FirstBit unsigned char Num static unsigned char i 0 DataPort 0 清空数据 防止有交替重影 LATCH1 1 段锁存 LATCH1 0 DataPort dofly WeiMa i FirstBit 取位码 LATCH2 1 位锁存 LATCH2 0 DataPort TempData i 取显示数据 段码 LATCH1 1 段锁存 LATCH1 0 i if i Num i 0 第 23 页 共 31 页 定时器 0 初始化子程序 void Init Timer0 void TMOD 0 x01 使用模式 1 16 位定时器 使用 符号可以在使用多个定时器时不 受影响 TH0 0 x00 给定初值 TL0 0 x00 EA 1 总中断打开 ET0 1 定时器 0 中断打开 TR0 1 定时器 0 开关打开 定时器 0 中断子程序 void Timer0 isr void interrupt 1 static unsigned int num TH0 65536 2000 256 重新赋值 2ms TL0 65536 2000 256 Display 0 8 调用数码管扫描 num if num 300 num 0 ReadTempFlag 1 读标志位置 1 定时器 1 初始化子程序 void Init Timer1 void TMOD 0 x10 使用模式 1 16 位定时器 使用 符号可以在使用多个定时器时不 受影响 TH1 65536 50000 256 给定初值 50ms TL1 65536 50000 256 TH1

温馨提示

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

评论

0/150

提交评论