




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计说明书课程设计说明书 题目 基于 PID 算法的 恒温控制系统设计 学号 学号 姓名 姓名 指导教师 指导教师 日期 日期 目录目录 一 设计题目 1 二 设计要求 1 三 设计思路 1 四 实验设备 1 五 硬件介绍 1 六 硬件接线图 3 七 软件流程图 4 八 PID 参数确定 5 九 实验总结 6 附件 实验程序 7 1 一 设计题目一 设计题目 基于 PID 算法的恒温控制系统设计 二 设计要求二 设计要求 1 利用 DS18B20 采集温度并显示 2 利用单片机 I O 管角输出 PWM 控制功率电阻发热 3 基于 PID 算法实现恒温控制 三 设计思路三 设计思路 本设计要求实时采集温度并实现恒温控制 根据设计要求 本次设计拟采用 AT89C52 单片机作为控制芯片 采集部分使用 DS18B20 温度传感器 显示部分采用 数码管显示实时温度 功率电阻作为控制对象 在 PID 算法的基础上完成恒温控制系 统的设计 四 四 实验设备实验设备 单片机开发试验仪 1 台 AT89C52 单片机芯片 1 个 DS18B20 温度传感器 1 个 C9013 三极管 1 个 1W 功率二极管 1 个 五 五 硬件介绍硬件介绍 DS18B20 DS18B20 是常用的温度传感器 具有体积小 硬件开销低 抗干扰能力强 精度高的 特点 DS18B20 的主要特征 全数字温度转换及输出 先进的单总线数据通信 最高 12 位分辨率 精度可达土 0 5 摄氏度 2 12 位分辨率时的最大工作周期为 750 毫秒 可选择寄生工作方式 检测温度范围为 55 C 125 C 67 F 257 F 内置 EEPROM 限温报警功能 64 位光刻 ROM 内置产品序列号 方便多机挂接 多样封装形式 适应不同硬件系统 DS18B20 数据采集过程 GND 地信号 DQ 数据输入 输出引脚 开漏单总线接口引脚 当被用着在寄生电源下 也可 以向器件提供电源 VDD 可选择的 VDD 引脚 当工作于寄生电源时 此引脚必须接地 由于 DS18B20 采用的是 1 Wire 总线协议方式 即在一根数据线实现数据的双向传输 而对 AT89S51 单片机来说 硬件上并不支持单总线协议 因此 我们必须采用软件的 方法来模拟单总线的协议时序来完成对 DS18B20 芯片的访问 由于 DS18B20 是在一根 I O 线上读写数据 因此 对读写的数据位有着严格的时序要 求 DS18B20 有严格的通信协议来保证各位数据传输的正确性和完整性 该协议定义 了几种信号的时序 初始化时序 读时序 写时序 所有时序都是将主机作为主设备 单总线器件作为从设备 而每一次命令和数据的传输都是从主机主动启动写时序开始 如果要求单总线器件回送数据 在进行写命令后 主机需启动读时序完成数据接收 数据和命令的传输都是低位在先 3 六 六 硬件接线图硬件接线图 1W C9013 DS18B20 硬件部分分别也 P0 口和 P1 口作为八位七段码的段选和位选的 控制端口 DS18B20 连接至 P3 1 口作为控制线 P2 0 口作为 PWM 波输出口 经过 C9013 信号放大后接功率电阻作为被控对象 通过 温度传感器采集电阻上的温度反馈给系统 构成闭环调节系统 构 成恒温控制系统 AT89C52 恒温控制系统硬件连接图 八位七段码显示 P0 P1 P2 0 P3 7 4 七 七 软件流程图 软件流程图 A D D A 被 控 对 象 开始 计算采样初值 设初值 e k 1 e k 2 0 本次采样输入 c k 计算偏差量 e k r k c k 计算控制增量 u k u k q0e k q1e k 1 q2e k 2 输出 u k 为下一时刻做准备 e k e k 1 e k 1 e k 2 采样时刻到否 PID 算法流程图 5 软件部分采用 PID 算法 其中数据采集与显示部分不属于本 设计的主要部分在此不再赘述 PID 算法的参数有实验确定 遵 循先比例 后积分 再微分的原则 从最小看是逐步调试 最终 取得最佳的 PID 参数 八 八 PID 参数确定参数确定 PID 算法运用比例 积分 微分算法 来对回路中的偏差进行修正 通过执行器调节 参数 使测量值稳定在设定值附近 达到控制某一参数的目的 必须先明白 P I D 各自的含义及控制规律 比例 P 比例项部分其实就是对预设值和反馈值差值的发大倍数 积分 I 顾名思义 积分项部分其实就是对预设值和反馈值之间的差值在时间上进行 累加 当差值不是很大时 为了不引起振荡 可以先让电机按原转速继续运行 当时要将 这个差值用积分项累加 当这个和累加到一定值时 再一次性进行处理 从而避免了振荡 现象的发生 可见 积分项的调节存在明显的滞后 而且 I 值越大 滞后效果越明显 微分 D 微分项部分其实就是求电机转速的变化率 也就是前后两次差值的差而已 也就是说 微分项是根据差值变化的速率 提前给出一个相应的调节动作 可见微分项的 调节是超前的 并且 D 值越大 超前作用越明显 可以在一定程度上缓冲振荡 比例项的 作用仅是放大误差的幅值 而目前需要增加的是 微分项 它能预测误差变化的趋势 这 样 具有比例 微分的控制器 就能够提前使抑制误差的控制作用等于零 甚至为负值 从而避免了被控量的严重超调 其次进行参数调整 a 确定比例增益 P 确定比例增益 P 时 首先去掉 PID 的积分项和微分项 一般是令 Ti 0 Td 0 PID 为纯比例调节 输入设定为系统允许的最大值的 60 70 由 0 逐渐加大比例增益 P 直 至系统出现振荡 再反过来 从此时的比例增益 P 逐渐减小 直至系统振荡消失 记录此 时的比例增益 P 设定 PID 的比例增益 P 为当前值的 60 70 比例增益 P 调试完成 b 确定积分时间常数 Ti 比例增益 P 确定后 设定一个较大的积分时间常数 Ti 的初值 然后逐渐减小 Ti 直 6 至系统出现振荡 之后在反过来 逐渐加大 Ti 直至系统振荡消失 记录此时的 Ti 设定 PID 的积分时间常数 Ti 为当前值的 150 180 积分时间常数 Ti 调试完成 c 确定积分时间常数 Td 积分时间常数 Td 一般不用设定 为 0 即可 若要设定 与确定 P 和 Ti 的方法相同 取不振荡时的 30 九 九 实验总结实验总结 本次课程设计的题目为基于 PID 算法的恒温控制系统 在接到这个题目的同时 我们就开始思考如何去设计这个系统 首先是硬件电路的设计与器件的选择 其中温 度采集与显示部分的设计 我们在单片机课程上已经有所涉及 在这里我们就可以直 接拿来用了 硬件部分需要我们设计的就是被控对象 为了试验方便我们选择了 1W 的功率电阻作为被控对象 然后通过 DS18B20 温度传感器去测量电阻附近的温度变化 从而实现系统的控制与反馈 考虑到单片机 I O 口的驱动能力不足 不足以驱动功率 二极管 我们在 I O 口与功率二极管之间串入一个 C9013 最为驱动与开关器件 用以 对二极管的驱动和控制 软件部分采用了 PID 控制算法 其中最重要的环节为 PID 控制参数的确定 一开 始我们准备利用计算法来确定 可是在实施的过程终发现 计算法所需要的原始数据 难以确定 而且在实际测量中也有很大的不确定性 最终 经过我们的分析研究 得 出实验法确定参数是一个比较切实可行的办法 然后就通过实验一步一步测试出所需 要的参数 经过我们几天的而艰苦奋战 终于测试好了参数 最后在进行系统的整体 调试 最终完成这次课程设计 并顺利通过老师的验收 这次的课程设计 让我有了很多的收获和感受 首先 让我认识到了 在学习的 过程中仅仅有理论知识是不足的 必须要理论与实践相结合起来 有的东西看起来非 常简单 可是到了实现环节 就会变得异常困难 在实现的过程中可能会出现各种各 样的状况 需要在现场分析解决 在最任何事情的时候都必须认真细致 有时一个小 小的环节出现问题 都会导致结果出现巨大的差异 在最任何是的过程中遇到困难都 是正常的 我们需要做的就是去面对它 通过自己的分析理解 最终找到解决方法 克服困难 7 附件 实验程序附件 实验程序 微机控制课程设计 实 验 名 基于 PID 算法的恒温控制系统设计 实验说明 通过 DS18B20 采集温度 反馈给系统 构成闭环调节系统 连接方式 见连接图 注 意 include include temp h 定义使用的 IO define GPIO DIG P0 defineGPIO PLACE P1 sbit PWM P2 0 定义全局变量 unsigned char code DIG PLACE 8 0 xfe 0 xfd 0 xfb 0 xf7 0 xef 0 xdf 0 xbf 0 x7f 位选控制 查表的方法控制 unsigned char code DIG CODE 17 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f 0 x77 0 x7c 0 x39 0 x5e 0 x79 0 x71 0 1 2 3 4 5 6 7 8 9 A b C d E F 的显示码 unsigned char DisplayData 8 unsigned char timer1 unsigned int count 0 用来存放要显示的 8 位数的值 定义 PID 参数 float uk uk1 uk2 float ek ek1 ek2 float x float t Auk 8 float Kp Ki Kd 声明全局函数 float LcdDisplay int void DigDisplay void Time1Config float AD init void void PID init void void DA init void void delay unsigned int j m unsigned int d 函 数 名 main 函数功能 主函数 输 入 无 输 出 无 main int m m Auk 10 Time1Config Ds18b20Init uk 0 uk1 0 uk2 0 ek 0 ek1 0 ek2 0 x 40 Kp 2 83 Ki 0 59 Kd 5 41 while 1 AD init PID init DA init LcdDisplay Ds18b20ReadTemp delay 9 float AD init float temp temp LcdDisplay Ds18b20ReadTemp return temp void PID init t AD init ek x t Auk Kp ek ek1 if x 35 if Auk 5 count count 5 if Auk100 PWM 周期为 100 0 5ms timer1 0 if timer1 count 改变 30 这个值可以改变直流电机的速度 PWM 1 else PWM 0 函 数 名 LcdDisplay 函数功能 LCD 显示读取到的温度 输 入 v 输 出 无 void delay for j 0 j 1000 j for m 0 m 100 m float LcdDisplay int temp lcd 显示 float tp if temp 0 当温度值为负数 DisplayData 0 0 x40 因为读取的温度是实际温度的补码 所以减 1 再取反求出原码 11 temp temp 1 temp temp tp temp temp tp 0 0625 100 0 5 留两个小数点就 100 0 5 是四舍五入 因为 C 语言浮点数转换为整型的时候 把小数点 后面的数自动去掉 不管是否大于 0 5 而 0 5 之后大于 0 5 的就是进 1 了 小 于 0 5 的就 算由 5 还是在小数点后面 else DisplayData 0 0 x00 tp temp 因为数据处理有小数点所以将温度赋给一个浮点型变量 如果温度是正的那么 那么正数的原码就是补码它本身 temp tp 0 0625 100 0 5 留两个小数点就 100 0 5 是四舍五入 因为 C 语言浮点数转换为整型的时候 把小数点 后面的数自动去掉 不管是否大于 0 5 而 0 5 之后大于 0 5 的就是进 1 了 小 于 0 5 的就 算加上 0 5 还是在小数点后面 DisplayData 1 DIG CODE temp 10000 DisplayData 2 DIG CODE temp 10000 1000 DisplayData 3 DIG CODE temp 1000 100 0 x80 DisplayData 4 DIG CODE temp 100 10 DisplayData 5 DIG CODE temp 10 DigDisplay return temp 扫描显示 函 数 名 DigDisplay 函数功能 使用数码管显示 输 入 无 输 出 无 void DigDisplay unsigned char i unsigned int j 12 for i 0 i0 y for x 110 x 0 x 函 数 名 Ds18b20Init 函数功能 初始化 输 入 无 输 出 初始化成功返回 1 失败返回 0 uchar Ds18b20Init uchar i DSPORT 0 将总线拉低 480us 960us i 70 while i 延时 642us DSPORT 1 然后拉高总线 如果 DS18B20 做出反应会将在 15us 60us 后 总线拉低 i 0 while DSPORT 等待 DS18B20 拉低总线 Delay1ms 1 i if i 5 等待 5MS return 0 初始化失败 14 return 1 初始化成功 函 数 名 Ds18b20WriteByte 函数功能 向 18B20 写入一个字节 输 入 com 输 出 无 void Ds18b20WriteByte uchar dat uint i j for j 0 j 1 函 数 名 Ds18b20ReadByte 函数功能 读取一个字节 输 入 com 输 出 无 uchar Ds18b20ReadByte uchar byte bi uint i j 15 for j 8 j 0 j DSPORT 0 先将总线拉低 1us i DSPORT 1 然后释放总线 i i 延时 6us 等待数据稳定 bi DSPORT 读取数据 从最低位开始读取 将 byte 左移一位 然后与上右移 7 位后的 bi 注意移动之后移掉那位补 0 byte byt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版选修5 化学:1.2 有机化合物的结构特点 教学设计
- 新疆考公2025真题
- 2025医疗机构药品供应系统升级改造项目合同
- 第二单元《鉴赏“虚”“实”艺术传承革命精神》大单元教学设计-2024-2025学年统编版高中语文选择性必修中册
- 3.3 水资源(第2课时) 说课稿2023-2024学年人教版地理八年级上册
- 4.1化学式(第3课时化学式的相关计算)说课稿-2024-2025学年九年级化学科粤版(2024)上册
- 5. 波的干涉、衍射说课稿-2025-2026学年高中物理教科版选修3-4-教科版2004
- 第6节 程序的循环结构说课稿-2025-2026学年初中信息技术粤教版2013第二册-粤教版2013
- 2025深圳市标准购房合同样本
- 第5课 神奇的变化-制作形状补间动画教学设计-2025-2026学年小学信息技术(信息科技)第三册下粤教A版
- 某市化学品物流仓储交易中心项目可行性研究报告
- 电厂运输煤炭合同模板
- 城镇供水排水行业职业技能竞赛化学检验员(排水化验员)赛项理论考试题库(含答案)
- 2024年工业和信息化局安全生产培训工作方案策划方案
- 江苏省镇江市外国语学校2024-2025学年七年级上学期第一次月考数学试题(原卷版)
- 护理疑难病例讨论课件模板
- 同步课件4:改革开放和社会主义现代化建设的巨大成就
- DL-T-1878-2018燃煤电厂储煤场盘点导则
- 【顺丰控股财务报表探析探究14000字(论文)】
- 【农村电商发展探究文献综述与理论基础4500字】
- 地震逃生知识培训
评论
0/150
提交评论