用可控硅控制 200W 加热丝,对一铁块加热,用K型热电偶采集温度,采用 MAX6675 做温度转换,可 以到 0。25 度的精度,并且外围很简单,很容易与 CPU 对接,采用 SPI 通信,读取当前的温度值 2。 过零检测电路, 将交流信号全波整流后得到的波形去控制 NPN 管, 将信号整形后接到 CPU 外部中断脚, 为系统提供基准时间,所以 CPU 中断的频率是 100HZ 实验目标: 在100 度到 200 度内可对任意设定的温度恒温,精度先做到+/-1 度吧 基本的控制实现方法: 因为是对加热的铁块温度进行控制,属于滞后效应系统,所以采样周期先定为 5 秒(这里指的是 PID 计算 的周期, 注意我的温度采样是时时的)所以 CPU 外部中断次数为 500 次, , 对应的 PID 计算结果输出为 0~500, 就是说把这 5 秒钟划分为 500 等份,根据计算的结果来决定在这 5 秒钟内应该加热多少等份 软件: 采用PID 控制方法,我先采用位置式输出方式,公式原型:u(t) = kp * e(t) + ki * [e(1) + e(2) + ....+ e(t)] + kd * [e(t) - e(t-1)],这里先做基本的 PID 算法,达到控制目标后 再来优化算法提高恒温精度,考虑到实验温度过高实验时间会过长,所以我先定目标控制温度为 110 度, 等控制好了再看其他温度会达到多少精度,为了提高加热速度提前 20 度开始 PID 控温 下面是调节参数的过程及数据: 参照网上一些方法,先确定 Kp,即令 Ki,Kd=0,只用比例调节,得到一个稳定的越接近控制目标的震荡 参数,然后根据这个 Kp 和震荡周期来计算 Ti,Td, 第1次:Kp=2.5,测试数据如下见图片:Y 坐标为温度值,放大了 10 倍,X 坐标为时间每 5 秒一个点, 1 第2次:Kp=5 1 第3次:Kp=8。5,这次的测试时间比较长,因为比较接近稳定震荡了,图片如下: 1 第4次:Kp=9,从图片已经基本稳定,下次再测试一下 9.3 这个值 1 第5次实验结果,Kp=9.3,从图上分析,震荡幅度稍比 9 的大点,但是上下幅度比较均匀,所以先确定 Kp 为9~9.3 之间 1 现在整理了一下 Kp=9 和Kp=9.3 的震荡周期,图片分析如下 1 从数据看震荡周期基本都是 48~43