欧阳海宾,万钢勇,武和雷,廖博伦,3
(1.南昌大学,南昌330031;2.国网江西省电力公司信息通信分公司,南昌330077;3.全志科技股份有限公司,广州300458)
直流电流源被广泛应用于各种高精度测量、检验、校准的场合,如工矿企业、科研、国防、军工等计量仪表、自动化标定设备中[1]。研究满足精度要求且性价比高的电流源,具有较高的实用价值和应用前景。在国内市场,有很多种直流电源,但普遍存在输出功率小,电流输出范围窄,稳定度低,准确度低,分辨率低,操作不够智能等问题。而进口的高精度电流源,价格非常昂贵,一般用户难以承受。针对上述问题,设计了一种高精度程控直流电流源,基本解决了上述问题。该电流源满足以下技术指标要求:输出功率0W ~30W,输出电流范围0 A~30 A,稳定度0.003%RG/min,准确度0.002%RG,分辨率2 μA,调节细度0.002%RG,纹波不大于0.1 mA,设计成本较低。
该电源分别设计了直流稳压扩流电路结合达林顿放大电路以及功率放大电路实现大功率输出,设计量程切换电路使电流输出范围大,应用四阶巴特沃斯低通滤波电路和比例积分电路以及模糊控制器解决稳定度低的问题[2],采用16位的LTC1595BCN8高精度DA芯片和24位的ADS1240高精度AD芯片提高输出准确度和分辨率,采用Linux工业平板电脑,在Linux工业平板电脑运行Qt用户界面应用程序,通过TCP/IP协议与STM32F103微控制器通讯,控制直流电流源系统的电流输出和校正,解决操作不够智能的问题。系统结构如图1所示。
图1 直流电流源系统框图Fig.1 System block diagram of DC current source
系统工作原理:双闭环相比于单闭环具有更好的控制调节能力[3]。内环由PI控制器,滤波电路,达林顿放大电路,功放电路,量程切换电路构成电流串联负反馈电路,在控制中充当内环调节的作用。外环由模糊控制器,DA输出电路,AD采样电路共同构成模糊控制电路,在控制过程中充当外环调节的作用[4]。用户通过TCP/IP协议给直流电流源设定输出电流值,通过AD采样得到采样电阻Rf两端的电压值UR计算出实际输出电流值并和给定电流值进行比较,得到输出电流的误差和误差变化率来调用模糊控制表的参数,得到DA输出端的数字变化量用于修正DA输出值来稳定输出电流值。当负载变化干扰进入内环时,内环的PI控制器对干扰进行持续的衰减和抑制,外环微控制器通过AD采样得采样电阻Rf两端的电压值UR,得到系统输出电流Io[5]:
然后与设定的电流值相比较,通过模糊控制算法子程序得到DA输出的修正量对DA的输出值进行微调使输出电流稳定。当设定电流值变化时,模糊控制器和PI控制器能够快速响应达到稳态输出抑制系统阶跃响应输出超调。
图1所示,直流电流源要求最大输出电流为30 A,而三端直流稳压芯片LM7805典型稳压电路接法最大的输出电流只有1 A,而且也不能长时间的工作在大电流输出状态,所以设计了如图2所示的扩流电路来增大输出电流。采用外接三极管扩流,即在三端稳压芯片两端并联6个PNP大功率三极管。当负载电流增大时,电阻R7两端的电压开始逐渐增大,三极管Q1~Q6开始导通分流,这里每个大功率三极管最大流经电流为5 A,所以最大扩流5 A×6=30 A。
如图3所示,以太网通信控制器芯片采用ENC28J60,ENC28J60支持全双工和半双工的工作模式,拥有8 KB的SDRAM内存,内部集成了快速数据传输DMA,两个网传输状态LED接口,外接25 MHz时钟源,自带SPI接口可以和STM32F103的SPI接口对接实现通信。STM32F103的 SPI接口 MOSI、MISO、SCK引脚分别接到 ENC28J60的 SI、SO、SCK引脚上,ENC28J60的INT引脚接到STM32F103的PB0作为外部中断,当有数据包传输STM32F103则进入中断进行处理。在Linux工业平板电脑运行Qt用户界面应用程序作为TCP客户端,STM32F103微控制器作为TCP服务器端,客户端通过约定的通信指令协议和服务器端之间通信,控制直流电流源系统的电流输出,切换档位和校正。
图2 直流稳压扩流电路图Fig.2 DC current amplification circuit diagram
图3 以太网通信电路图Fig.3 Ethernet communication circuit diagram
电源系统设计中一般都要加入输出保护,本设计中采用窗值比较器作为保护电路。窗值比较器具有门限电压可调,抗干扰能力强的特点,广泛用于各种保护电路中。如图4所示。
图4 过压保护电路图Fig.4 Over voltage protection circuit diagram
VPRO是来自达林顿电路前端的电压信号,通过R1,R2,R3分压得到窗值比较器的输入电压,窗值比较器的门限电压由R4,R5分压得到。当Ui<U1时,U1A输出高电平,二极管D1导通,D2截止,输出电压Uout为高电平,电压信号VPRO被拉低。当Ui>U2时,U2A输出高电平,二极管D2导通,D1截止,输出电压Uout为高电平,电压信号VPRO被拉低。当U2<Ui<U1时,U1A,U2A输出低电平,二极管D1,D2截止,输出电压Uout为低电平,电压信号VPRO不变。在达林顿放大电路的前端加上窗值过压保护电路。当负载断路会导致系统的内环负反馈号为零,PI控制器会饱和输出,达林顿放大电路前端的电压信号VPRO会达到最大值,系统此时空载工作。当负载短路时,导致电压信号VPRO瞬时变大,电源系统的所有输出功率都消耗在功率三极管两端,会导致功率三极管温度迅速升高,时间久了还可能烧毁功率三极管。所以在达林顿放大电路的前端加上过压保护电路。当达林顿放大电路前端信号VPRO过大时,窗值过压保护电路会把达林顿放大电路的前端电压信号VPRO拉低,使输出为零,并且STM32F103也可以获得这个电平的变化通知客户端Qt用户界面应用程序进行输出保护,将外环的DA设定值清零,实现软件硬件同时保护。
内环PI电路在控制系统中常用来提高调节精度。如图5所示。
图5 内环模拟电路图Fig.5 Inner loop analog circuit diagram
内环PI调节器电路采用四阶巴特沃斯低通滤波电路和比例积分电路构成电压-电流转换电路。V/I转换电路是将输入电压线性转换为输出电流的电路,并且输出电流仅取决于输入电压,由于采用了直流稳压扩流电路作为V/I转换电路的供电模块,所以整个转换电路可以线性提供30 A的电流负载能力,达林顿放大电路以及功率三极管可以提供30W的输出功率。
V/I转换原理:假设流过负载RL的电流值为Io,则流过Rf反馈采样电阻的电流值也是Io,则反馈电压。
经过差分电路,反相放大电路和电压跟随器后得到负反馈电压[6]:
再由分压定理,得:
且初始状态U1=0 V。
整理得到输出电流:
由式(5)可知当电阻 R14,R18,R1,R15,Rf阻值一定时,输出电流Io只和输入电压Ui成正比例线性关系而和采样电阻Rf成反比例线性关系,与负载RL的大小无关[7]。其中Ui是DA输出电压,范围在0 V~1.25 V(DA参考电压值)之间,所以这里当输入电压Ui一定时可以通过量程切换电路改变采样电阻Rf阻值的大小来改变输出电流的大小从而达到电流量程切换的目的,当Rf一定时,可通过改变Ui值来改变输出电流值。
DA输出电路图如图6所示。
图6 DA输出电路图Fig.6 DA output circuit diagram
双闭环系统的外环数字控制电路主要由STM32F103单片机最小系统和AD/DA数模转换电路组成,其中DA芯片采用16位的LTC1595BCN8[8]。系统的电流输出稳定度,幅值调节前提取决于DA输出的直流信号的稳定度[9]。设计指标要达到调节细度0.002%*RG,即DA值改变一个二进制位时对应的DA输出电压值变化为0.000 02 V,如果参考电压取-1.25 V时,LTC1595BCN8的分辨率是:
则DA输入值二进制变化一位时DA输出电压值变化0.019 1 mV,达到调节细度0.002%*RG。当客户端Qt用户界面应用程序设定输出电流值时,STM32F103会根据校准好的电流输出值和DA设定值之间的比例系数算出理论上DA的设定值,将DA设定值发送给LTC1595BCN8输出电压Ui,作用于内环的输入端信号。
图7 AD采样电路图Fig.7 AD sampling circuit diagram
AD采样电路如图7所示。AD芯片选用24位的ADS1240,ADS1240是具有宽动态特性的Δ-∑型模拟/数字转换器,高达24位的无丢码特性和21位有效分辨率。根据被采样信号的电压范围,ADS1240选用2.5 V作为参考电压,对ADS1240初始化设置时,设置采样通道为AIN1、单极性模拟输入、每秒进行15次采样转换,可编程FIR滤波器在50 Hz处陷波等参数。这里将Rf反馈采样电阻两端的电压值叠加上1 V的基准电压值送到AD采样通道使AD采样线性度更加理想。在软件上采用滑动中位值平均滤波算法,使采样的结果更加稳定,实测AD采样电压达到0.01 mV的准确度和稳定度,满足电源系统分辨率2μA和调节细度0.002%RG的设计要求。
服务端主程序如图8所示。STM32微控制器服务端主程序主要对AD,DA,SPI中断通信和TCP/IP通信协议初始化,从flash里读入模糊控制查询表,并且从flash里读出校正系数到内存中的变量,然后进入一个死循环,不断进行AD采样得到采样电阻Rf两端的电压,根据校准系数算出此时实际输出电流值,由输出电流的误差和误差变化率来调用模糊控制表的参数,得到DA输出端的数字变化量用于修正DA输出值来稳定输出电流值。
图8 服务端主程序图Fig.8 Server main program diagram
图9 模糊控制器仿真图Fig.9 Fuzzy controller simulation diagram
通过Matlab/Simulink软件对双闭环直流电流源控制系统的数学模型进行分析研究,得到适用于工程项目的模糊控制策略表如图9(a)所示。图9(b)是不加模糊控制器的电流输出阶跃响应,图9(c)是加了模糊控制器的电流输出阶跃响应,图9(d)是电流输出偏差和电流输出正好相反,电流输出偏差最终趋于0。由仿真分析得知,在增加了模糊控制则后,系统的动态特性得到较大改善,不但具有较短的响应时间,而且超调量也很小。其模糊控制矩阵存为磁盘文件adjust.fis用于STM32微控制器调用模糊控制表的参数。
服务器端中断子程序如图10所示。
图10 服务器端中断子程序图Fig.10 Server interrupt subroutine diagram
当客户端Qt用户界面应用程序通过网络发送指令时,微控制器会产生一个SPI中断,根据不同的指令进行不同的操作。服务端中断子程序主要负责电流源系统的校准,电流档位切换和设定输出电流值。
校准原理:校准其实就是用来确定输入值(DA设定值)和输出值(系统输出电流值)之间的关系[10],也就是为了确定两组关系。这里选择一个档位进行校准,由于每一个档位的Rf阻值不同,校准系数也不同,下面以100 mA档位为例。
其中k_DAtoV_100 mA,b_DAtoV_100 mA是DA设定值和AD采样电压之间的比例关系,k_AtoV_100mA,b_AtoV_100mA是电流输出值和AD采样电压之间的比例关系,校准过程:服务器端设定DA输出50%点da_set50,AD采样得到一个电压值fv1,并获取客户端发送的标准电流值ni1,服务器端再设定DA输出100%点da_set100,AD采样得到一个电压值fv2,并获取客户端发送的标准电流值ni2,根据这两组数据计算出校准系数。
系统校准完成后,当设定输出电流值Io时,我们可以由式(8)算出理论上应该在采样电阻Rf两端采到的电压值:
再把Uf带入式(7)算出理论上应该设定的DA设定值,设定DA值就可以输出电流Io。之所以不直接用一组比例系数DA设定值和输出电流值之间的比例关系,而要加入一个中间变量AD采样电压值,是因为中间变量AD采样电压值是模糊控制调节输出电流时的依据,如果没有AD采样电压值和输出电流值之间的关系就不知道电源是否输出了Io,也就没有了电流输出调节的依据了。
网络配置界面如图11所示。
图11 网络配置界面图Fig.11 Network configuration interface diagram
系统开机后进入网络配置界面,IP地址和端口输入框都采用正则表达式作为输入验证器,避免非IP地址的字符串输入。当连接上服务器后下面的状态栏会显示绿色图标,当服务器意外断开连接,客户端会收到通知并且状态栏会变成红色闪烁图标,提示用户网络连接故障。
通过菜单栏切换到校准界面,选择不同的档位进行校准。由式(5)可知本电流源是一个线性系统所以只要校准两个点,分别输入50%校准点和100%校准点6位半标准表的电流值进行校准,校准好的系数写入服务器端的flash里面保存。校准界面如图12所示。
图12 校准界面图Fig.12 Calibration interface diagram
通过菜单栏切换到电流输出界面,如图13所示。同样这里的输出值框也采用了正则表达式,避免正浮点数以外的其他字符串的意外输入。并且加入了自动换挡功能,用户只需输入要输出的电流值,程序就会自动判断,在1 mA,10 mA,100mA,1 A,5 A,30 A档位之间切换档位,例如当在1 mA档位下里输入1 000则会自动切换到1 A档位。当负载短路或断路时电流输出状态图标会变成红色闪烁图标进入保护状态阻止用户的输入直到保护状态的解除。
图13 电流输出界面图Fig.13 Current output interface diagram
由于系统的输出电流精度很高,普通的万用表不能作为其测试工具,所以采用Fluke六位半高精度数字多用表进行测试。图14中,在IOUT_H和IOUT_L电源输出两端子分别接上高精度负载电阻和Fluke六位半高精度数字多用表,用测得的电压值除以负载电阻就是输出电流。
图14 系统测试图Fig.14 System test diagram
稳定度测试:分别在每个电流档位下输出最大电流,测得实际电流输出值在一分钟时间内的最大最小值,由此得出系统的电流输出稳定度。数据如表1所示,Ioset是电流输出设定值,Iomax是系统在一分钟内实际电流输出最大值,Iomin是系统在一分钟内实际电流输出最小值。由表1知各个量程的稳定度小于0.003%,满足设计要求。
准确度测试:分别在每个电流档位下输出最大电流,测得实际电流输出值,由此得出系统的电流输出准确度和电流纹波。数据如表2所示,Ioset是电流输出设定值,Io是系统实际电流输出值。由表2知各个量程的准确度小于0.002%,满足设计要求。
表1 输出电流稳定度测试表Tab.1 Output current stability test table
表2 输出电流准确度测试表Tab.2 Output current accuracy test table
负载能力测试:以1 A档位为例,设定输出电流是1 A时,改变负载电阻的大小,测试系统的带负载能力。数据如表3所示,RL是系统外接的负载电阻,Ioset是电流输出设定值,Io是系统实际电流输出值。由表3可知系统的带负载能力满足设计要求。
表3 输出电流稳定度测试表Tab.3 Output load capacity test table
本设计以STM32F103为主控核心,在Linux工业平板电脑运行Qt用户界面程序与用户交互控制直流电流源系统的校准和输出。通过对各个硬件电路模块和软件模块的测试,达到了预期的设计要求:电流源系统的电流输出达到了0.002%的精确度和0.003%稳定度。文章提出的方法实现的电流源相比于市场上的大多数程控直流电流源具有输出电流精度高,带负载能力强,输出电流范围大等优点,可应用于各种高精度测量、检验、校准的场合。在后续工作中还会加入程控直流电压源的模块组合成直流电流电压源系统。