拓冰建站拓冰建站
首页 / 资讯中心 / 正文

单相电参数测量仪设计:真有效值、功率因数与同步采样

简介这份文档是2008年全国大学生电子设计竞赛中「单相电参数测量仪」的完整设计报告面向电子、嵌入式方向的参赛学生与指导教师可用于赛前方案论证参考与电参数测量类课程设计借鉴。压缩包内共1个doc文件约1.13MB完整保留了论文式的方案比较、芯片选型与系统实现论述。内容以高精度电表集成电路CS5463为计量核心、C8051F005单片机为控制核心依次展开总体方案的对比论证、单片机选型、采集与信号调理、计量、控制、语音报警、通信等模块设计并给出预置电量设置、分时段计量、超限保护、打印及上位机通信等扩展功能附有济南大学黄明健教授撰写的专家点评与中英文摘要。读者可从中获取硬件框图、参数计算公式、两种技术路线优劣分析与精度达标验证思路理解集成化、智能化电参数测量设备的设计脉络同时注意到插图表格标注规范方面的评审意见。目前已有281人学习。1. 单相电参数测量仪为什么被电赛反复出成照妖镜全国大学生电子设计竞赛里单相电参数测量仪是个每隔几年就换个包装回来的题有时叫数字式工频有效值测量仪有时叫简易功率分析仪。它看着朴素——220V 插座进去屏幕上报出电压有效值、电流有效值、有功功率、功率因数和频率。但真正上手会发现这道题卡的是模拟前端、采样时序、数字滤波和校准四件事的合力。做惯单片机的同学常死在两处一是把正弦波有效值直接拿峰值除以根号二遇到可控硅调光、开关电源这类非正弦负载立刻崩盘二是忽略互感器带来的相位偏移电压电流单看都准功率因数却差出零点零几。这道题适合会一点单片机和运放、想把从传感器到读数整条链路走一遍的在校生也适合想复盘测量类系统设计边界的工程师。它考的从来不是某一颗芯片会不会用而是你知不知道自己这套链路的误差从哪来、能压到多少。2. 单相电参数测量仪的原理与通道选型2.1 要测的五个量分别怎么定义先把定义钉死否则代码写到最后会发现功率这两个字被用混了。设电压瞬时值 u(t)、电流瞬时值 i(t)采样得到一周期内 N 个点电压有效值 $U_{rms}\sqrt{\frac{1}{N}\sum u_k^2}$这是真有效值跟波形是不是正弦无关电流有效值 $I_{rms}\sqrt{\frac{1}{N}\sum i_k^2}$有功功率 $P\frac{1}{N}\sum u_k i_k$是瞬时功率的平均视在功率 $SU_{rms}\cdot I_{rms}$功率因数 $PFP/S$频率 $f$ 由电压或电流的过零点间隔反推。关键在最后两个式子的差别$PF$ 只有在波形纯正弦、且电压电流都无相位差时才等于 $\cos\varphi$。一旦负载是非线性的$PF$ 和 $\cos\varphi$ 就是两码事题目若要求功率因数默认取 $P/S$你拿相位角去算 $\cos\varphi$ 就会对不上。这一条是很多人扣分的起点。提示不要用峰值检测法测有效值。非正弦波形的波峰因数可能到 2 甚至 3峰值法误差能到 40% 以上直接出局。2.2 电压通道电阻分压还是电压互感器两种路线都可以但适用场景不同。电阻分压最简单串上一串高阻值电阻把 220V 降到几百毫伏精度取决于电阻匹配和温漂。它的致命弱点是不隔离——电网的火线直接连到你的电路地调试时手一碰就出事接示波器也可能炸探头。做作品必须加隔离运放或用变压器。电压互感器常见的是 ZMPT107、ZMPT101B 这类微型电压互感器自带隔离输出是比例缩小的交流信号串一个采样电阻也叫负载电阻转成电压。代价是它本身有相移一般在 5° 到 20° 量级随频率和负载电阻变化这个相移必须在软件里补回来否则功率因数会错。选型的经验是作品要过安全这一关优先互感器只做台式实验、外部供电带隔离变压器电阻分压也能用而且要加共模干扰抑制。2.3 电流通道分流器、霍尔与电流互感器的取舍电流这条通道选型差别很大直接影响能不能测直流和能不能测小电流。方案隔离能测直流小电流精度相移典型场合分流电阻 运放否能高极小低侧采样直流/交流通吃电流互感器是不能一般有明显相移工频交流最常用霍尔电流传感器是能中小交直流通吃成本高罗氏线圈是不能低需积分大电流、高频电赛这类题基本在工频交流电流互感器是首选常见型号额定 5A/5mA 或 1000:1 的变比输出小电流经采样电阻转电压。要注意两点一是电流互感器二次侧不能开路开路会产生高压采样电阻必须焊牢二是它同样有相移且负载电阻越大相移越明显通常取 50Ω 到 200Ω。分流电阻方案在低侧采样时串在负载和地之间用运放做差分放大。优点是无相移、能测直流缺点是共模电压问题且没有隔离。若题目只要求交流我会优先互感器若要求测直流功率只能上分流器或霍尔。2.4 ADC 与主控内置还是外置采样率决定了你能测到多少次谐波。按奈奎斯特想分析到 21 次谐波约 1050Hz采样率至少要 2.1kHz工程上取 4kHz 以上才够。一个工频周期 20ms采 128 点的话采样率要 6.4kHz。STM32F103 这类主控的内置 12 位 ADC 最快能到 1Msps配合 DMA 双通道交替采样完全够用成本最低。但内置 ADC 有两个坑一是参考电压取自 VDDA若 VDDA 不稳读数跟着飘二是通道间存在采样串扰和微小时间偏差做相位测量时要留意。外置 ADC如 ADS1115、MCP3208的好处是参考电压可选、输入可差分、噪声低适合小信号。代价是速率和成本。我一般这样分测量精度要求优于 0.5% 的用外置差分 ADC 加基准源只是作品级、误差允许 2% 左右的STM32 内置 ADC 加 DMA 足够把参考电压单独用 TL431 稳住就行。信号调理部分别忘了直流偏置。ADC 只能测正电压交流信号要先抬到量程中点一般是 VDDA/2用电阻分压加基准加运放跟随实现。偏置电压的漂移会直接变成有效值误差所以要选低温漂的分压电阻或者在软件里做零点校准。3. 单相电参数测量的算法实现与代码3.1 同步采样为什么不能随便定采样率有效值公式里那个 $\frac{1}{N}\sum$ 要求采样窗口恰好是整数个工频周期否则会引入频谱泄漏算出来的有效值一会儿偏高一会儿偏低读数会跳。这就是同步采样问题。工频不是精确的 50.000Hz实际会在 49.5 到 50.5Hz 之间漂所以你没法用一个固定采样率永远对齐。三种做法硬件锁相环用电压过零触发 PLL 倍频得到采样时钟最准但电路复杂软件测频后动态调整定时器重装载值让 N 个采样点占满测得的一个周期实时性好固定采样率采多个周期再用插值或加窗修正简单但有残留误差。电赛作品里我推荐第 2 种。流程是先用过零检测测出当前周期 T算出采样间隔 Δt T/N把定时器 ARR 重装成对应值然后启动这一轮 N 点采样。// STM32 定时器动态设定采样率让 N 点恰好覆盖一个工频周期 // timer_clk 为定时器计数频率(Hz)period_us 为测得工频周期(微秒) #define SMP_N 128 void sync_sample_start(uint32_t timer_clk, uint32_t period_us) { // 每个采样点的间隔(以计数为单位) uint32_t ticks (uint32_t)((uint64_t)timer_clk * period_us / 1000000ULL / SMP_N); if (ticks 10) ticks 10; // 防止 ARR 过小导致中断风暴 TIM2-ARR ticks - 1; // 更新自动重装载值 TIM2-CNT 0; // 计数器清零避免相位跳变 dma_cnt 0; // 采样缓冲指针复位 HAL_ADC_Start_DMA(hadc1, adc_buf, SMP_N * 2); // 双通道 u/i 交错 }逻辑说明函数先由目标工频周期算出每个采样点的定时器计数间隔写进 ARR再清零计数器并启动 DMA 搬运 ADC 结果。这样每一轮采样窗口都贴合实际周期等同于软件同步。参数timer_clk是定时器时钟比如 72MHz 定时器经 72 分频后是 1MHzperiod_us是上一轮测得的周期初始值给 20000。ticks - 1是因为 STM32 的 ARR 从 0 计数。SMP_N*2是双通道u 和 i 交错存在adc_buf里。注意测频本身有延迟周期在变化时会出现一两轮的过渡。启动采样前先连续测三周期取平均抖动会小很多。3.2 真有效值的定点实现在 MCU 上算平方和用浮点最省心但如果你用的是没有 FPU 的 STM32F103浮点会拖慢速度。128 点双通道每周期算两次开方浮点也扛得住不必过度优化。但若是多点、多周期平均定点或查表更稳。#include math.h // 去除直流偏置后计算真有效值 // buf: 采样原始值数组 n: 点数 bias: 该通道零点(ADC值) // vref: ADC参考电压 full: ADC满量程(如4095) float calc_rms(const uint16_t *buf, int n, float bias, float vref, float full) { float sum 0.0f; for (int k 0; k n; k) { float v ((float)buf[k] - bias) * vref / full; // 转成电压并去偏置 sum v * v; } return sqrtf(sum / n); }逻辑说明循环里先把 ADC 原始码值换算成实际电压同时减掉通道零点bias这一步把直流偏置消掉否则交流信号叠加偏置后有效值会被抬高。然后累加平方最后除以点数开方。参数里bias是空载时该通道读到的平均码值必须在线校准vref和full决定电压换算比例vref 用万用表实测 VDDA 更准别照抄 3.3V。这里还要做一个比例系数校准算出来的电压除以分压/互感器变比才是原边实际值。变比误差、采样电阻误差都归到一个标定系数里两点校准解决。3.3 有功功率与功率因数功率不能拿两个有效值相乘必须逐点相乘再平均这一条是核心。// 逐点相乘求有功功率输入为已去偏置、已换算成电压电流的两个数组 float calc_power(const float *u, const float *i, int n) { float p 0.0f; for (int k 0; k n; k) { p u[k] * i[k]; } return p / n; }逻辑说明这里用的是瞬时功率平均法对每个采样点求 u·i累加后除以点数。它对非正弦波形同样成立前提是两路采样是同一时刻的——所以前面双通道 DMA 交错采样很关键如果两路之间有明显时间差会人为引入一个相位误差。参数n是点数u、i是已经去偏置换算后的物理量数组。算完 P、U、I 之后float S Urms * Irms; // 视在功率 float pf (S 0.0001f) ? (P / S) : 0.0f; // 功率因数防除零注意 PF 的符号。若负载含源比如带发电回馈或电容储能反向P 可能为负PF 也应为负但本题一般只测正功率负值大概率是相位补偿没调好或采样错位应该排查而不是取绝对值糊过去。3.4 频率与相位差的过零检测频率最直接的办法是测电压过零间隔。把去偏置后的电压序列找上升沿穿越零点记录两个上升沿之间的采样点数乘以采样间隔就是周期。为了抗干扰不要找一个点找连续两个点符号翻转且幅值超过阈值的位置再做线性插值。相位差就是电压和电流过零点的时间差换算成角度$$\varphi 360° \times \frac{\Delta t}{T}$$但要注意这个 $\varphi$ 里含了互感器的相移直接用 $\cos\varphi$ 当功率因数会错。更稳的做法是不用相位法算 PF而是用 3.3 的 P/S相位差只用于显示和辅助判断。若确实要报 $\cos\varphi$那就得在相位上减去标定时测出的固定偏移。4. 单相电参数测量仪的校准与误差控制4.1 两点校准零点与增益任何测量系统不校准都是漂的。单相电参数测量仪至少要做一个零点校准和一个增益校准。零点校准电压通道短接到地、电流通道空载各采一轮把平均值记为该通道的bias之后每次换算都减掉它。零点不校有效值里会混进一个正偏小电流时误差极大。增益校准用一个已知负载比如纯电阻箱作为基准读被测值和标准值之比作为标定系数。校准项操作写入参数影响电压零点输入短接bias_u小电压误差电流零点空载bias_i小电流误差电压增益加已知电压k_u整体比例电流增益加已知电流k_i整体比例相位偏移纯阻性负载phi_comp功率因数、P关键判断标准用纯电阻负载时P 应等于 U·IPF 应接近 1.000。如果不是 1说明相位没补干净。用纯电容或纯电感时 PF 应接近 0正负号反映超本文还有配套的精品资源点击获取
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门