三相电气量采集模块设计(三)非同步采样时的精度提升

3.1 概述

周期电气信号的有效值测量、谐波分析理论上均建立在同步采样基础之上。同步采样要求采样窗口等于被测信号整数个周期,以此消除频谱泄漏。然而要实现高精度的同步采样是存在困难的,首先频率的精确测量是需要复杂的数值运算的,其次MCU晶振的频率本身也存在固有的误。当采样与信号无法保持同步时,会产生信号周期截断效应,进而引发频谱泄漏,最终导致有效值、功率等电气参数的测量误差。

为了减少非同步采样误差,有学者提出准同步采样技术,然而准同步采样算法虽然不需要同步环节,却是以牺牲时间为代价的,需要对被测信号采样值进行多组重复迭代,运算量也是不小。

本节提出一种提升有效值与功率测量精度的简易方法。观测发现:若采样起始点保持不变,则被截断的波形形态固定,由此引入的测量误差也就是不变。因此可通过仿真分析不同采样起始点对测量结果的影响,筛选最优起始采样相位。

常规采样方案中,采样起始相位随机,周期截断带来的频谱泄漏误差无序、随机性强,直接表现为测量结果波动。而固定起始相位采样能够将随机的频谱泄漏误差转化为确定性系统误差;此类误差可预测、可标定、可补偿,也就可以提升测量精度。

本算法无需锁相环、无需加窗运算与迭代求解,仅需要优化采样启动相位,或在采样缓冲区中选取合适的数据起始计算点,算力消耗低,能够适配各类低端、中端MCU平台。

3.2 非同步采样的测量误差

设被测信号为 ,如1周波采样N点,并以 等间隔同步采样,各点采样瞬时值为 ,若采样点数复合采样定理,则可采用复化梯形积分算法计算有效值,理论上没有测量方法误差。

存在同步误差时,设测试系统的第1个采样点在基频的 点,第N个采样点在 点,如下图所示。由于同步误差ΔT的存在, ,这时实际采样间隔为: ,按此间隔连续采样N点,得序列

该序列的理想有效值为 。用复化梯形积分重新计算的有效值为:

计算相对误差即是:

下面以单周期采样128点,频率从50->50.2Hz,起始采样相位从0~90度进行仿真计算,其matlab的程序以及输出结果如下

下面以单周期采样128点,频率从50->50.2Hz,起始采样相位从0~90度进行仿真计算,其matlab的程序以及输出结果如下:

Matlab 复制代码
%% 固定窗口128点RMS有效值仿真 49.8~50.2Hz,初相0~90° 步长1°
clear; clc; close all;
% =========参数配置=========
N = 128;                  % 每帧采样点数
f_std = 50;               % 基准频率
Ts = 1/(f_std*N);                 % 采样间隔
fs = 1/Ts;
freq_list = [49.8,49.9,50.0,50.1,50.2];  % 仿真频率点
phi_deg_list = 0:1:90;            % 初始相位 0~90°,1°步长
Peak = sqrt(2);                   % 正弦峰值
U_rms_theory = Peak / sqrt(2);    % 理论有效值

rms_result = zeros(length(freq_list), length(phi_deg_list));% 预分配结果矩阵 行:频率 列:相位
for fi = 1:length(freq_list)                %% 循环仿真
    f = freq_list(fi);
    for phi = 1:length(phi_deg_list)
        phi_rad = deg2rad(phi_deg_list(phi));
        t = (0:N-1).' * Ts;
        x = Peak * sin(2*pi*f*t + phi_rad);
        u_rms = sqrt( sum(x.^2)/N );        % 离散均方根(有效值)
        rms_result(fi, phi) = u_rms;
    end
end

%% 绘图
figure('Color','w','Position',[100,100,900,550]);
color_set = lines(5);
hold on; grid on; box on;
for fi = 1:length(freq_list)
    plot(phi_deg_list, rms_result(fi,:),...
        'Color',color_set(fi,:),'LineWidth',1.5,...
        'DisplayName',sprintf('f=%.2f Hz',freq_list(fi)));
end
% 绘制理论有效值基准线
yline(U_rms_theory,'k--','RMS','LineWidth',1.2);
xlabel('起始采样相位 \varphi (°)','FontSize',11);
ylabel('计算得到有效值 U_{rms}','FontSize',11);
title('N=128定点窗口RMS有效值|频率49.8~50.2Hz|初相0°~90°','FontSize',12);
legend('Location','best');

