在该方案中,利用包含电压互感器和电流互感器的前端处理电路,将输入信号处理为符合ADE7758差分输入电压±0.5 V的要求的电压信号。用户可以通过键盘控制微处理器,使ADE7758计算得到需要的电压有效值、电流有效值、功率值等,并输出液晶显示。而单相和三相电能监控方式之间的转换则完全通过软件控制ADE7758内部有效输入通道实现。
1.3 ADE7758的核心电路设计
ADE7758的核心电路示意图如图2所示。将处理之后的信号输入ADE7758的3个电压通道和3个电流通道,注意要差分输入。DIN,DOUT,SCLK,CS,IRQ和CF连接微处理器,根据ADE7758的驱动程序对其内部寄存器进行操作,通过DOUT输出所需要的多种数据给微处理器。
2 ADE7758的驱动开发流程
如果要实现ADE7758与微处理器的通信,使芯片正常工作,还需要底层驱动程序的支持。ADE7758中驱动程序的开发,主要是实现SPI串行接口的数据读/写,首先需要从芯片的用户手册中查找串口的读/写时序,时序图如图3、图4所示。
通过时序图可以看到,ADE7758的SPI串行接口在工作过程中,CS需要置高电平,SCLK需要置低电平作为芯片开始工作的使能标志。读/写操作开始后,首先都要给ADE7758一个命令字节,然后再开始连续读/写数据。读/写操作的区别标志是写操作过程中,命令位最高位为1,读操作为0。
按照时序进行写操作,将命令位最高位强行置1后,通过SPI发送后7位给ADE7758的DIN,对SCLK置0,然后进行数据的写入操作,过程与写入命令相同,只不过不用对最高位进行操作,因此在实际编写过程中可以先写一个SPI的写操作函数,再调用这个函数,完成ADE7758的写命令和写数据的操作。
读的过程需要首先对读/写操作标志位强行置0,然后通过DIN将读的命令写入ADE7758,再通过DOUT的高低电平变化读出8位数据。
具体的驱动程序流程,如图5所示。
3 企业用户应用程序的实现
利用ADE7758的底层驱动,实现对三相电、单相电的分时监控,需要编写相应的软件程序。该方案在软件方面采用将电能监控的用户应用程序封装成任务的方法,利用μC/OS-Ⅱ软核进行调度、管理,实现多种监控功能。整体的软件工作流程如图6所示。
用户应用程序是ADE7758软件部分的核心,需要依靠它来获得企业所需单相、三相的电压有效值、电流有效值、有功功率、功率因数以及累计电量。在应用程序中,首先要读取ADE7758各个寄存器的数据,在该方案中需要分别监控单相、三相电能,因此需要在应用程序中进行判断,单相电监控只需要读取AWATTHR(有功功率累计)、AVAHR(无功功率累计)、AIRMS(电流有效值)、AVRMS(电压有效值)和FREQ(输入信号频率)寄存器。三相电还需要读取B相和C相相应的寄存器。特别需要注意,一些与功率有关的寄存器的值为正,则需要对这些寄存器的数据作取绝对值的操作,而电流电压有效值是带符号的,因此不需要作取绝对值的操作,这里需要分别处理。
从ADE7758的功率寄存器读取的值为累计电量,为了获得功率值,需要计算累计时间。该方案使用了移动时间戳的方法,调用μC/OS-Ⅱ提供的OSTimeGet()函数,读取数据之前得到首次的时钟节拍,第二次读取数据之前获得当前时钟节拍,就可以利用两次读取数据的间隔时间,计算得到相应的功率。以上所得的数据为ADE7758内部寄存器的原始数据,用户应用函数还需要结合校准所得的修正系数,对原始数据进行修正,才能最终提供给用户精确的电能监控数据。
4 ADE7758在实际使用中的校准方法
ADE7758的用户手册给出了有关电流、电压有效值通道以及功率计算校准原理和算法,在ADE7758实际使用之前必须经过正确的校准过程,否则会出现较大误差。因为该方案是使用ADE7758分时实现三相、单相电能监控功能,因此校准时首先需要对于两种情况分别设置,对LCYCMODE寄存器和MASK寄存器进行配置。校准单相,LCYCMODE寄存器的第4位置1,MASK寄存器第10位置1,表示允许A相过零检测和过零中断;校准三相,LCYCMODE寄存器的第4,5,6位置1,MASK寄存器第10,11,12位置1,表示三相都允许过零检测和过零中断。ADE7758测量出来的数据用二进制表示,因此第一步校准工作就是完成二进制的转换,即得到LSB(二进制的最低有效位代表的实际数据量),算法为:准确值/测量值=LSB。比如准确值为220 V,从ADE7758的VRMS寄存器读出的数据为二进制表示的浮点数,即测量值。利用上面的公式得到VRMS寄存器的一位最低有效位所代表的电压数值,即LSB。
电流有效值和电压有效值的校准算法为:
式中:IRMS,VRMS为电流、电压测量值;IRMS0,VRMS0为电流、电压准确值;IRMSOS,VRMSOS为需要得到的电流、电压的offset(误差补偿量)。根据该算法,在获得准确值和测量值后,可以得到误差补偿量。该方案在实际校准过程中,为进一步降低误差,采用了更加准确的多次测量求平方根的方法得出测量值,再利用LSB的算法和误差补偿量的算法获得相应的LSB和offset。
之后就是进行功率的校准,包括有功功率、视在功率和无功功率。因为xWG/xVARG/xVAG三相9个寄存器是用来对平均功率进行缩放的,将使功率校准更加精确,但给后续的校准带来巨大的计算量,所以首先需要对它们进行清零;然后就是如同有效值的校准一样,需要设法获得功率的LSB和offset。以有功功率为例,首先设定电流、电压的准确值,然后分别读出AWATTHR,BWATTHR,CWATTHR的三相有功功率累计量。在此还是利用移动时间戳的方法,得到首次的时钟节拍,然后重复前面的读取操作,获得当前时钟节拍,两次时钟节拍相减,得出累计时间:有功功率的准确值=电流准确值*电压准确值/累计时间,利用:LSB=准确值/测量值,得到有功功率的LSB。有功功率的offset计算公式为:
同样利用移动时间戳的方法,可以求出有功功率的offset。其中,IMIN需要额外设置一个准确值,之前的准确值则为JTEST,LINECYC就是通过OSTimeGet()函数得到的两次累计时间。
在得到电流有效值、电压有效值、有功功率的LSB和offset之后,基本完成了校准工作,最后通过ADE7758获得的数据经过LSB和offset的修正后,得到的实际测量数据如表1所示。ADE7758的用户手册给出的误差低于0.1%,在实际组装系统与测试过程中,不可避免会产生人为误差,比如互感器的固定螺钉松紧不同会改变输入电阻,造成电压额外消耗;互感器部分的几个较小阻值的1%精度电阻精度不足,造成分压比例的不同等。经过研究,如果需要进一步提高精度,可以从提高电阻精度和改善系统组件固定方法两方面进行改进。
5 结语
区别于传统电能监控系统的设计,本文提出了一种ADE7758分时实现单相、三相电能监控功能的解决方案,很好地满足了企业用户对于多种电能实时监控的需求,并且具有低成本、高度自动化的特点,应用前景十分广阔。对于ADE7758在新方案中的使用做了详细的研究和实验,通过实际开发、测试,获得了许多与芯片的底层驱动、应用程序、校准过程有关的宝贵经验和实时监控数据,为进一步完善方案打下了良好的基础。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』