找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2247|回复: 6
收起左侧

关于单片机PID温度控制程序的相关问题

[复制链接]
ID:546381 发表于 2021-4-27 18:49 | 显示全部楼层 |阅读模式
这是我学习单片机的一个小项目
附件包含:Proteus仿真和程序

我现在主要存在着几个问题:
参数调整该咋搞?

在程序中我使用的是增量式PID算法,通过控制out(值域是0-100)来控制高低电平的翻转
  1.     Pout = pp->Kp * dError1;        //输出P
  2.                 Iout = pp->Ki * pp->ERR0;        //输出I
  3.                 Dout = pp->Kd * dError2;        //输出D
复制代码
  1. D_Out = (unsigned int) (Pout + Iout + Dout + Out + 0.5);  //△Out=Kp*(Ek-Ek-1)+Kp*Ek+Kd*(Ek-2Ek-1+Ek-2)
复制代码
  1. Out = Out + D_Out;      //记录这次输出的值
复制代码

1)在偏差比较大时,为使尽快消除偏差,提高响应速度,同时为了避免系统响应出现超调,Kp 取大值,Ki 取零;在偏差比较小时,为继续减小偏差,并防止超调过大、产生振荡、稳定性变差,Kp 值要减小,Ki 取小值;在偏差很小时,为消除静差,克服超调,使系统尽快稳定,Kp 值继续减小,Ki 值不变或稍取大。
2)当偏差与偏差变化率同号时,被控量是朝偏离既定值方向变化。因此,当被控量接近定值时,反号的比例作用阻碍积分作用,避免积分超调及随之而来的振荡,有利于控制;而当被控量远未接近各定值并向定值变化时,则由于这两项反向,将会减慢控制过程。在偏差比较大时,偏差变化率与偏差异号时,Kp 值取零或负值,以加快控制的动态过程。
3)偏差变化率的大小表明偏差变化的速率,e(t)-e(t-1)越大,Kp 取值越小,Ki 取值越大,反之亦然。同时,要结合偏差大小来考虑。

建立对象参考模型?
参考了这篇文档  基于单片机的熏蒸温度微分先行控制器  赵爱玲, 张海峰, 侯君
%`J59)5L(%[(KXY}8_2OL_9.png

在开环状态下, 通过多次实验确定对象模型, 系统初始温度选择室温 20 ℃, 根据多次重复实验数据的变化规律, 选每 30 s 为 1 个采样时间间隔, 得到较为稳定的实验数据如表 1 所示 ”意思是,不加入算法调控,给加热器器件通电,记录他的温度值(比如说我放水里面,记录水温),然后根据这个画出图,这个就算是他的模型?


实验结果及数据这块,有一个PID算法调控的评测,温度调控的误差
CS{[V~UWB%}7PJJ]$~UUZPN.png
像这种实验数据我是要盯着显示模块(我是用LCD1602来显示实时温度值)一个个记下来,再画图吗?这个记录过程是手动记录?有没有办法自动记录呢?

附件里面有一个“LCD显示温度+串口接收温度”的实例程序,我是否可以用它来记录温度数据?
如果可以,那我把它移植到温度控制程序里面,是不是也可以实时记录了?

最后PID温度控制有一个误差值,这个误差值就是最后温度稳定(沿着一个值震荡)下来,这个震荡范围就是误差值?

差不多就这么多,还有啥漏提的希望大家集思广益。谢谢啦!

咨询.zip (729.66 KB, 下载次数: 14)
回复

使用道具 举报

ID:569384 发表于 2021-4-28 10:39 | 显示全部楼层
上b站找些pid的视频认真的看一看,要理解透彻
回复

使用道具 举报

ID:913577 发表于 2021-4-28 15:18 | 显示全部楼层
直接用matlab做不就行了
回复

使用道具 举报

ID:909296 发表于 2021-4-28 15:55 | 显示全部楼层
要做数据记录可以用一个sd卡模块,编一段程序,往sd卡里面写数据,然后到电脑上处理就好,这是最快捷的做法,比一直连接电脑这种我觉得方便多了,一般做数据记录都是用内存卡的。
回复

使用道具 举报

ID:546381 发表于 2021-4-29 10:25 | 显示全部楼层
mornbin 发表于 2021-4-28 15:18
直接用matlab做不就行了

我知道可以用matlab画图,但是我不知道咋记录数据啊,一个个收集(手记)也太蠢了吧。准备用串口记录来着
回复

使用道具 举报

ID:546381 发表于 2021-4-29 10:26 | 显示全部楼层
haokey 发表于 2021-4-28 10:39
上b站找些pid的视频认真的看一看,要理解透彻

PID的原理我大致上都摸清楚了,但是到具体应用就有点犯迷糊。
回复

使用道具 举报

ID:546381 发表于 2021-4-29 10:26 | 显示全部楼层
96578741251 发表于 2021-4-28 15:55
要做数据记录可以用一个sd卡模块,编一段程序,往sd卡里面写数据,然后到电脑上处理就好,这是最快捷的做法 ...

如果用sd卡的话,可能实现不了。没那个条件,不过谢谢你提供了一个思路
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表