图4-8降温控制模块
4.8升温电路
MOC3061系列光电双向可控硅驱动器是一种新型的光电耦合器件,它可用直流低电压、小电流来控制交流高电压、大电流。单片机引脚P3.4接与非门到红外发光二极管阴极,当P3.4为高电平时红外发光二极管导通发射红外光,光控双向可控硅触发导通,进而控制电阻丝加热。图中R16为限流电阻,使LED工作在所需电流内,R17是双向可控硅的门极电阻,当可控硅灵敏度较高时,门极阻抗也很高,并上R17可提高抗干扰能力,R19是触发功率双向可控硅的限流电阻,另外R18和C12电容组成浪涌吸收电路,防止浪涌电压损坏双向可控硅。升温控制模块如图4-9所示。
图4-9 升温控制模块
4.9 部分PCB设计及布线规则
2005年年底,Protel软件的原厂商 Altium公 司推出了Protel系列的最新高端版本Altium Designer 6.0。 Altium Designer 6.0,它是完全一体化电子产品开发系统的一个新版本,也是业界第一款也是唯一一种完整的板级设计解决方案。Altium Designer 是业界首例将设计流程、集成化 PCB 设计、可编程器件(如 FPGA)设计和基于处理器设计的嵌入式软件开发功能整合在一起的产品,一种同时进行PCB和FPGA设计以及嵌入式设计的解决方案,具有将设计方案从概念转变为最终成品所需的全部功能。
本设计采用PCB双层板对温控系统的电路设计,其布线规则如下:
(1) 按电路模块进行布局,实现同一功能的相关电路称为一个模块,电路模块中的元件应采用就近集中原则,同时数字电路和模拟电路分开。
(2)螺钉等安装孔周围3.5mm(对于M2.5)、4mm(对于M3)内不得贴装元器件。 卧装电阻、电感(插件)、电解电容等元件的下方避免布过孔,以免波峰焊后过孔与元件壳体短路。元器件的外侧距板边的距离为5mm, 贴装元件焊盘的外侧与相邻插装元件的外侧距离大于2mm,贴片焊盘上不能有通孔,以免焊膏流失造成元件虚焊。重要信号线不准从插座脚间穿过,贴片单边对齐,字符方向一致,封装方向一致。
(3)画定布线区域距PCB板边≤1mm的区域内,以及安装孔周围1mm内,禁止布线。电源线尽可能的宽,不应低于18mil,本设计采用20mil。信号线宽不应低于12mil,本设计采用15mil,信号线之间应尽可能的平行走线,顶层与底层信号线应垂直走线,以便减少信号干扰。CPU入出线不应低于10mil(或8mil);线间距不低于10mil,正常过孔不低于30mil。
(4)注意电源线与地线应尽可能呈放射状,以及信号线不能出现回环走线。 整体PCB设计图如图4-8所示:
图4-8 整体温控系统PCB设计
4.10 数字PID算法
PID调节的一般步骤: (1)确定比例增益P:确定比例增益P时,首先去掉PID的积分项和微分项,一般是令Ti=0、Td=0(具体见PID的参数设定说明),使PID为纯比例调节。输入设定为系统允许的最大值的60%~70%,由0逐渐加大比例增益P,直至系统出现振荡;再反过来,从此时的比例增益P逐渐减小,直至系统振荡消失,记录此时的比例增益P,设定PID的比例增益P为当前值的60%~70%。比例增益P调试完成。
(2)确定积分时间常数Ti
比例增益P确定后,设定一个较大的积分时间常数Ti的初值,然后逐渐减小Ti,直至系统出现振荡,之后在反过来,逐渐加大Ti,直至系统振荡消失。记录此时的Ti,设定PID的积分时间常数Ti为当前值的150%~180%。积分时间常数Ti调试完成。
(3)确定积分时间常数Td
积分时间常数Td一般不用设定,为0即可。若要设定,与确定P和Ti的方法相同,取不振荡时的30%。
(4)系统空载、带载联调,再对PID参数进行微调,直至满足要求。
温控系统采用数字PID算法,并由软件实现,所谓PID控制就是按设定值与测量值之间偏差的比例、偏差的积累和偏差变化的趋势进行控制。它根据采样
时刻的偏差值计算控制量。因此PID控制律的实现,必须用数值逼近法。当采样周期相当短时,可以用求和代替积分,用差商代替微分,即做如下近似变换:
t?kT?e(t)dt?T?e(jT)?T?e(j)0j?0j?0tkk (4-1)
de(t)e(kT)?e[(k?1)T]e(k)?e(k?1)??dtTT式中,k为采样序号,k=l,2,3,??;T为采样周期。显然,上述离散化过程中,采样时间T必须足够短,才能保证有足够的精度。为了书写方便,将e(kT)简化表示成e(k)等,即省去T。可以得到离散的PID表达式为:
u(k)?Kpe(k)?KI?e(j)?KD[e(k)?e(k?1)] (4-2)
j?0k式中,k为采样序号,k=1,2,3,??;u(k)为第k次采样时刻的计算机输出值;e(k)为第k次采样时刻输入的偏差值;e(k-1)为第(k-1)次采样时刻输入的偏差值;KI为积分系数;KD为积分系数。 本系统采用增量式PID控制算法,是指数字控制器输出只是控制量的增量,该算法编程简单,数据可以递推使用,占用存储空间少,运算快。根据递推原理可得:
u(k?1)?Kpe(k?1)?kI?e(j)?KD[e(k?1)?e(k?2)] (4-3)
j?0k用式(4-2)减去式(4-3),可得增量式PID控制算法如下:
?u(k)?Kp[e(k)?e(k?1)]?KIe(k)?KD[e(k)?2e(k?1)?e(k?2)] (4-5)
第 5 章 系统软件设计
5.1 设计思路
本部分详细介绍基于STC89C52单片机的恒温箱温度控制系统的软件设计。根据系统功能,可以将系统设计分为若干个子程序进行设计,如温度采集子程序,数据处理子程序、显示子程序、PID控制子程序。采用Keil uVision3集成编译环境和C语言来进行系统软件的设计。本章从设计思路、软件系统框图出发,先介绍整体的思路,再逐一分析各模块程序算法的实现,最终编写出满足任务需求的程序,流程图如图5-1所示。
开 始 系统各模块初始化 调取温度子程序 显示当前温度 调取键盘子程序
图5-1 控制系统程序流程图
5.2 子程序流程图及程序内容
5.2.1 DS18B20初始化子程序流程图
DS18B20在初始化序列期间,总线控制器拉低总线并保持480us以发出(TX)一个复位脉冲,然后释放总线,进入接收状态(RX)。单总线由5K上拉电阻拉到高电平。当DS18B20探测到I/O引脚上的上升沿后,等待15~60us,然后发出一个由60~240us低电平信号构成的存在脉冲。完成对DS18B20的初始化操作,在每次测温前必须对其进行初始化,否则系统无法正常运行。所以这个步骤很重要,DS18B20初始化子程序流程如图5-2所示。
拉低总线 低电平复位脉冲持续480~960us 释放总线 DS18B20响应? N
图5-2 DS18B20初始化子程序流程图
5.2.2 DS18B20写字节子程序
DS18B20写字节由两种写时序组成:写1时序和写0时序。总线控制器通过写1时序写逻辑1到DS18B20,写0时序写逻辑0到DS18B20。所有写时序必须最少持续60us,包括两个写周期之间至少1us的恢复时间。当总线控制器把数据线从逻辑高电平拉到低电平的时候,写时序开始总线控制器要生产一个写时序,必须把数据线拉到低电平然后释放,在写时序开始后的15us释放总线。当总线被释放的时候,5K的上拉电阻将拉高总线。总控制器要生成一个写0时序,必须把数据线拉到低电平并持续保持(至少60us)。总线控制器初始化写时序后,DS18B20在一个15us到60us的时间内对I/O线采样。如果线上是高电平,就是写1。如果线上是低电平,就是写0,DS18B20写字节程序流程图如图5-3所示。
拉低总线 延时15~60us 写入数据 释放总线 1字节? 写完N Y 返回