8.2.3系统软件设计
8.2.3.1程序设计
系统启动后首先检查上电标志,以判断是“冷启动”(初次上电运行)还是“热启动”(由抗干扰措施引起的复位运行)。若是“冷启动”,则进行彻底的初始化操作,系统的状态全部无效;若是“热启动”,则对系统当前的状态进行修复并有选择地进行初始化,使指令指针跳回到正常的工作程序中去。系统每经过一个采样周期采集一次温度,计算温差根据温差进行分区决策,选择不同的控制算法,输出相应的控制量。
系统设有一个定时中断,其功能是为系统提供准确的时钟,对采样周期及可控硅导通时间进行计时,并给出采样及停止加热标志。
8.2.3.2软件抗干扰设计
本系统在软件抗干扰设计中主要采用了指令冗余和软件陷阱等措施。
指令冗余是在一些对程序流向起决定作用的指令之前插入两条NOP指令,以保证弹飞的指令迅速纳入正确控制轨道,此类指令有RET、LJMP、DJNZ、JB等。但是指令冗余使弹飞的程序安定下来也是有条件的,首先弹飞的程序必须落在程序区,其次必须执行到冗余指令。当弹飞的指令落到非程序区(如ROM未使用的空间)时,前一个条件不满足;当弹飞的指令没有碰到冗余指令之前就已经形成了一个死循环时,第二个条件也不满足。解决这些问题的方法分别是设立软件陷阱和使用微处理器监控系统。
软件陷阱是用一条引导指令强行将捕获的程序引向一个指定的地址,在那里有一段专门对程序出错进行处理的程序。本软件这段程序的入口标号为ERR,则软件陷阱为三条指令(NOP,NOP,LJMPERR)。它被安排在未使用的中断向量区和未使用的大片ROM区。
8.3校准源的设计
8.3.1校准源
8.3.1.1校准源的用途
大多数的测量仪表都需要检定和校准,而检定和校准是一个十分精细的专门测量过程。对某台未知性能的仪器进行测量并和一台具有已知性能的标准仪器进行比对,从中探测出其精确度的差异,以此来确定被测仪器是否合格,这一过程叫做检定。同时,通过调整尽量减少其精度误差,然后报告出其残留的差异,这一过程叫做校准。通过这种检定和校准过程,可以减少使用电子仪器进行测量时的不确定性,使测量工作有更大的把握。
校准的方法一般有两种。第一种为对比法,如在校准数字电压表时,电压源送出一个可调的稳定直流电压,标准仪器和待测仪器同时对此电压进行测量,通过比较两个仪器的测量结果,就可以依照标准仪器的数据对待测仪器进行校准。这种方法中标准仪器可以是传统的电位差计、分压箱,也可以是数字电压表。对电压信号源则不要求有高的精度,只要求它有足够的稳定度以保证测量需要就可以了。
第二种为直接校准法。本校准过程中直接采用校准源来对待测仪器进行校准。这里,校准源和第一种方法中的电压源类似,其区别在于校准源不仅应具有足够高的稳定性,而且还应具有足够高的输出精度。
当然,需要校准的仪器仪表种类很多,如电压、电流、温度湿度、流量、压力等等,几乎涉及各个领域,正因如此,才引发并促进了校准源的发展。
8.3.1.2校准源的基本构成
一个校准源的精度取决于机内的基准电压源性能的好坏,基准电压源一般由一个基准电压器件(如基准齐纳二极管等)和辅助电路(如恒温槽)构成。它要求基准电压稳定性好,电压温度系数小,噪声低,基准电压长期零漂要小。这种基准电压器件都要经过严格筛选。
目前已有了很多种类的集成精密基准电压源,如LM399,温度系数可达3ppm,有的甚至更高,这也促进了校准源的发展。
基准电压源的数值虽然精确稳定,但它只是一个固定值,为了做成校准源,就要设法以基准电压为基础,产生可以人为设定和控制的可交精确直流电压或电流。
通常,校准源的输出电流和电压值都比较大,为了得到高的输出电压和大电流,就需要一个输出级电路,把数模变换器产生的输出电压变换成仪器最后输出的电压或电流。一般的输出级电路都是一个能输出高电压或大电流的反馈放大器。
校准源有直流校准源和交流校准源。
下面以Fluke公司的335D精密直流校准源为例,对传统直流校准源的构成作一说明。
主基准电压单元产生稳定度高的基准电压ER。校准源的输出电压采用串联稳压电源的原理获得。误差放大器和串联调整电路一起构成了一个高增益、宽输出动态范围的直流放大器。由于正输出端与正采样端相连,负输出端与负采样端相连,构成了一个典型的电压并联负反馈运算放大电路。所以E0=R采样串/R量程(ER-E误差)
式中,ER——基准单元得主基准电压;
E误差——运算放大器虚零点的误差电压。
由于直流放大器的增益足够高,所以放大器虚零点的电压E误差非常小,可以忽略。这样就得到了校准源输出电压的基本公式:
E0=R采样串/R量程ER
既然ER是精确稳定的单点主基准电压,那么只要适当改变R采样串和R量程,即可得到任意需要的输出电压E0。通常把R量程按十进制的数值比例(十位)设几档,就可以得到按十进制变化的几个输出量程,而在同一量程中改变R采样串即可得到任意数值的输出电压。
8.3.2SFX2000型双通道直流校准源
8.3.2.1SFX2000型双通道直流校准源的主要技术指标
SFX2000型双通道直流校准源采用8751单片机,配以可编程接口芯片及高精度运算放大器组成智能型校准源,采用轻触键盘结构,数字显示的双通道直流电压/电流输出,用以校准四位半及以下的数字多用表等,其输出级可以提供较大的输出功率,以作为高稳定度和高精度的直流电压源和电流源使用。
SFX2000型双通道直流校准源除具有上述特点外,还有如下功能。
(1)超载报替:当仪器置入值超过满量程值时,该机自动锁定为满量程值,当输出负荷超过本机规定限度时,将启动报警电路,由面板上的发光指示灯及机内的蜂鸣器进行报警,并同时将输出置“0”,以防止仪器被损坏。
(2)误差校正输入:本机原则上满足满量程0.05%的输出精度。为了保证更高精度的输出要求,可以通过面板上的误差校正输入键,把机器本身的误差预置进去,以提高输出精度。
(3)避免大信号冲击:以往的开关转换式校准源,从一个量程转换到另一个量程时若不把输出预先置零,将会引起较大的输出冲击,而本校准源在设计过程中有效地解决了这一缺点。当输出从一个量程转换到另一个量程时,输出自动置零,操作者可根据需要手动置入输出值。
另外,本机设置10个输出置入键和一个加速键,分别采用±1、±10、±100、±1000和±10000的方式。当需要快速置入时可同时按下加速键,提高置入速度5倍。在印刷电路板设计中采用大面积地线屏蔽措施,减少了各种信号的干扰及分布电容和引线电阻带来的不良后果。
8.3.2.2SFX2000型校准源模拟部分电路
(1)提高分辨率的方法
要达到0.05%的精度输出,单靠DAC转换达到最小步进值1μV需要20位DAC,这将使成本大大增加,不利于形成批量生产。为了解决这一矛盾,该机采用12位DAC与基准电压源组合,通过摸拟加法器及分压电路,完成了从1μV~10V的输出。
单片机把通过键盘置入的输出值以及误差修正值进行代数运算,如果0V8.0V时,则同时吸合J1及J2,由加法器进行运算输出。
Vref采用带内部稳定器的单片齐纳型精密基准电压源,其有源电路使得动态阻抗为0.5mΩ左右,在0.5mA~10mA的工作电流范围内,保证基准电压和温度系数基本不变。
封装采用热保护罩,使加热器功耗最小,温度系数可达3ppm/℃。
综上所述,尽管使用12位DAC(4096个字),也可以实现12000个字的分辨率,再通过分压电路衰减1倍、10倍、100倍和1000倍,即可得到1μV~10V的输出值。量程切换采用银接点继电器,避免了与上一级的电阻串扰,其接点电阻仅为50mΩ,这对下一级运放的高输入阻抗来说是极其微小的,可以不予考虑。由于分压电阻的温度系数仅为3ppm/℃,所以由其引起的误差仅为:
ε=3×10-6×10=3×10-5
(2)输出级电路
为完成1μV~10V的电压及100nA~100mA的电流输出,该机选用了两个输出级:
低量程由高精度运算放大器直接输出。高量程由大功率集成运放输出,特殊的误差补偿措施有效地解决了输出漂移问题。
电路基于一般的集成运放连接方式,采用了两级运放组成的回路反馈,以提高输出精度。A1用作输入级,以提高输出电路的输入阻抗,完成与输入级的良好匹配。A2是主输出放大器,它可以在±15V电源下输出峰值电源达3.5A,而静态电流却很低。这能保证输出电路最小的功率损耗,使温度变化不至影响整机性能。A3用于误差补偿,其性能参数与A2相同,经过仪器筛选使之与A2良好配对。这样,当A2由于温度的变化而发生漂移时,共用散热器的A3也同时进行漂移。由于它们性能相差不大,使得A2与A3的漂移也大体相同,这样A2的输出漂移基本得以补偿。实践证明,这种补偿效果比较理想,可以满足设计要求。
8.3.2.3SFX2000型校准源控制部分电路
本机的所有功能设置及数据置入均可通过键盘或IEEE488接口连接器输入。当从键盘输入时,键盘及显示接口电路8279向单片机8751申请中断,单片机响应中断后,根据键值转向相应的服务子程序,然后通过I/O口启动相应的继电器或是把运算数据通过光电耦合器送往左右通道的模拟部分进行数据输出。如果输出过载,过载检测电路将引起单片机优先中断。中断处理的结果是使输出置为零,并接通报警电路进行声光报警。如果负载恢复正常,那么输出电路也将重新恢复正常输出状态。
在数据置入过程中,有时需要进行连续置入,即按住某一个键不放,数据从当前值逐渐加“1”,直至所需要的数值。而键盘及显示接口芯片8279无论工作在哪一种方式也没有这一功能,只有在键按下或放开时,8279中断申请线IRQ才会由低向高跳变,这一跳变通过反相后接8751INT0的中断输入端,单片机响应中断后IRQ并不是立即由高变低,只有当8751执行完中断处理程序,用RETI指令返回时才复位IRQ,这时8279可以再次申请中断。但是如果先前按下的键没有放开,8279就不能马上申请中断,必须把该键松开然后再按一次才会申请中断。也就是说,每按一次键数据只能变化一次,达不到连续置入的目的。
为此,该机通过单片机8751的P3.4引脚控制译码器74LS138的工作状态,以实现连续置入的目的。
当控制端G2(G2A+G2B)为逻辑“1”时,138的所有输出端全为“1”,相当于138被复位,体现在键盘上就相当于原来按住的键被松开一次。当控制端由“1”变成“0”时,138恢复正常译码,键扫描信号扫到被按住键的线上时,回扫线变低,8279把该键值存入内部FIFORAM,并向CPU申请中断。CPU则继续响应该中断直至该键松开为止。在该电路中,74LS138的控制端实际是由8751的P3.4控制的。8751在每一个数字键返回前,先置P3.4为“1”,等待几个周期,当138完全复位后,再置P3.4为“0”,这样在中断返回不久,8279即可再次申请中断,然后CPU再继续响应,完成连续置入的目的。
在键盘设计上,增加了一个Shift键,它的作用是:在连续置入数据时,同时按住Shift键和所需要的数字增减键,那么置入速度可提高5倍以上。