关键词:傅里叶变换;数据采集;DSP指令;FPU;ARM
Abstract: According to the actual situation of traditional power parameter acquisition, this paper introduces a data acquisition design scheme based on arm and Fourier transform technology. The system is designed according to functions, including four functional modules: system power supply, signal acquisition, arm processing platform, display and communication. The signal acquisition part adopts 6-channel synchronous sampling, and the sampling points of power frequency period are adjusted as required. Through the effective combination of the DSP instruction function of arm and the hardware FPU unit of the processor, the acquisition, calculation, display and storage of the main power parameters are realized. The scheme has a certain reference value to improve the real-time performance of the acquisition device and reduce the cost and energy consumption.
Key words: Fourier transform; Data acquisition; DSP instruction; FPU; ARM
1 引言
据国家统计局统计数据显示,2017年10月,中国电力仪器仪表装置当期生产量为1868.4万台,累计总数达18403.67万台,截止2018年9月,当期生产量为1916.07万台,累计总数达15980.57万台,当期生产量和累计总数均呈上升趋势。目前大部分的电力数据采集装置采集分析都是在时域上进行计算分析,当涉及电力谐波参数及各次谐波幅值时,时域分析就显得困难。电力谐波参数在工业运用中尤为重要,谐波影响电气设备安全运行,产生附加损耗,引起保护器件误动作。对电力系统中的参数进行采集分析,是对系统运行状态进行有效评估的主要手段。为满足复杂负荷电力系统的电能质量参数采集和分析,利用ARM和傅立叶变换技术在频率域进行计算将有利于谐波数据的分析[1-4],本文利用国产芯片厂商兆易创新和锐能微芯片进行低压配电系统参数采集装置设计[5-6],GD32F303RCT6高性能处理能力及RN8302B高精度采集和运算能力[7-11],实现配电系统的运行参数及状态监测及电能质量分析。
2 设计方案
本数据采集装置主要由系统供电、信号采集部分、ARM处理平台、显示和通讯四部分组成(见图1)。
图1 系统结构框图
供电部分主要包括AC/DC反激式开关电源及5V和3.3V线性稳压电源,信号采集部分包括三相电压与电流采集前端和计量芯片RN8302B,ARM处理平台由GD32F303RC及其外围电路构成,显示部分包括液晶屏及驱动,通讯部分主要是RS-485通讯电路。
2.1 信号采集部分
2.1.1 信号采集概述
信号采集主要实现对电力系统中的电压和电流进行采集,由于ARM处理器自带的ADC转换位数为12位,有效位数在10.8位左右,为满足采集精度要求,因此电压和电流采集转换不采用ARM处理器自带的ADC通道,而采用专用的计量采集芯片RN8302B。
2.1.2 电流采集
(1)电流通过电流互感器二次侧输出经采样阻,输出幅度峰值控制在800mV以内,电流输入通道采用全差分输入,RN8302B内置4路电流输入通道,每路通道内部均采用24位ADC,以提高转换精度,方便进行傅立叶变换分析。
(2)电压采集可以采取两种不同的方式,一种是采用电压互感器或电流互感器进行采样,另一种是采用电阻分压方式进行采样。采用电压互感器二次侧输出的电压信号,经调理电路将输出峰值控制在800mV以内;采用电流互感器则需要在一次侧串联一定阻值和功率的电阻,二次侧输出的电流信号经采样电阻输入至RN8302B的电压通道;采用电阻分压方式时,零线需与电路板中的模拟地进行连接,避免浮空,电阻分压方式需要采用多个电阻串联方式,电阻需要满足高精度和低温度系数的要求。电压采集原理图如图2所示。
图2 电压采集原理图
(3)按照文中所提要求,每个工频周期采集电流、电压的点数可以按需求进行调整,默认设计每个工频周期采集64点,当需要调整时,配置RN8302B的采样数据写缓存控制寄存器第7位,设置为同步采样模式,将每个工频周期的采样点数改为128点。此外,RN8302B还支持对输入信号进行增益放大控制,放大倍数可以是1、2、4、8。为满足傅立叶分析的要求,信号采样频率需满足奈奎斯特定理,针对50次谐波至少采样率为5kHz,当设置工频周期采样点数为128时,对应的采样率为6.4kHz,满足要求。
(4)工作电压监测。由于ARM处理器、RN8302B、RS-485通讯收发器、存储器均采用3.3V电源,RN8302B当电源电压低于2.7V时,进入复位模式,当电源电压恢复正常时,重新进入工作模式,因此需要对电源电压进行检测。此处采集转换通道采用ARM处理器自带的ADC通道结合电源管理单元低压监测功能,当电源电压低于或等于2.7V时,处理器将当前累计的电能参数写入的存储器中。
2.2 系统供电部分
系统所需电源包括12V、5V和3.3V。其中12V为通信电源,5V为中间转换电源,3.3V为处理器芯片工作电源。电源模块如图3所示。
图3 电源模块实物图
电源部分采用反激式开关电源,输入85-250V交流电源,输出12V,经线性稳压器和LDO后输出5V和3.3V工作电源。为满足3.3V电源低于2.7V时,EEPROM自动保存电能数据,需要保证掉电时间足够长,否则EEPROM数据保存不完整。BL24C256的写数据时间典型值为1.9ms,最大值为3ms,则掉电时间至少大于3ms。通过示波器观察电源掉电如图4所示。图中每格横轴代表1s,纵轴每格代表100mV,示波器探头为10倍增益,由此电源电压从3.3V降至2.7V时放电时间为200ms;从3.3V降至1.5V,放电时间为500ms,完全满足掉电保存的要求。
图4 电源掉电波形图
2.3 ARM处理平台
以ARM(Advanced RISC Machines)为核心的处理平台,采用兆易创新高性能处理器GD32F303RC,属Cortex-M4处理器,主频高达120Mhz,具有256K字节的闪存,48K字节的SRAM,8个定时器,3个USART接口,两个UART,两个I2C接口和3个SPI接口,多达18通道ADC。ARM平台如图5所示。
图5 ARM平台结构图
I2C0用于MCU与EEPROM通讯,I2C1用于MCU与LCD的驱动芯片(HT16C23)通讯,USART0用做RS-485的接口,SPI0作为与电能计量芯片通讯;考虑节能,当长时间无按键按下时,LCD背光熄灭,当按键按下下时,再重新唤醒LCD;MCU原理图如图6所示。
图6 MCU原理图
上位通讯协议采用MODBUS协议,支持从机模式,TIMER2定时器用作数据帧间隔和数据间隔定时中断;ADC对供电电源进行检测,配合低压检测功能,作为电能数据写入到EEPROM的依据;按键作为参数设定及显示调整,RTC时钟日历实时显示当前的时间;为有效管理各个功能及提高MCU的效率,采用RTOS进行开发,SysTick作为RTOS的时钟节拍。
J1为信号采样的转接口,J2为电源模块的转接口,NPN三极管Q1、R22、R23等器件作为LCD的背光源控制电路,通过MCU的PB5引脚进行控制,当输出低电平时,背光熄灭;输出高电平时,背光点亮。
LCD驱动芯片采用HT16C23,采用I2C协议与MCU进行通讯,设计采用1/8 duty,1/3 bias,频率为160Hz,关闭内部电压调整功能,并设置为VLCD引脚。LCD及其驱动电路如图7所示。
图7 LCD驱动电路
3 软件设计
3.1 EEPROM驱动
EEPROM采用BL24C256,存储容量为256Kbit,采用I2C协议,速度高达1MHz。初始化接口,使能GPIOB和I2C0时钟,设置引脚为复用开漏输出;设置时钟速度为400kHz,虽然BL24C256和GD32F303都支持1MHz,但电压低于2.5V后,BL24C256速度仅支持400kHz,考虑掉电保护可以正常工作,设置为400kHz。然后选择I2C模式,地址采用7位地址,最后使能应答信号。
EEPROM的读写功能,为了使用方便,开发各种数据类型的读写,包括字节、半字、字节、长整形、浮点、字符串等,其中基础读写功能为字节的读写。首先判断I2C总线是否为空闲,如果被占用则需要等待,然后GD32F303发送一个起始信号,并等待该起始信号发送结束标志置位;接着GD32F303发送EEPROM的地址(0xA0)并等待发送完成;然后等待当前发送缓冲区为空,发送待写入地址信息,等待写入完成,需要注意,BL24C256需要两个字节的地址,而I2C每次发送数据只能发一个字节,因此需要分发两次存储地址信息;最后发送待写入地址上需要保存的数据。
字节读操作和写操作相似,其余的半字、字节、浮点、字符串均可以在字节读写的基础上开发。
3.2 LCD软件设计
LCD驱动芯片为HT16C23,同样采用I2C协议与MCU进行通讯,由于对于HT16C23写操作经常使用,而读操作几乎用不到,因此HT16C23软件开发主要针对写操作。HT16C23的上电和设置步骤有明确的顺序,HT16C23的设计流程图如图8所示。
图8 HT16C23的设计流程图
从上电开始,设置内部偏压和duty,HT16C23支持1/3或1/4偏压及1/4或1/8duty;内部帧频率的设置,HT16C23支持80Hz和160Hz两种帧频率。接着设置段信号/VLCD共享引脚,将其配置为段信号脚或VLCD脚,然后配置闪烁频率。至此LCD的初始化已完成,接着根据显示内容需要,往待写入地址写入显示的数据内容,并打开显示和启用内部晶振。由于采用I2C协议与MCU进行通讯,操作过程与EEPROM相似,不再赘述。开发完成HT16C23的读写功能,就根据需要开发电压显示界面、电流显示界面、功率显示界面、功率因数显示界面、傅立叶谐波电压分析界面、傅立叶谐波电流分析界面等参数显示界面及波特率设置界面、变比设置界面、密码设置界面等参数设置界面。
3.3 计量芯片软件设计
模数转换芯片采用专用电量计量芯片RN8302B,具有7通道24位ADC,可以设置为同步采样及固定采样率采样。采用SPI协议与MCU进行通讯,RN8302B通讯时序如图9所示。
图9 RN8302B通讯时序图
根据通讯的时序图,可以得知,串行时钟在空闲状态为低电平,数据被抽样时刻为时钟的下降沿。RN8302B的接口初始化程序SPI结构体变量的定义和设置程序如下:
spi_parameter_struct RN8302_structure;//定义结构体
RN8302_structure.clock_polarity_phase=SPI_CK_PL_LOW_PH_2EDGE;//时钟极性为低、数据采样为下降沿
RN8302_structure.device_mode=SPI_MASTER;
RN8302_structure.endian=SPI_ENDIAN_MSB;
RN8302_structure.frame_size=SPI_FRAMESIZE_8BIT;
RN8302_structure.nss=SPI_NSS_SOFT;
RN8302_structure.prescale=SPI_PSC_64;
RN8302_structure.trans_mode=SPI_TRANSMODE_FULLDUPLEX;
spi_init(SPI0,&RN8302_structure);
RN8302B的写操作过程包括:
(1)拉低片选信号;
(2)发送待写入地址的高字节;
(3)发送低字节与写命令控制字(0x90);
(4)发送校验字节;
(5)拉高片选信号。
RN8302的读操作与写操作类似,不再赘述。RN8302B模式设置,可以配置为三相四线制或三相三线制两种,通过往地址0x80写入1或0实现;模式选择函数定义如下:
void RN8302_mode_slect(u8 mode)
{
if(mode)
{
u8 RN8302_rg[1]={0x00};
RN8302_reg_write(0x86,RN8302_rg,1);
}
else
{
u8 RN8302_rg[1]={0x33};
RN8302_reg_write(0x86,RN8302_rg,1);
}
}
如果mode参数配置为1,即配置为三相四线制模式,如果mode参数配置为0,即配置为三相三线制模式。RN8302B的初始化主要完成SPI接口的参数配置、时钟使能、打开RN8302B的写使能寄存器、配置计量模式、软件复位、使能计量控制寄存器 EMUCON、设置ADC通道的增益、清除波形缓冲区数据,最后打开写保护。
初始化完成后,根据测量的需要MCU从RN8302B的相关寄存器读取数值,如线电压有效值、相电压有效值、电流有效值等,并通过LCD进行显示,为实现傅立叶变换分析电压和电流的谐波,将波形缓冲区的数据进行保存,共6个参数,每个参数每个工频周期采样点数为128,调用ARM的DSP函数arm_cfft_q31,对三相电压、电流数据进行分析,计算出相关的谐波次数及其含量。
3.4 电源监测设计
防止掉电数据丢失,需要对供电电源进行监测,采用ADC和电源管理单元(PMU)的低压检测功能双重监测,以PMU的低压检测功能为例,首先使能低压检测中断,使能PMU外设时钟,外部中断16初始化,最后选择低压检测的限值,GD32F303RC提供8档低压检测限值:2.1V、2.3V、2.4V、2.6V、2.7V、2.9V、3.0V及3.1V。由于RN8302B在电源电压低于2.7V时进入复位状态,因此可以将低压检测的限值设置为2.7V,当电压电压低于2.7V时,将电能参数写入EEPROM,实现数据掉电保存。
3.5 按键驱动
为实现人机交互,设计采用按键实现显示界面的上翻与下翻、相关配置参数的录入。按键驱动采用事件触发方式进行设计,采用查询方式效率较低,采用中断方式将占用很多外部中断源,操作过程中,数据的采集等操作将被中断。首先使能GPIOA时钟,配置GPIO工作模式,选择外部中断源,事件触发配置,事件配置程序如下:
exti_init(EXTI_0,EXTI_EVENT,EXTI_TRIG_FALLING);
exti_init(EXTI_1,EXTI_EVENT,EXTI_TRIG_FALLING);
exti_init(EXTI_2,EXTI_EVENT,EXTI_TRIG_FALLING);
exti_init(EXTI_3,EXTI_EVENT,EXTI_TRIG_FALLING);
由于按键在硬件上采用了上拉和硬件滤波,因此事件的触发均采用下降沿。按键初始化完成后,根据功能需要,当按键key1按下时,显示界面上翻;当按键key2按下时,显示界面下翻;当按键key4按下时,进入参数设置界面,包括通讯波特率、变比、及仪表地址等。
另外为考虑节能,当长时间无按键按下时,LCD背光熄灭,直到按键按下后,LCD背光才会被唤醒。
3.6 日历功能设计
采用内部RTC实现时间在LCD上显示,打开备份域时钟和PMU时钟,使能后备存储管理功能,配置低速时装,打开秒中断和闹钟中断,设置RTC技术寄存器的值,通过传入时、分、秒数值,转换为RTC计数寄存器的值,实现设置和调整当前的时间。
3.7 校准
为保证数据的正确性,需要对设计的装置进行校准,RN8302B支持ADC通道增益、ADC通道相位、功率增益等参数进行校准,校准原理如图10所示。
图10 校准原理图
计算额定输入U、I寄存器的值及功率因数为1和0.5时的HFCONST寄存器的值,标准源输出额定电压与电流,读出装置的数值,计算二者之差和ADC通道增益,重新写入增益寄存器值。然后将标准源输出功率因数为0.5时,读出装置的有功功率并计算与标准源输出有功功率之差,重新写入功率增益寄存器值。A相有功功率增益校准程序如下:
regbuf[0]=StDef_RN8302Para_Reg.Cst_Px_PHSL[0]/256;
regbuf[1]=StDef_RN8302Para_Reg.Cst_Px_PHSL[0]%256;
RN8302_WriteReg(PA_PHS,regbuf,2);
4 实验结果与分析
通过对完成校准后的装置进行试验,包括各参数与标准源的对比和标准源输出高次谐波傅立叶分析的结果。采用高精度三相标准源(0.2级)搭建如图所示的试验平台,对该系统进行试验。
图11 实验平台
记录三组数据,取每组的平均值,实验数据如下表所示。由于设计显示采用固定格式显示,所有参数均只保留两位小数,当数据超过范围自动切换为大量程的单位,如当功率超过1000W时,显示就不再用“W”,改用“kW”,小数点后只保留两位有效数字。
本设计显示采用固定格式,即任何数据保留两位小数点,当数据超过范围自动换为大量程单位,如表上的有功功率P。
通过RS-485将GD32F303对RN8302B的波形缓冲区的数据及对波形缓冲区数据傅立叶变换后的数据传输到上位机,利用MATLAB对传入的数据进行傅立叶变换后与GD32F303傅立叶变换的数据对比。基波电流傅立叶变换的对比结果如图12所示。
图12 基波傅立叶变换结果
5 结束语
文中提出了一种ARM和傅立叶变换技术的低压电力参数采集装置设计方案,该设计方案较直接采用处理器内部的ADC相比,具有精度高的特点;与采用专用的电量ADC芯片如AD7606相比,具有成本低的特点。
实验结果表明校准后所得结果能合理的反应电力系统运行中的参数和状态,在6.4KHz的采样率下,傅立叶分析结果满足高次谐波的分析要求。
参考文献:
[1] 郭振涛,迟长春,陈正馨.一种改进加窗三峰插值快速傅立叶变换谐波分析方法.上海电机学院学报,2018,21(4):36-41.
[2] 宋艳丽,宋燕鑫,朱静.基于全相位FFT的电能质量谐波检测新方法研究.成都航空职业技术学院学报,2018,34(4):49-51.
[3] 唐立学,宗平.供电系统谐波测量与分析.电子技术与软件工程,2018,000(005):244-244.
[4] 杨磊. 谐波与电压波动对电能计量的影响研究[D]. 南京:东南大学,2017.
[5] 叶蓓,何强.基于国产MCU的电流输出装置的设计与实现.上海船舶运输科学研究所学报,2020,43(2):15-20.
[6] 吕华溢,谢政.一种软硬件自主可控的嵌入式实时控制系统.单片机与嵌入式系统应用,2017,17(3):27-31.
[7] 钟永彦,吴亚,陈娟等.基于RN8302和Python的电能测控系统设计.电子器件,2019,42(4):877-881.
[8] 钟永彦,吴亚,陈娟等.基于RN8302和Python的电能测控系统设计.电子器件,2019,42(4):877-881.
[9] 单文松. 基于STM32的单相电能质量监测仪的设计与实现[D]. 济南:山东大学,2018.
[10] 闫鑫,路军,张洪伟等.基于RN8302的三相高压电能表研究.青岛大学学报(工程技术版),2017,32(4):21-24,41.
[11] 黄亮,王景存,康之讷等.新型电能计量芯片RN8302在智能电表中的应用.电子设计工程,2013,21(3):93-95.
作者简介:
张恩寿(1992—),男,助理工程师,从事嵌入式系统开发。
共0条 [查看全部] 网友评论