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

下载本文档

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

文档简介

设计报告 1 设计原理 水温控制系统以 单片机作为控制核心 采 用开关控制和 控制算法相结合 通过控制单位时间内加热 时间所占的比例 即控制波形占空比 来控制水的加热速度 实 现对 水的全量程 内的升温 降温功能 的自动控制 根据设计要求系统可划分为控制模块 温度测量模 块 水温调节模块 键盘输入模块 显示电路模块等 系统原理 图如图所示 首先写命令给 开始转换数 据 将转换后的温度数据送入 进行处理 处理后在液 晶屏上实时显示 并将实际测量温度值与键盘设定值进行比较 根据比较结果进行温度调节 当温差比较大时采用开关量调节 既全速加热和制冷 当温差小时采用 算法进行调节 最终 达到温度的稳定控制 其中 加热采用内置 水中 电加热器实 现 热量直接与水传递 加热效果好 控温方便 降温采用半导 体制冷片实现 其体积小 安装简单 易于控制 价格便宜 可 短时间内反复启动 但其制冷速率不高 所以设计中配套散热风 扇以达到快速降温的目的 温度控制算法 实际温度控制系统 常采用开关控制或数字 控制方式 开关控制的特点是可以使系统以最快的素的向平衡点靠近 但在 实际应用却很容易造成系统在平衡点附近震荡 精度不高 而数 字 控制具有稳态误差小特点 实用性广泛的特点 但误差 较大时 系统容易出现积分饱和 从而份致系统出现很大的超调 量 甚至出现失控现象 因此 本设计将开关控制 放积分饱和 防参数突变积分饱和等方法溶入 控制算法组成复式数字 控制方法 集各种控制策略的优点 既改善了常规控制的 动态过程又保持了常规控制的稳态特性 2 1 控制算法的确定 温度控制过程为 当水温温差大时 采用开关控制方式迅速 减小温差 以缩短调节时间 当温差小于某一值后采用 PID 控制 方式 以使系统快速稳定并保持系统无静态误差 在这种控制方 法中 PID 控制在较小温差时开始进入 这样可有效避免数字积 分器的饱和 PID 参数和被控制对象关系密切 要精确得到被控 对象模型比较困难 为此 采用离线模糊整定的方法来确定 PID 参数 即给出一组 PID 参数的初值 测得相应的数据 按使这个 量减小的方向调节 PID 参数 用整定后的参数控制该系统 并根 据输出的调节时间 超调量及稳态误差 调节 PID 参数 如此反 复 求得一组使系统性能最优的 PID 参数 复合 PID 控制系统方 框图如图所示 2 2PID 控制算法 根据设计要求 系统对 1L 净水进行加热或降温处理 根据 水的对象特性 会出现惯性温度误差问题 原因如下 温度控制器采用发热丝对水进行加热 发热丝通电加热时 内部温度很高 当容器内水温升高至设定温度时 温度控制器发 出信号停止加热 但这时发热丝的温度会高于设定温度 发热丝 还将继续对对水进行加热 导致水的温度还会继续上升几度 然 后才开始下降 当水温下降到设定温度的下限时 温度控制器又 发出加热信号 开始加热 但发热丝要把温度传递到被加热器件 需要一定的时间 导致水温会继续下降几度 所以 为了对水温 实现精确控制 使温度测量误差在 0 5 内 必须采用 PID 模 糊控制算法 通过 Pvar Ivar Dvar 比例 积分 微分 三方 面的结合形成一个模糊控制来解决惯性温度误差问题 利用数值逼近方法 在采样时刻 t iT T 为采样周期 i 为正 整数 时 PID 调节规律可通过下式近似计算 则增量式 PID 算法的输出量为 式中 ei ei 1 ei 2 分别为第 n 次 n 1 次和 n 2 次的偏 差值 Kp Ti Td 分别为比例系数 积分系数和微分系数 T 为 采样周期 单片机每隔固定时间 T 将现场温度与用户设定目标温度的差 值带入增量式 PID 算法公式 由公式输出量决定 PWM 方波的占空 比 后续加热电路根据此 PWM 方波的占空比决定加热功率 现场 温度与目标温度的偏差大则占空比大 加热电路加热功率增大 使温度的实测值与设定值的偏差迅速减少 反之 二者的偏差小 则占空比减小 加热电路加热功率减少 直至目标值与实测值相 等 达到自动控制的目的 2 3PID 参数的确定 PID 参数的选择是设计成败的关键 它决定了温度控制的准 确度 由于温度系统是一个具有较大滞后性的系统 所以本系统 的采样周期定为 10 秒 加热周期定为 1 秒钟 根据一些文献提 供的经验值 初步确定 Kp 2 Ti 2 Td 0 5 根据公式 Ki Kp T TI Kd Kp TD T 计算得出 Ki 1 Kd 1 然后 由按键对系 统设定一个温度值 在线应用工程整定法中的经验法对 P I D 各 参数进行调整 经验法是一种凑试法 它通过模拟或闭环运行 观察调节过程的响应曲线 如果曲线不够理想 则按某种程序将 参数反复凑试 直到调节质量满意为止 凑试程序通常是先比例 后积分 最后加入微分 凑试法整定 PID 参数的步骤是 1 首先进行 P 整定 将参数 Kp 由小而大慢慢变化 直至得 到反应快 超调小的响应曲线 若无静差或静差在允许范围内且 响应曲线满意 整定结束 否则继续下步 2 进行 PI 整定 略小于 Kp 值 将 Ti 由大而小缓慢变化 在保持系统动态性能良好的前提下 消除静差或是静差允许范围 内 反复改变 Kp Ti 值以求得较好效果 若效果满意 则整定结 束 否则继续下去 3 进行 PID 整定 略改变 Kp Ti 的值 使 Td 由小而大缓慢 变化 以求得较好的响应曲线和较小的静差 逐步反复的试凑 直至获得满意效果为止 对于一定的系统 合理的参数组并不唯一 根据一 些文献的实践经验 在具体实施 PID 参数整定时 以下几个结论 比较实用 1 比例系数 Kp 是 PID 调节中最关键的一个参数 Kp 增大 系统稳定性增加 但调节灵敏度减弱 一般曲线振荡频繁时 要 增大 Kp 而曲线飘浮绕大弯时 要减小 Kp 2 积分时间常数 Ti 主要起消除静差的作用 减小 Ti 消除 静差快 但稳定性减小 一般曲线偏离恢复慢时 减小 Ti 而曲 线波动周期长时 再增大 Ki 3 微分时间常数 Td 是加速过程的有力调节 在加速过渡过 程 应增加 Td Td 不宜过小 也不宜太大 Td 一般选 Ti 的四分 之一为最佳 根据以上调节的步骤及调节的方法及经验 经过反复的试验 做后得到最终的 P I D 的参数为 Kp 30 Ki 5 Kd 0 3 硬件电路设计 水温控制系统的硬件电路主要包括 主控电路 温度采集电 路 温控电路和显示电路等 下面依次对各部分进行设计 3 1 主控电路 主控电路采用 STC89C52 单片机作为系统控制器 结合数字 PID 算法完成对温度测量信号的接收 处理 控制加热器和制冷 片 使水温控制达到设计要求 主控电路包括 STC89C52 最小系 统和键盘电路两部分 STC89C52 最小系统在上一章中已介绍 这 里不再赘述 本设计键盘采用 RF X1 开发板上的 6 个独立按键中 的 4 个 各按键经上拉电阻分别接到单片机的 P3 2 P3 3 P3 4 P3 5 口上 起到确认 选择 上调和下调的 作用 每按上调或下调键一次 设定温度值加 1 或减 1 电路图 如图所示 EA VP 31 X1 19 X2 18 RE SET 9 RD 17 WR 16 IN T0 12 IN T1 13 T0 14 T1 15 P10 1 P11 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 P00 39 P01 38 P02 37 P03 36 P04 35 P05 34 P06 33 P07 32 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P26 27 P27 28 PS EN 29 AL E P 30 TX D 11 RX D 10 U1 ST C89C 52 S4 S1 S2 S3 S19D9 4001 C2 22pF C3 22Pf C1 10uF Y1 12M HZ R1 10K 5V R61 10K 62 10K R63 10K R65 10K 5V P32 P33 P34 P36 3 2 温度采集电路 本系统采用 DS18B20 单总线可编程温度传感器来实现温度的 采集和转换 温度以 9 12 位数字量读出 可以直接与单片机进 行连接 无需外部器件和电源 大大简化了电路的复杂度 DS18B20 应用广泛 测温范围为 55 125oC 温度数字量转换快 性能可以满足题目的设计要求 DS18B20 的测温电路如图所示 GN D 1 GN D 3 DQ 2 U2 DS 18B20 R57 4 7 K 5V P35 3 3 温度控制电路 温度控制电路采用加热器和制冷片对 1L 水实现加热和降温 具体电路如图 12 5 所示 当实测温度高于设定温度时 单片机 P0 2 脚输出低电平 光耦管导通输出高电平 进入 LM393 管脚比 较整形 滤除高次谐波 输出高电平 进入 Q3 和 Q4 组成的推挽 电路 Q3 导通 Q4 截止 输出低电平 晶闸管导通 驱动制冷片 降温 当实测温度低于设定温度时 P0 3 脚输出低电平 驱动加 热器对水温进行加热 工作原理与降温驱动相同 R4 1K R8 10K R5 10K R7 1K R10 4 7K R13 4 7K R11 20K R12 20K R3 1K R2 1K U3 U4 D1 D2 R9 10K R6 10K 1 2 3 4 D3 BR IDGE 1 M2 RF470 M1 RF470 Q1 MPS8050 Q3 MPS8050 Q4 MPS8550 Q2 MPS8550 3 2 1 84 U1A LM 393 3 2 1 84 U2A LM 393 2 1 CO N2 丝丝丝 500W 5V 5V 5V 12V 12V 12V 150W SGND 220V 50Hz P02 P03 3 4 显示电路 显示电路采用 LCD12864 液晶模块显示系统的设定温度和实 测温度 LCD12864 液晶共有 20 个引脚 管脚名称及功能如表 12 1 所示 本系统选用单片机 P1 口作为数据输出端与 LCD12864 的数据端 DB0 DB7 相连 进行水温数据传输 P20 接串并行 模式方式位 RS P21 接并行的读写方式位 R W P22 接并行使能 端口 E P23 接并 串行接口选择位 PSB P24 接复位端口 RST 具 体电路图如图所示 4 软件设计 系统的软件设计应用 C 语言 采用模块化对单片机进行编程 实现各项功能 主要包括 PID 控制程序 按键子程序 温度采 集子程序 温度比较子程序和液晶显示程序 4 1 主程序设计 系统上电初始化后 首先进行按键扫描 若有按键按下 则 读取按键值 更新设定温度 将实测温度与设定温度进行比较 若实测温度与设定温度差值大于 2 C 则对水进行全速加热或降 温 若实测温度与设定温度差值小于 2 C 则调用 PID 子程序 对水温进行微调 达到设计要求 系统主程序流程图如图所示 初始化 Y N N Y N Y 键盘扫描 读按键值并更新各参数 显示当前温度值 是否有 新参数键入 调用 PID 子程序 加热 制冷子程序 测量值与设定 值差 2 以上 温差 2 C 以下 温控判断方式 开始 附录 PID 控制程序 PID 控制就是按设定值与测量值之间偏差的比例 偏差的 积累和偏差变化的趋势进行控制 它根据采样时刻的偏差值 计算输出控制量的增量 调节控制信号的导通时间来控制加 热电路和冷却电路的工作 当采样周期相当短时 可以用求 和代替积分 用差商代替微分 PID 控制子程序如下 PID 算法 unsigned int PIDCalc struct PID pp unsigned int NextPoint unsigned int dError Error Error pp SetPoint NextPoint 偏差 pp SumError Error 积分 dError pp LastError pp PrevError 当前 微分 pp PrevError pp LastError pp LastError Error return pp Proportion Error 比例 pp Integral pp SumError 积分项 pp Derivative dError 微分项 按键子程序 本系统采用四个按键 完 成温度的设定 当选择键 K1 每按下一次 K1num 加 1 根据 K1num 值选择对温度值的百位 预留 十位 个位进行数值 调节 每按一次按键 K2 对应位数值加 1 每按一次按键 K1 对应位数值减 1 并将设定温度值写到液晶显示器的相应 位置 按键子程序如下 按键子程序 void sheding if k1 0 delay1 10 if k1 0 按键 K1 按下 while k1 按键 K1 抬起 write com 0 x0f write com 0 x94 k1num switch k1num case 1 write com 0 x0f write com 0 x94 液晶显示位置 十位 break case 2 write com 0 x95 液晶显示位置 个位 break case 3 write com 0 x96 液晶显示位置 小数位 break case 4 k1num 0 write com 0 x0c 清零 break if k1num 0 返回 温度值加处理 if k2 0 按键 K2 按下 delay1 10 if k2 0 while k2 switch k1num case 1 shi if shi 10 shi 0 a shi 十位加 1 到 10 清零 write com 0 x94 write d ate table shi write com 0 x94 break case 2 ge if ge 10 ge 0 b ge 个位加 1 到 10 清零 write com 0 x95 write date table ge write com 0 x95 break case 3 xs if xs 10 xs 0 c xs 小数位加 1 到 10 清零 write com 0 x96 write d ate write date table xs write com 0 x96 在液 晶对应位置画点 break 温度值减处理 if k3 0 delay1 10 if k3 0 while k3 switch k1num case 1 shi if shi 1 shi 9 a shi write com 0 x94 write date table shi write com 0 x94 break case 2 ge if ge 1 ge 9 b ge write com 0 x95 write date table ge write com 0 x95 break case 3 xs if xs 1 xs 9 c xs write com 0 x96 write date write date table xs w rite com 0 x96 break DS18B20 温度采集子程序 系统采用 DS18B20 对 1L 水 的温度进行采集 首先根据 DS18B20 的工作时序对其进行初 始化 并对 DS18B20 内部寄存器读写操作进行定义 系统工 作时 单片机读取 DS18B20 内部寄存器的二进制数值 将其 转化为十进制的真实温度值 DS18B20 温度采集子程序如 下 DS18B20 温度采集子程序 void init DS18B20 初 始化 uchar x 0 DS18B20 1 DQ 复 位 delay 8 稍做延时 DS18B20 0 单片 机将 DQ 拉低 delay 80 精确延时 大于 480us DS18B20 1 拉高 总线 delay 14 x DS18B20 稍做 延时后 如果 x 0 则初始化成功 x 1 则初始化失败 delay 20 uchar read onechar 读一个字节 uchar i 0 uchar date 0 for i 8 i 0 i DS18B20 0 date 1 寄存器右 移 DS18B20 1 if DS18B20 date 0 x80 delay 4 return date void write onechar uchar date 写一个字节 uchar i 0 for i 8 i 0 i DS18B20 0 DS18B20 date delay 5 DS18B20 1 date 1 uint read temp 读取 温度 uchar a 0 uchar b 0 uint t 0 float tt 0 init DS18B20 write onechar 0 xcc 跳过读序号列号的操作 write onechar 0 x44 启动温度转换 init DS18B20 write onechar 0 xcc 跳过读序号列号的操作 write onechar 0 xbe 读取温度寄存器 a read onechar 连续读两个字节数据 读低 8 位 b read onechar 读高 8 位 t b t temper 是否设置的温度大于实际温度 if set temper temper 2 设置的温度比实际的温度是否是大于 2 度 high time 100 如果是 则全速加热 low time 0 else 如果是在 0 8 到 2 度范围 则开始降温 if set temper temper 0 8 high time 0 low time 100 else 如果温差小 于 0 8 度 运行 PID 计算 for i 0 i 10 i s read temp rin s Read Input rout PIDCalc Perform PID Interation if high time 100 high time unsigned char rout 1000 else high time 100 low time 100 high time else if set temper temper 是否设置的温度小于实际温度 if set temper temper 0 high time 0 low time 100 全速降温 else 实际温度大于 设定温度 马上开启 PID 计算 for i 0 i 10 i s read temp rin s Read Input rout PIDCalc Perform PID Interation if high time 100 high time unsigned char rout 10000 else high time 0 low time 100 high time 液晶显示程序 液晶显示器用于显示水温 的实际温度和设定温度 首先对 LCD12864 进行初始化 并读 取控制器当前状态 判断是否准备好 空闲 然后向液晶模 块写入指令代码 进行显示准备 将要水温以十六进制代码 的形式送入液晶显示缓冲区 最后利用读显示数据指令控制 液晶模块在相应位置显示水温数据 液晶显示程序如下 LCD12864 初始化 void init lcd lcd psb 1 write com 0 x34 扩充 指令集 delay1 2 write com 0 x30 基本 指令集 delay1 2 write com 0 x02 显示 归位 delay1 2 write com 0 x01 清屏 显示 delay1 2 write com 0 x0c 显示 状态开关 delay1 2 write com 0 x06 显示 光标移动设置 delay1 2 写数据 void write date uchar date read busy lcd rs 1 delay 5 lcd rw 0 delay 5 lcd date date lcd en 0 delay 5 lcd en 1 delay 5 lcd

温馨提示

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

评论

0/150

提交评论