PID 控温请教
时间:12-13
整理:3721RD
点击:
用单片机PWM控制半导体制冷片 对激光器进行控温, 使激光器的温度控制在23摄氏度,波动不要超过1.5摄氏度。
根据网上看到的资料选择增量式PID,
有两个不明白的地方
1:
increment= KP*(error0-error1)
+ KI* error0
+ KD*(error0-2*error1+error2)
看到两个版本的代码,一个是直接用这个量控制PWM
control_out = increment;
另外一个版本是把 每次计算的increment 累加输出 控制PWM
control_out += increment
我个人觉得应该是第一个,但不明白原理
2:
这个PID计算出来的输出量和 PWM的占空比怎么关联起来?
多谢指教
根据网上看到的资料选择增量式PID,
有两个不明白的地方
1:
increment= KP*(error0-error1)
+ KI* error0
+ KD*(error0-2*error1+error2)
看到两个版本的代码,一个是直接用这个量控制PWM
control_out = increment;
另外一个版本是把 每次计算的increment 累加输出 控制PWM
control_out += increment
我个人觉得应该是第一个,但不明白原理
2:
这个PID计算出来的输出量和 PWM的占空比怎么关联起来?
多谢指教
我怎么感觉是第二个,看给定是什么吧
百度了一下半导体制冷片的原理,制冷片吸热与放热与电流强度成正比,这样的话,应该是前者,考虑极端情况,温度恒定在23℃,不需要吸热也不需要放热,这样每次控制量都是0,而不是上一次的值。控制量应该是电流强度相关的值,比如PWM调制的占空比之类,这个应该不是线性的,而且PWM频率变化对电流值也有一定的影响。
都行,就是响应带宽不一样。
多谢你给我提供了一个思路,实际使用时只用半导体制冷片吸热,因为激光器一直在发热,考虑极端情况,温度恒定在了23°,此时PWM应该输出一个电流,使得TEC吸热量= 激光器发热量,所以我觉得应该是 后面累加的那个 不知道这样想对不对?
report说的有道理,两种都可能将温度稳定下来。前者相当于反馈控制,后者相当于前馈加反馈控制。后者的前馈量相当于抵消激光器发热那部分电流控制量,控制速度可能会更快,可以在代码里适当标定一些前馈量。
是啊。
有时候PI就够了,甚至P就行。不一定PID。
嗯,温度变化一般比较缓慢,可以不用D。Kp足够大的话,I也可以不用,不过最好留着,消除静差方便。
这种东西纯模拟做多好。
2.满量程映射,或者根据区间分段调整。
@report 你什么时候准备做CCD啊,真要做的话 我想参与 :)
正在做啊。
正在调试。
1。你贴的公式不全,难猜测。PID离散化结构有级联形式和非级联的,不知道你用的那种。
但是温度控制,温度变化不会很快,建议PI控制就行了。加个D调不好还容易振荡。
2。PID输出要归一化的。给PID的参考量也要归一化。比如说归一化之后再乘以PWN总周期就是输出宽度。