输出结果如下:

几条曲线在45°时交叉,也即是起始采样相位在45°时的误差最小。

这其实也很好理解,采用45°相位启动采样,波形截断或多余的片段会落在45°相位附近;而正弦信号在45°处的瞬时值与有效值数值相等。这也就是45°起始采样所生成的有效值误差最小的主要原因。

3.3 提升精度的其他手段

除此之外,还有多种方案可进一步提升测量精度,例如零点漂移的实时校准,以抵消元件温漂引起的零点漂移;低通滤波滤除高频扰动,以降低小信号时高频干扰信号对测量结果的影响;过采样技术以提升AD采样的分辨率与精度等等。下面将对其一一讲解说明。

  1. 零点漂移的实时校准: 2.1 节所述的零偏校准属于预校准,设备完成出厂标定后,受环境温度变化影响,零偏补偿值会发生改变,由此产生零点漂移,造成预存的零偏校准参数失准,最终使得测量误差增大。电力系统工频信号本身基本不含直流分量,据此可在设备实时运行阶段,采集一个或 N 个完整整数周波的采样数据并求取平均值,以此实现零偏的实时更新校准。
    预校准是在厂内完成的,出厂零点精度好,但不能跟随温度、器件老化变化,工况改变后漂移误差会逐步显现。而实时零偏校准则是利用电网无直流分量的特点,在线更新零偏,可动态抑制温度漂移,现场适应性强,但受到输入扰动的影响,精度偏差,且会占用部分算力。
  2. 低通滤波:如2.1 节所示,高频干扰与有效信号为均方根叠加关系。当有效信号幅值远大于干扰幅值时,干扰对有效信号计算的影响可以忽略;然而当干扰与有效信号处于同一数量级,那其测量误差则不可忽略,此时需要对高频干扰进行滤除。可选择滑动均值滤波,也可设计 IIR 低通滤波器实现噪声抑制。IIR 低通滤波器通常需要浮点运算,运算开销相对较大,嵌入式采集场景更推荐滑动窗口均值滤波,即对每 n 个采样点求取一次平均值(n=2~4)。
  3. 过采样:过采样即采用远高于奈奎斯特频率的采样速率采集信号,通过对多次采样结果求取算术平均,以此提升 ADC 有效位数,抑制随机噪声带来的测量误差。该方案无需修改硬件电路,依靠软件处理即可抑制白噪声,改善小信号条件下的采样精度。但过采样仅对随机高斯噪声生效,无法消除电路固有的零偏失调、比例误差以及谐波干扰;同时采样点数成倍增加,采样耗时随之变长,会占用更多 MCU 算力,对系统实时性造成一定影响,工程应用中需要在测量精度与响应速度之间做权衡。

许多MCU的内部是支持ADC硬件过采样功能,无需软件手动累积多点数据,由硬件自动完成多次采样与求和平均。以HC32F460 芯片为例,寄存器 ADC_CR0 中的 AVCNT 2:0 位即为硬件平均控制位,可配置 ADC 内部的采样累加次数,硬件直接输出平均后的结果。

相关推荐
今天AI了吗2 小时前
精细化落地教程:TimechoAI调参标准+数据清洗规范+误差归因+阈值适配全维度指南
大数据·人工智能·算法
zephyr053 小时前
从递归到迭代:二叉树非递归前中后序遍历详解
算法
Dr.kangder3 小时前
嵌入式总线设备解析——TTE总线应用与实践
开发语言·网络·算法·嵌入式·多任务·同步机制
Hi李耶3 小时前
【LeetCode】557.反转字符串中的单词 III
算法·leetcode·职场和发展
深蓝学院3 小时前
机器人学习算法五大体系详解:模仿、强化、多模态、持续学习……
算法·机器人
2401_858286114 小时前
OS82.【Linux】设计线程池
java·linux·运维·服务器·开发语言·算法·线程池
Epiphany.5564 小时前
找到所有好字符串(记忆化搜索+KMP)(里面含KMP模板,用来入门)
算法
坚持编程的菜鸟4 小时前
模拟实现strncpy
c语言·算法·模拟实现strncpy
深圳市快瞳科技有限公司6 小时前
个体识别、行为解读、健康管理:多模态宠物AI大模型的场景化落地
人工智能·算法·计算机视觉·大模型·多模态·宠物·宠物ai识别