1 引言
众所周知, 要实现直流电机的远程调速控制及温度检测, 信号传输问题无疑是重要的, 传统的模拟控制法,不仅难以满足远程传输需求, 而且电路过于复杂。采用计算机技术、总线技术和通讯技术, 不仅可以使整个系统变得简单,而且有利于实现分布式集散控制,提高智能化控制水平。本文介绍一种以8051 系统为主控制器的远程恒温控制解决方案,它采用RS-485 总线解决直流电机PWM调速(制冷)、温度检测和PC 通讯等环节的信号传输问题。系统采用全数字设计方案, 结构简单。当该系统以单片机为主控制器单独工作时监控距离可以达到1.2km,如果与微机联网使用,则监控距离可以增加到2.4km。
2 控制原理及硬件结构
该系统硬件结构如图1 所示,它是一个8051 单片机控制系统,控制“对象”为直流电机,工作时根据现场温度调节直流电机转速, 直流电机转速影响制冷系统制冷量,从而达到温度自动调节目的。温度检测采用DB18B20数字温度传感器,直流电机采用PWM 调速。直流电机和温度传感器通过RS-485 总线与单片机系统实现信息交换,单片机系统通过RS-485 总线经USB 接口与PC 实现信息交换, 从而达到远程监控目的。
单片机系统是以8051 为核心的交互式测控系统,系统所有接口电路地址及数据总线由74LS373 和74LS138提供。单片机系统任务包括以下几个方面:
第一, 通过RS - 4 8 5 总线向直流电机驱动器输出PWM 调速信号;第二,通过RS-485 总线对数字温度传感器DB18B20写入初始化命令;第三,温度传感器所检测的现场温度经RS-485 总线反馈给单片机,并据此调节PWM 信号输出;第四, 实时显示现场温度;第五, 通过人机接口设置给定温度、电机调速范围等参数;第六,通过RS-485 总线向PC 机反馈温度等信息;第七,接受PC 系统控制指令,根据控制指令完成相应的处理。
下面对图1 所示系统各主要电路作如下说明:
图1 控制系统硬件结构
2.1 人机界面与人机系统
人机界面为矩阵式键盘和数码管,它以8279 为主要接口芯片(其它芯片如图所示),占用8051 一个外部中断源(INT0),人机系统的基本任务包括温度设置、电机调速范围设置、启停控制和温度显示等。根据图1 所示硬件,通过8051 外部中断(INT0)处理程序和定时器(T0)中断处理程序相互配合完成人机系统的基本功能。
2.2 输入输出(IO)通道
输入输出通道是以8255 为主要接口芯片的控制信号或反馈信息传输通道,PWM 调速信号输出、温度传感器初始化命令输出和现场温度读取等均通过8255 进行。
8255PA 口作为控制信号输出通道,PB 口作为反馈信息输入通道,PC 口作为输出/ 输入使能控制。三个端口每一位定义详情见后续软件部分。
为了实现IO 信号的远距离传输, 采用RS-4 8 5 总线,图2 所示是专门为此设计的电路原理图(仅画出其中一路,下同),其中,图2(a)是PWM 信号输出接口,由图可见, 计算机一侧和终端设备( 伺服驱动器) 各使用一片MAX488,计算机一侧MAX488 为发送器,终端设备一侧MAX488 为接收器。图中TLP-521 是计算机系统与外设进行电气隔离所必需的环节。图2(b)是专为温度传感器DS18B20 设计的远程传输接口,由于DS18B20 是一款单总线、可编程数字温度传感器,该传感器涉及初始化命令或参数写入和工作之中的温度读取问题, 因此,远程传输接口必须被设计成双向I O 口, 通过两片MAX485 和两片MAX488 实现信息的半双工传输要求,这里两片MAX488 用于终端MAX485(右侧)使能控制。
对DS18B20 的读写操作由8255PC 口相应的控制位作使能控制,即,当8051 执行对DS18B20 的写入操作时,首先使PC0=1、PC1=0,然后使数据从PA 口输出;当8051执行对DS18B20 的读操作时,首先使PC0=0、PC1=1,然后使数据从PB 口输入。
图2 远距离传输接口电路原理图
需要指出的是, 图2 所示的电路结构, 实现了信号的全硬件、远程、无条件传输目的,避免了终端使用微处理器,具有硬件软件简单、实时性好、系统扩展容易等特点。特别是温度检测通道,由于采用的是单总线温度传感器DS18B20,仅使用一条4 芯双绞线屏蔽电缆,就可以很好地满足在1.2km 范围之内的多点分布式温度测控需求。对于PWM 信号传输通道,可以根据实际需要选择屏蔽电缆,如4 台直流电机只需使用一条8 芯双绞线屏蔽电缆。对于控制对象数量较多时,可以通过扩展8255 芯片,解决IO 通道不足问题。2.3 PC 机通讯接口
8051 系统与PC 机通讯,采用“RS-485+USB”接口信息传输方案,如图1 所示。这里,用8051 串口线TxD、RxD 通过“TTL/RS-485 → RS-485/TTL → USB 接口”等环节,实现了8051 系统与PC 之间的远程通讯需求,从而扩大了控制范围。
在进行电路设计时,“T T L/ RS - 4 8 5 → RS - 4 8 5 /TTL”变换可以采用两片MAX488,并将其连接成全双工模式,限于篇幅这里不再画出;USB 接口选用PL2303,如图3 所示,直接将来自“RS-485/TTL”电路的TTL电平(TxD、RxD)变为USB 信号,优点是占用8051 资源少、编程简单。
图3 USB 通讯接口电路原理图
3 应用程序设计
应用程序包括8051 对目标系统(电机与温度检测)的监控程序和8051 与微机的通讯控制,现分别说明如下:
3.1 监控程序
该部分程序是应用软件的核心部分,包括一个主程序和两个中断处理程序。为了使整个程序结构清晰和易于功能扩展, 采用“存储管理”的编程思想, 对于程序中使用最频繁、实时性要求最高的变量定义在8051内部RAM,对于需要占用大量存贮空间或访问频度较低的变量, 尽可能放在外扩的数据存贮器上( 图1 未画出),对于信息处理过程所使用的临时变量,尽可能使用通用寄存。
监控程序必须具有温度设置、基于温度的PWM 调速和温度显示等基本功能,这实际上涉及的是人机交互处理和基于温度的PWM 信号处理。根据图1 所示电路结构和基本功能要求,可以认为,它是一个基于8051 中断源INT0 和T0 的中断处理系统, 即,需要设计两个中断处理程序INT0 和T0,其中,INT0 中断处理任务是按键识别与处理,完成温度设置、系统启停、显示切换等工作;T0 中断处理主要任务是调节直流电机转速, 它是根据传感器所测得温度与给定温度的比较情况,通过调整有关参数,使输出PWM 波形占空比发生变化达到调速目的,具体方法详见后述。主程序主要完成系统初始化和显示等任务, 包括以下几个方面:
(1) 监控程序使用的所有变量的定义及初始化;(2) 8279 和8255 初始化;(3) 8051 中断系统初始化;(4) DS18B20 初始化、温度读取、温度显示;(5) 控制变量的判断及处理。
这里, ( 4 ) - ( 5 ) 应该被设计成一个循环执行的程序结构。
3.2 通讯程序
通讯程序主要功能是实现8051 与PC 的数据交换。
8051 利用其串口线RxD 和TxD 实现与PC 的数据收发工作, 这些交换数据包括:
(1) 8051 向PC 发送的温度信息;(2) 8051 接收来自PC 的控制指令,这些控制指令通过8051 串口中断处理程序处理。
在PC 方面,需要编写基于PL2303 的USB 驱动程序和面向8051 的人机界面,限于篇幅在此不作细述。
4 PWM 导通率调整及温控软件算法
根据上面所述可以知道,调节8051 输出PWM 波占空比大小是实现直流调速的前提,而直流调速主电路使得受控于PWM 波的功率开关导通率发生变化,从而实现了直流电机的PWM 调速。现在假设功率开关一个通断周期时间为T _ timer , 在一个周期内的导通时间为t _ on ,则导通率
,因此, PWM 调速实际上就是用软件方法对变量t _ on 或T _ timer进行调节,而调节依据则是被测点的实际温度与设定温度的比较情况。下面首先介绍基于8051 定时中断的导通率调节方法,然后进一步介绍如何根据温度比较情况调节导通率。
在导通率公式中, T _ timer 所允许的最小值取决于功率开关元件的最高工作频率、直流电机调速范围和执行定时中断处理程序所需时间等因素,而T _ timer所允许的最大值则取决于直流电机电枢电流连续性和转速脉动量。
导通时间t _ on 由程序控制, 其值在0 ~ T _ timer之间变化。在进行导通率δ 调节的算法设计时, 既可以使T _ timer为常量, t _ on 为变量,也可以使T _ timer为变量, t _ on 为常量,或者使T _ timer 和t _ on 均为变量。实际上,由于T _ timer所允许的最小值和最大值分别受上述因素限制, 设计时在综合考虑上述因素后取常量,此时t _ on 则成为导通率d 调节的唯一手段了。
下面以工作于6MHz 的8051 为例,说明导通率δ调节及计算方法。
根据8051 定时计算公式,当定时器/ 计数器工作于“定时、方式1”时, 我们不难推导出定时中断周期为:
其中, c T 为8051 定时器/ 计数器在编程时的定时常数,如果功率开关元件的开关频率f Hz vt = 4000 ,则定时中断周期T _timer = 250ms ,此时= *11 c T 。
t _ on 的确定,可以采用软件延时方法实现,假设控制功率开关元件通断的驱动电路采用负逻辑驱动,cyc _ times为延时程序控制循环次数的一个参数,则定时中断处理程序进行一次通断操作的流程如图4(a )所示,此时t _ n = 4 * cyc _ times 。
图4 程序流程图
据此,可以推导出在开关频率f Hz vt = 4000 条件下,导通率
,其中cyc _ times = 1 ~ 62整数。
下面进一步讨论如何根据温度比较情况调节导通率的问题。众所周知,在控制论中一种所谓的“PID”调节算法被人们广泛使用,这种方法是建立在输出量的高精度检测和精确比较基础上的差值控制理论,由于算法繁杂往往计算工作量大, 对于低速CPU 往往应用受限。本文介绍的温度调节不采用PID 算法,它采用的是一种所谓的“直接比较”控制方法(称之为“DC”法),它是以一定的周期比较两个变量的大小关系(而非实际差值),来决定输出量调整方向(增加或减小或保持),而且当比较结果不等于零时, 对输出量的调整不是一次到位,而是逐次增加或减小(如固定“加1”或“减1”),从而极大地简化了控制算法。采用“DC”算法的温控处理程序流程图(一个基于8051T0 中断处理程序)如图4(b)所示,在该流程图中, T 和g T 分别为实际温度和给定温度,我们只要将T 和g T 进行简单的比较,就能够实现直流电机PWM 调速导通率δ的调整,算法如下:
当Tg - T > 0 g 时,将变量“cyc _ times ”加1(在还没有达到最大值时);当Tg - T < 0 g 时,将变量“cyc _ times ”减(在还没有达到最小值时);当T g- T = 0 g 时,保持变量“cyc _ times ”值不变显然, 根据上述导通率公式
:,只要变量cyc _ times 发生了变化,导通率d 必定也随之发生改变, 从而达到调速目的。
显而易见,上述调整方法并不是根据Tg - T 的实际差值(偏差)来计算应有的cyc _ times 调整量,而是仅仅比较两者的大小关系来决定cyc _ times 调整方向,而且每个T _ timer周期cyc _ times 调整量仅为1。由此可见,只要T T g - 有偏差, 特别是, 当偏差较大时, 往往需要经过多个T _ timer 周期之后才能消除这种偏差。