在实际应用中,对被控对象的物理参数(温度、湿度、位移、电流及电压等)在一定的范围内进行控制,是
单片机的典型应用之一。很多宏观要求控制的场合,其微观控制过程,仍可归结为是对某些参数变化范围的控制。如传统的三相异步电机从启动到正常运行,电流、电压和温度的变化;抽水塔水位的变化;机床刀具的行程变化及数字电表的自动量程变换等。这些控制过程显著的特点是:被控物理量都是一个变化范围,而非某一个的“点”。对物理量变化范围进行有效控制的方法很多,本文重点介绍利用C8051F000单片机片内8路高性能的12位ADC数据采集系统和可编程窗口检测器,实现对多路参数变化范围控制的硬件组成和软件设计方法。
1 C8051FXXX系列单片机介绍
2 硬件电路组成及原理
硬件电路如图1所示,分成数据采集、按键控制和显示输出三大部分。C8051FXXX系列的8路模拟量采集通道,通过选择不同功能的
传感器或电量转换装置(如电流、
电压互感器、集成温度传感器等),完成对被测目标系统多路参数的数据采集。工作时,系统不断将各通道采集来的数据与用户事先设定的上/下限极值进行比较;系统执行机构根据比较结果,确定是否越限而作出相应的具体操作。系统显示部分为5位LED显示,低4位用来显示用户所选定通道的模拟信号大小或上/下限极值设置 数据,位LED4为通道数字(0~7)显示位。 P0.0~P0.7为各通道越限处理输出,分别控制相应的执行机构。
2.1 按键控制功能
按键控制部分是整个系统复杂、能体现设计思想的一部分。为了方便地选择通道及显示设置数据,以尽量少的按键完成尽可能多的功能,实现较好的人机界面和软、硬件资源的有机结合,设置了选择通道的“切换”键S1、进行ADC窗口检测器上/下限极值设定的“设置”键S5、改变LED显示数据的“+”、 “-”键S3、S4,并要求每按使显示值加(减)1。如果连续按键超过一定时间(如2s),则显示值将很快地递增或递减。用户设置完毕,按下“存储” 键S2,可将所设数据保存在非易失性数据
存储器Flash中,避免由于断电而需重新设置数据的麻烦。通过软件设计,完成数据的自我备份与保护,不需要另置备用电池,简化了硬件结构。
2.2 ADC的工作方式及窗口检测器
C8051F000片内ADC子系统内除集成了1个多通道模拟输入选择器(AMUX)、可编程增益放大器(PGA)和1个100Ksps、12位分辨率的逐次逼近型ADC外,还集成了跟踪保持电路和可编程窗口检测器。它们完全由CIP-51通过特殊功能寄存器控制。
① ADC0CN寄存器。控制转换启动方式和结果数据存放方式,设置ADC转换结束和窗口检测器中断标志等。A/D转换允许用软件事件、硬件信号触发转换或进行连续转换。每次转换完成后产生一个中断,或者用软件查询来判断转换是否结束,完成后数据字被锁存在指定的寄存器中。
② AMXOSL、AMXOCF寄存器。ADC通道选择。当AMXOCF=00H时,AMXOSL的00H~07H分别表示选择AIN0~AIN7八个模拟输入通道。
③ ADC0GTH ADC0GTL寄存器。该两个存储单元为ADC可编程窗口检测器,为供用户设定上限的12位数据寄存器。ADC0GTH为高四位,ADC0GTL为低八位。
④ ADC0LTH ADC0LTL寄存器。ADC可编程窗口检测器,为供用户设定下限的12位数据寄存器。
3 软件设计
为便于升级和维护,软件设计采用积木式模块化处理,各功能模块既相互联系,又自成一体。其基本设计思想是:利用定时/计数器T3的溢出,定时地启动 ADC转换和窗口比较器中断。通过中断处理,将相应通道的12位转换数据与由用户设定的上/下限极值作为越限条件进行比较,产生新的中断输出,驱使系统执行机构进行相应的调整,从而达到数据被控制在某一范围内的目的。
主程序由初始化、显示、定时比较及按键处理等软件功能模块组成,图2为主程序流程框图。
结语
自2000年美国Cygnal公司推出C8051FXXX系列单片机以来,强大的内部功能和丰富的片内资源,使之能用简单的硬件结构实现多通道数据范围的检测。本文设计的控制系统,只要配置合适的
电量传感器,就可方便地用于各类电力变电系统对三相电流、电压等进行范围控制。