|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 岁月如歌21 于 2023-8-16 10:20 编辑
8 e! t5 c: x: t! B; w4 H5 P$ n
" l) `6 u. V' p/ [- J- bPID 算法温度控制4 u& v4 B" `3 ?# d
USB-CDC虚拟串口/就是串口,
# E- c1 T7 f) m6 }( k【D-/P3.0, D+/P3.1】直接接电脑返回数据0 |% b* v7 k. o% j
4 _5 j# A8 A, O' N0 L! J' L8 w
8 z& |8 `& h% a7 Q3 p W/ fSTC8H8K64U-P1.3测温P1.0加热-PID温控-USB-CDC返回
- E: k6 x/ W7 |" l0 {/************* 功能说明 **************
$ n2 D' B0 Q3 C/ d本程序演示使用STC8H8K64U的P1.3做12位ADC输入测量温度, 经过PID处理后,从P1.0输出PWM控制MOSFET控制加热,达到恒温目的.
; ]2 z8 v {9 Y8 u4 t5 ^使用STC-ISP的串口助手调试, 可以使用STC-ISP里的串口绘图观察曲线 或 7段数码管观察温度.' [/ k* Y7 }: i
程序默认串口绘图观察5条曲线:
! ~8 E( N7 w" U3 T( u5 Y4 d5 C1、目标温度(单位度)
9 ~1 O( M1 @, a' t4 u+ v% d! z2、当前温度(单位度). h5 u" {+ e) U; ]& `
3、垂直刻度150作为相对误差的0点* A% ]) R& u9 [. g% d7 w& F
4、当前温度相对目标温度的误差,误差值单位为0.1度,以150刻度为0点,比如140表示当前温度比目标温度低-1.0度,160表示当前温度比目标温度高1.0度' J: {* l1 ]' W
5、输出PWM的值
- j+ V; Q0 v6 R( j- _3 Z6 A) r1 k, n6 r
PID整定就是根据具体的项目中的温升速度、散热速度,调整PID采样周期、比例增益、积分增益、微分增益、积分上下限
( `1 {1 J! A, P! C$ D' tPID温控可以只用PI(微分增益设置为0)即可达到稳定,本利测试时微分增益为05 @' G! A- s4 H& x/ s" K0 Q2 X* w! l
PID整定是一件繁琐的事,要有耐心,并且要深入理解PID的行为表现
) n# }0 K, o, v) p" O/ k6 s! u特别提醒:想要升温快,则就会有过冲,升温越快过冲越大& `- \( n i& c
" y. v3 [+ x' F+ y
串口发送单字符命令:/ H7 P/ ]! B4 x# y% T" u& {
b或B: 开启PID
9 }+ }4 i( K# B- a2 K4 f) B8 ?/ js或S: 停止PID.3 z& S" c6 }3 c$ O; m
0: 不打印信息.7 q' o% L- g5 _4 g
1: 打印绘图曲线。$ z1 _' d$ J% R, ^, Q8 i' W% D
2: 打印7段数码管显示温度。% P) \, I, n) A u
9 O' U! B0 C& q2 ?; _: R" K串口发送数字字符串设置采样时间、目标温度、pGain、iGain、dGain,数据之间逗号分隔:' ~! e/ w1 Y; I
200,60,20,10,100,
; f9 t" b2 I3 X3 p) S9 ~0 B3 C200: 采样时间, ms.
/ f% J$ O$ r' Z8 f6 t60: 目标温度, 单位度.7 c& k2 t5 _0 n( m
20: pGain比例增益; @& p$ L' O0 ~3 G
10: iGain积分增益, 1对应为0.001
! Y+ S! x" }5 l% \- `100: dGain微分增益
4 N5 A; \3 _; s( R
8 K; x* A' b8 E! ?//==================================================================================
1 d6 ]! y, S, g3 v9 vNTC 热敏电阻温度计算公式:Rt = Ro *EXP(B/T-B/To),温度单位为绝对温度K,开尔文。+ {2 P5 F& k+ L0 ^& o* [5 ~
(1) Rt 是热敏电阻在温度T下的阻值。T是绝对温度。
3 _+ A8 k( Q" |' R8 q1 d3 D2 X8 |0 K: P: s3 [
(2) Ro是热敏电阻在To(25度)时的阻值。10K的热敏电阻25℃的值为10K(即Ro=10K)。To = (273.15+25)。2 p: D! W7 B. o. f9 m( ]; l
(3) EXP(n) 是 e 的 n 次方。
8 ^9 [8 }1 f2 ?0 }$ {7 m+ ~(4) B值是热敏电阻的材料系数。+ `3 }: J' T% A Q/ ^+ a
7 @7 a9 H+ u4 t, x% @! |8 j$ s
通过转换可以得到温度T与电阻Rt的关系:T=1/(1/To+ln(Rt/Ro)/B)
6 ]3 g! v1 w" T对应的摄氏温度t=T-273.15。
& ~3 O3 f# I$ o% N' ]7 x# D
- E" y, {7 _# j) S/ j6 d% r电路连接: Vref -- 10K --ADC-- NTC -- GND, 12位ADC,计算出Rt/Ro的ADC值:5 a2 X1 F( C; ?
ADC = 4096*Rt/(Rt+Ro), 则
7 |% g; X; }$ }" m a, KRt/Ro = ADC/(4096-ADC), 从而 o4 X" z+ j* `/ ~
T = 1/(1/To+ln(ADC/(4096-ADC))/B)
: D( Q& A( N: U" q! Q******************************************/
$ M" H1 P' t9 R- l |
|