|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 岁月如歌21 于 2023-8-16 10:20 编辑
) j# Z9 ]* m' ?) R' d& V3 ?1 z* `9 H$ ^' U
PID 算法温度控制
6 P) r1 i$ t7 K8 dUSB-CDC虚拟串口/就是串口,6 v0 c8 P4 [) C9 Y5 y2 D
【D-/P3.0, D+/P3.1】直接接电脑返回数据
# r) x6 q3 p5 W Q7 u4 \; G9 H2 E* Q. h9 j: y0 t7 Y" I
- G+ m- \* x/ \8 C: _! h: K
STC8H8K64U-P1.3测温P1.0加热-PID温控-USB-CDC返回
5 R; U: Z! g0 n% o& D) K# A3 e' I) Z/************* 功能说明 **************
$ _: l1 L+ } R, r e6 _8 Z本程序演示使用STC8H8K64U的P1.3做12位ADC输入测量温度, 经过PID处理后,从P1.0输出PWM控制MOSFET控制加热,达到恒温目的. R3 Q& q1 v- j. M3 ?& d
使用STC-ISP的串口助手调试, 可以使用STC-ISP里的串口绘图观察曲线 或 7段数码管观察温度.
8 O# M- y% G) k程序默认串口绘图观察5条曲线:
5 D/ X1 h4 L, F* m7 ~( S; x- k1、目标温度(单位度)
* j7 q7 \) m7 p0 A9 m2、当前温度(单位度)6 D- X8 t/ q8 C8 d- j2 I
3、垂直刻度150作为相对误差的0点0 z& V& r9 w$ ]% d2 D2 P n
4、当前温度相对目标温度的误差,误差值单位为0.1度,以150刻度为0点,比如140表示当前温度比目标温度低-1.0度,160表示当前温度比目标温度高1.0度6 c4 W% [2 E8 W' N" {9 T
5、输出PWM的值
7 j6 m9 w ], s" K" m$ u5 ~! A% ^5 t+ z! B* B/ Z
PID整定就是根据具体的项目中的温升速度、散热速度,调整PID采样周期、比例增益、积分增益、微分增益、积分上下限
/ M7 @9 j. h" |" J# ]* TPID温控可以只用PI(微分增益设置为0)即可达到稳定,本利测试时微分增益为0( O/ U; V0 P& D
PID整定是一件繁琐的事,要有耐心,并且要深入理解PID的行为表现
9 J) x) k( R8 E1 n特别提醒:想要升温快,则就会有过冲,升温越快过冲越大- S/ G0 D" d$ ?7 H4 g @8 y$ O1 N
; i, Z% c, [1 ^串口发送单字符命令:6 Z! _+ p: C5 z1 B9 z- t
b或B: 开启PID* \" a; I8 S# D! g
s或S: 停止PID.
( Z2 Q6 s C/ ^$ L0: 不打印信息.
2 o5 Q Y" d3 Q3 W! o( f0 Y' X& \1: 打印绘图曲线。
& `, {5 K5 f) G( v, u2: 打印7段数码管显示温度。
! y% J5 h4 a- K, ~7 H3 Z. m- @" t7 Q# S1 X- v: u
串口发送数字字符串设置采样时间、目标温度、pGain、iGain、dGain,数据之间逗号分隔:
: `+ Y8 x. H4 D3 ?% Q% B200,60,20,10,100,; F% D+ R2 h4 J
200: 采样时间, ms.7 @2 `9 t6 W7 A) x" b& k& p3 R% p
60: 目标温度, 单位度.
2 m& Q$ i* P6 p( w6 W20: pGain比例增益
1 |8 J8 N0 e# F. H3 }" R10: iGain积分增益, 1对应为0.0011 q. _7 Y$ e! v$ w1 H
100: dGain微分增益
0 z# C* l, P) k0 N' L! n: s( Z+ P: r4 F& M t
//==================================================================================
: {" `; C% W- @" |. o9 LNTC 热敏电阻温度计算公式:Rt = Ro *EXP(B/T-B/To),温度单位为绝对温度K,开尔文。
5 K) u; \: {7 q% l(1) Rt 是热敏电阻在温度T下的阻值。T是绝对温度。7 G ]9 J6 ^: O
x/ j L5 x% ]; `
(2) Ro是热敏电阻在To(25度)时的阻值。10K的热敏电阻25℃的值为10K(即Ro=10K)。To = (273.15+25)。# |3 y4 l& ^6 j& b2 M
(3) EXP(n) 是 e 的 n 次方。" G9 _+ w4 u' ?4 \" ]5 a
(4) B值是热敏电阻的材料系数。
! t; e7 u/ h( U
- Z' J1 C% [4 ~+ l9 U通过转换可以得到温度T与电阻Rt的关系:T=1/(1/To+ln(Rt/Ro)/B)4 Y) w: y, Q o- \/ j" H
对应的摄氏温度t=T-273.15。/ X+ {# T" F$ m+ I
- }# r( B8 M1 l电路连接: Vref -- 10K --ADC-- NTC -- GND, 12位ADC,计算出Rt/Ro的ADC值:" n2 C" y- }4 `; b$ J" J
ADC = 4096*Rt/(Rt+Ro), 则
3 k* @+ N4 @, M& ~# O* @, y# k. oRt/Ro = ADC/(4096-ADC), 从而
! X- r! D, ~, x4 l# N2 j9 i9 ?T = 1/(1/To+ln(ADC/(4096-ADC))/B)" n) j3 I+ t u: `9 s5 w( H
******************************************/! Z9 ]* F. `7 W+ q9 s
|
|