扫码加入

  • 方案介绍
  • 相关推荐
申请入驻 产业图谱

基于单片机的架空线路接地故障检测与报警系统

5小时前
50
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

1 基于单片机的架空线路接地故障检测与报警系统

点击链接下载protues仿真设计资料:https://download.csdn.net/download/m0_51061483/92081476

1.1 项目背景与系统概述

  1. 架空配电线路由于长期暴露在户外环境中,容易受到雷击、树枝触碰、绝缘老化、导线断股、瓷瓶污闪、鸟害等因素影响,发生单相接地、间歇性接地或多点接地等故障。接地故障若不能及时发现,会导致线路损耗增加、电能质量下降、设备过热、保护误动作甚至扩大成短路事故,影响供电可靠性。
  2. 传统接地故障巡检往往依赖人工排查或继电保护系统的间接判断,但在配电网中尤其是10kV及以下架空线路,分支多、范围广,现场定位困难,往往需要大量人力物力。为提升故障定位效率,工程上普遍在架空线路上安装接地故障指示器(Fault Indicator),用于在故障发生时迅速发出声光提示,辅助巡线人员快速定位故障区段。
  3. 本设计以单片机MCU)为核心控制器,构建“接地故障电流采集 + 矢量和误差判断 + 声光/翻牌报警 + 光感应昼夜切换”的一体化检测与报警系统。系统实时采集三相电流(或零序电流等效量),依据三相电流矢量和理论为零的原理,计算“当前误差”,并与用户设定的“阈值误差”进行比较,当误差超过阈值即判断为接地故障并触发报警。
  4. 系统引入光感应器实现昼夜自适应报警策略:
    1. 白天环境光照强,指示器以机械翻牌或高可见度标志显示报警,便于远距离目视识别;
    2. 夜间光照低,系统切换为发光报警(高亮LED或闪烁灯),保证夜间可视性;
    3. 声音报警(蜂鸣器)可作为补充,增强提醒效果。
  5. 显示交互方面,系统设置显示屏(例如LCD1602数码管+按键设置),用于在现场直接观察运行参数:
    1. 第一行显示“设置误差阈值”(SetErr);
    2. 第二行显示“当前误差”(CurErr);
    3. 当CurErr > SetErr时进入报警状态,显示报警标志并驱动翻牌/灯光。
  6. 本系统的核心思想是:
    1. 三相系统理想平衡时,三相电流幅值相等、相位相差120°,矢量和为0;
    2. 在实际配电线路中,即使无故障,三相也存在不平衡与谐波,矢量和不可能严格为0,因此必须允许一定“误差范围”;
    3. 当发生接地故障时,零序电流增大,三相矢量和偏离明显,误差显著增大;
    4. 以“误差阈值 + 滞回 + 时间确认”的策略判断故障,比单次瞬时判断更可靠。

2 功能设计

2.1 接地电流采集功能

  1. 接地故障检测系统最基础的能力是对线路电流变化的捕捉。由于接地故障通常伴随零序电流或不平衡电流上升,因此系统需要采集三相电流并进行处理。
  2. 采集方式可采用:
    1. 三个电流互感器(CT)分别采集A/B/C相电流;
    2. 或采用零序电流互感器(ZCT)直接测量零序电流(适合只判断接地电流大小,但题目强调矢量和原理,因此推荐三相采集)。
  3. 采集电流后需转换为单片机可处理的电压信号:
    1. 互感器二次电流通过负载电阻采样电阻)转换为电压;
    2. 电压信号经整流/滤波/放大/偏置后进入ADC采样;
    3. 或使用外置高精度ADC采集波形并进行数字运算。
  4. 为满足野外长期运行与稳定性,采样电路必须具有:
    1. 过压保护与限幅(避免雷击或浪涌损坏ADC);
    2. 滤波抑制高频干扰;
    3. 温漂小、长期稳定;
    4. 适当隔离以保证人身安全与系统可靠性。

2.2 接地故障判断与报警功能

  1. 系统核心判断逻辑是计算三相电流的矢量和误差。
  2. 当检测到接地故障时,系统驱动接地故障指示器报警:
    1. 触发蜂鸣器或间歇声响;
    2. 触发翻牌机构(白天)或灯光闪烁(夜间);
    3. 指示灯持续显示故障状态,直到人工复位或故障消除后自动复归(可选)。
  3. 报警逻辑必须具备抗误判机制:
    1. 瞬时误差超限不立即报警,而是连续超限达到时间阈值(如1秒或2秒)才报警;
    2. 在误差接近阈值时加入滞回(例如报警阈值SetErr,解除阈值SetErr - Hys);
    3. 对谐波或冲击电流引起的误差短时变化进行滤波或平均。

2.3 光感应昼夜切换报警功能

  1. 由于架空线路指示器通常安装在杆塔附近或导线上,巡线人员在远距离观察时对可视性要求高,而昼夜环境差异很大。
  2. 系统加入光感应器(光敏电阻LDR或光电二极管等),实时判断环境光照:
    1. 白天模式:优先翻牌(机械指示牌翻转露出高亮颜色或反光标志),不强制开灯或降低灯光频率,以节省能耗;
    2. 夜间模式:翻牌依旧保持(若已翻牌不影响),同时开启高亮LED闪烁提示,提高远距离识别能力;
    3. 夜间可采用低功耗闪烁策略,例如1Hz或2Hz闪烁,兼顾可视性与续航。
  3. 光感应必须有滞回与延时,避免黄昏或车灯照射导致模式频繁切换。

2.4 参数设置与显示反馈功能

  1. 系统允许用户设置“误差阈值SetErr”,用于适配不同线路、不平衡程度与负载特性。
  2. 显示屏内容固定为两行:
    1. 第一行:显示设置误差阈值,如“SET: 0.80A”或“SET: 120”
    2. 第二行:显示当前误差,如“CUR: 0.35A”或“CUR: 85”
  3. 当CurErr > SetErr时:
    1. 显示屏提示“FAULT”或闪烁符号;
    2. 指示灯/翻牌/蜂鸣器启动;
    3. 可以记录故障发生时间与最大误差(扩展功能)。
  4. 由于三相理论矢量和为0只是理想模型,实际存在不平衡误差,因此系统需要合理设置阈值并允许现场调整。

3 实现原理与算法说明

3.1 三相电流矢量和为零的理论基础

  1. 对于理想对称三相系统:
    1. 三相电流幅值相等:|IA| = |IB| = |IC|
    2. 相位相差120°:IA相位0°,IB为-120°,IC为+120°
  2. 三相电流的矢量和为:
    1. IA + IB + IC = 0
  3. 这意味着在理想平衡情况下,系统不产生零序电流。

3.2 实际系统中的误差来源

  1. 在真实配电网中,负载往往不平衡(单相负载多),导致三相电流幅值不相等。
  2. 线路参数不完全对称、互感器误差、采样误差、谐波电流等因素都会让矢量和不为0。
  3. 因此系统必须允许一定误差范围:
    1. 正常误差:由不平衡与噪声导致,小幅波动;
    2. 故障误差:接地故障导致零序电流显著上升,误差明显增大。

3.3 误差定义与计算思路

  1. 理想情况下需要获取每相电流的幅值与相位,才能计算真正意义上的矢量和:
    1. Err = | IA∠θA + IB∠θB + IC∠θC |
  2. 在单片机系统中若要计算相位,需要采样波形并进行相位估计(例如零交叉检测、傅里叶变换或锁相算法),实现复杂度较高。
  3. 在工程上,为降低计算复杂度,可采用近似方式:
    1. 直接测量零序电流(ZCT),将其作为误差量CurErr;
    2. 或对三相电流进行同步采样,通过离散正交解算得到每相基波矢量,再求和。
  4. 为体现题目强调的矢量和原理,本设计采用“同步采样 + 基波正交解算”的思路进行软件实现,并将误差量定义为三相基波矢量和幅值。

3.4 基波正交解算(简化傅里叶)

  1. 对于50Hz(或60Hz)工频信号,可在一个周期内采样N点,通过与正弦、余弦基准相乘求和得到I/Q分量:
    1. I = Σ x(n)*cos(ωn)
    2. Q = Σ x(n)*sin(ωn)
  2. 基波幅值与相位可由I/Q得到:
    1. Amp = sqrt(I^2 + Q^2)
    2. Phase = atan2(Q, I)
  3. 分别计算三相的I/Q分量后即可形成三相矢量,并进行矢量求和:
    1. SumI = IA_I + IB_I + IC_I
    2. SumQ = IA_Q + IB_Q + IC_Q
    3. CurErr = sqrt(SumI^2 + SumQ^2)
  4. 为提高稳定性,可对CurErr做滑动平均。

4 系统电路设计

4.1 电路总体结构与分模块设计

  1. 本系统电路结构可划分为:
    1. 三相电流采集与信号调理模块
    2. ADC采样模块(单片机内置或外置)
    3. MCU控制与运算模块
    4. 光感应器采集模块
    5. 报警输出模块(翻牌驱动、发光驱动、蜂鸣器)
    6. 显示与按键设置模块
    7. 电源模块与防雷抗干扰模块
  2. 架空线路应用环境复杂,电路设计需重点考虑:
    1. 高压隔离与安全距离(CT/采样与低压控制隔离);
    2. 防雷与浪涌保护(TVS、气体放电管、RC吸收);
    3. 低功耗设计(很多指示器依赖电池或太阳能);
    4. 宽温工作与防潮防尘(外壳与三防处理)。

4.2 三相电流采集模块

4.2.1 互感器(CT)选型与安装方式

  1. 三相电流采集通常采用穿心式或开合式电流互感器:
    1. 穿心式精度高、结构牢固,适合新装或改造;
    2. 开合式便于现场安装维护,适合存量线路加装。
  2. CT输出为二次电流,通常为毫安到数百毫安范围,需要通过负载电阻转换为电压。
  3. CT必须考虑饱和问题:在故障大电流时可能饱和,导致波形畸变,但对接地故障检测(一般零序电流较小)影响相对可控。

4.2.2 采样电阻与电压转换

  1. CT二次电流通过采样电阻Rburden转换为电压:
    1. V = I_secondary * Rburden
  2. 采样电阻要求:
    1. 精度高(0.1%或更好);
    2. 温漂低;
    3. 功率满足故障情况下短时发热。
  3. 为保护后级,采样电阻后可加限幅器件(如双向TVS或钳位二极管)。

4.2.3 信号调理与偏置

  1. 单片机ADC通常只能采集0~Vref范围电压,而CT输出电压是交流信号,需偏置到中点:
    1. 使用电阻分压产生Vmid(如1.65V)
    2. 将交流信号通过电容耦合叠加到Vmid
  2. 需加入低通滤波:
    1. 抑制高频干扰与采样噪声
    2. 避免开关噪声、雷击感应导致ADC异常。

4.3 ADC采样模块

4.3.1 采样方式与精度要求

  1. 若使用单片机内置ADC,需要满足:
    1. 至少3通道同步或快速轮询采样;
    2. 采样速率足以覆盖工频信号(建议每相每周期至少64点或128点);
    3. 分辨率建议12位及以上,便于误差计算更稳定。
  2. 若单片机ADC能力不足,可采用外置ADC:
    1. 多通道同步采样ADC(如同时采三相)
    2. 通过SPI与MCU通信。
  3. 对于接地故障误差判断,重点不在绝对电流精度,而在“误差变化趋势”,因此系统在硬件上强调稳定一致性与抗干扰比追求极限精度更重要。

4.3.2 采样同步问题

  1. 若三相不同时刻采样,会引入相位误差,影响矢量和计算。
  2. 解决方式:
    1. 使用同步采样ADC;
    2. 或采用高速ADC轮询采样并确保三相采样时间间隔远小于工频周期(20ms),例如总间隔小于100us。
  3. 软件中可进行相位补偿,但实现复杂,建议硬件上尽量同步。

4.4 MCU控制与运算模块

4.4.1 MCU选型与资源需求

  1. MCU需要具备:
    1. 足够ADC通道或SPI接口;
    2. 定时器用于采样节拍(精确采样频率);
    3. GPIO用于控制报警输出(翻牌驱动、LED、蜂鸣器);
    4. I2C/并口用于显示屏;
    5. 低功耗模式与唤醒机制(若需电池供电)。
  2. MCU需具备较强计算能力以完成I/Q解算与平方根运算,若是传统8位MCU可采用定点运算或查表简化,若是32位MCU则可直接浮点运算。

4.4.2 时钟与看门狗

  1. 系统应使用稳定时钟源保证采样频率准确,避免频率漂移影响I/Q解算结果。
  2. 应启用看门狗,防止野外干扰导致程序跑飞,使设备长期可靠运行。

4.5 光感应器采集模块

4.5.1 光敏电阻(LDR)方案

  1. 光敏电阻在光照强时阻值下降,光照弱时阻值上升,可与电阻分压形成电压信号进入ADC。
  2. 为避免抖动,需要:
    1. RC滤波平滑光照变化;
    2. 软件滞回(白天阈值与夜晚阈值不同);
    3. 延时确认(连续满足条件一段时间才切换模式)。

4.5.2 光电二极管/光电晶体管方案

  1. 光电器件响应更快、线性更好,但需要偏置与放大,电路稍复杂。
  2. 对本系统而言,LDR方案简单可靠,足够满足昼夜识别需求。

4.6 报警输出模块(翻牌 + 发光 + 蜂鸣器)

4.6.1 翻牌机构驱动

  1. 白天翻牌报警通常由电磁铁或小电机驱动翻牌机构实现:
    1. 电磁铁吸合翻转标志牌
    2. 断电后机械保持翻转状态
  2. 驱动电路需:
    1. MOSFET三极管扩流(电磁铁电流较大)
    2. 续流二极管抑制反向电动势
    3. 驱动时间控制(例如吸合200ms~500ms即可翻牌)
  3. 翻牌结构可采用机械锁存,翻牌后不需持续供电,适合低功耗应用。

4.6.2 夜间发光报警

  1. 夜间采用高亮LED或闪烁灯提示,驱动方式:
    1. MCU直接驱动小功率LED(串限流电阻
    2. 或使用MOSFET驱动高亮灯带/大功率LED
  2. 采用闪烁方式更醒目且省电,可设定1Hz或2Hz闪烁。

4.6.3 蜂鸣器报警

  1. 蜂鸣器可用有源蜂鸣器,驱动简单。
  2. 可设置持续或间歇报警,工程上常用间歇报警减少噪音与功耗。
  3. 蜂鸣器同样建议用三极管驱动,避免直接由IO供电。

4.7 显示与按键设置模块

4.7.1 显示屏选型

  1. 常用LCD1602显示两行字符,刚好满足“第一行显示设置误差、第二行显示当前误差”的需求。
  2. LCD1602可采用4位并口模式或I2C扩展模块,节省IO。

4.7.2 参数设置按键

  1. 至少需要三个按键:
    1. SET:进入设置/确认
    2. UP:阈值增加
    3. DOWN:阈值减少
  2. 按键需消抖,并可实现长按加速,提高现场调整效率。
  3. 参数可保存到EEPROM或Flash,避免掉电丢失。

4.8 电源模块与防雷抗干扰设计

4.8.1 供电方式

  1. 架空线路设备常见供电方式:
    1. 电池供电(锂电池/干电池)
    2. 太阳能+电池
    3. CT取电(通过线路电流感应取能)
  2. 本系统可根据项目环境选择供电方式,但无论哪种方式都要保证:
    1. MCU与传感器供电稳定;
    2. 报警动作瞬间电流足够(翻牌电磁铁/高亮LED)。

4.8.2 防雷与浪涌保护

  1. 架空线路环境必须重点防雷:
    1. 传感器输入端加TVS
    2. 电源端加TVS与保险丝
    3. 必要时加气体放电管与共模电感
  2. PCB设计应遵循:
    1. 强弱电分区
    2. 模拟地与数字地分区单点连接
    3. 关键采样走线短、远离开关驱动线。

5 程序设计

5.1 软件总体架构

  1. 软件采用模块化结构,主要包括:
    1. 系统初始化模块
    2. 三相采样与数据缓存模块
    3. I/Q正交解算模块(误差计算)
    4. 阈值比较与故障判定模块
    5. 报警控制模块(翻牌/灯光/蜂鸣器)
    6. 光照判断模块(昼夜模式)
    7. 显示与按键设置模块
    8. 数据滤波与防误判模块(平均、滞回、延时确认)
  2. 软件运行节拍建议:
    1. 定时器中断负责按固定采样率采样三相电流
    2. 主循环负责周期计算误差与刷新显示
    3. 报警输出与光照判断可在100ms或200ms周期更新
  3. 系统状态定义:
    1. NORMAL:正常监测
    2. FAULT_PENDING:疑似故障(误差超限计时)
    3. FAULT_ALARM:故障报警锁存
    4. RESET_WAIT:等待人工复位或故障恢复(可选)

5.2 系统初始化模块

5.2.1 初始化内容

  1. 时钟与GPIO初始化
  2. ADC初始化与采样通道配置(A/B/C相电流、光照)
  3. 定时器初始化(采样定时器、系统节拍定时器)
  4. LCD初始化
  5. 阈值参数读取(从EEPROM/Flash加载SetErr)
  6. 报警输出初始化(翻牌驱动、LED、蜂鸣器关闭)
  7. 看门狗初始化

5.2.2 初始化代码示例

void System_Init(void)
{
    Clock_Init();
    GPIO_Init();
    ADC_Init();
    Timer_Sample_Init();     // 采样定时器
    Timer_Tick_Init();       // 系统节拍
    LCD_Init();
    SetErr_Load();
    Alarm_Output_Init();
    Watchdog_Init();
}

5.3 三相电流采样模块

5.3.1 采样频率与采样点数

  1. 工频50Hz周期为20ms,若每周期采样128点,则采样频率约为6.4kHz。
  2. 对I/Q解算而言,64点/周期也可以得到较好效果,采样率约3.2kHz,能降低运算量。
  3. 本系统可采用固定采样点数N=64,平衡精度与计算量。

5.3.2 数据缓存结构

  1. 使用环形缓冲区保存一周期三相采样数据:
    1. ia[N]、ib[N]、ic[N]
  2. 当缓存填满一周期后触发一次误差计算。

5.3.3 采样代码示例

#define N 64

volatile uint16_t ia[N], ib[N], ic[N];
volatile uint8_t  sampleIndex = 0;
volatile uint8_t  frameReady = 0;

void Sample_ISR(void)   // 定时器中断,固定频率触发
{
    ia[sampleIndex] = ADC_Read(ADC_CH_IA);
    ib[sampleIndex] = ADC_Read(ADC_CH_IB);
    ic[sampleIndex] = ADC_Read(ADC_CH_IC);

    sampleIndex++;
    if(sampleIndex >= N)
    {
        sampleIndex = 0;
        frameReady = 1; // 一帧采样完成
    }
}

5.4 I/Q正交解算与误差计算模块

5.4.1 正交基准表

  1. 为降低运算量,预先生成cos/sin查表数组(长度N),每次直接查表。
  2. 对于8位MCU建议使用定点表;对于32位可直接float表。

5.4.2 I/Q计算与矢量和

  1. 将ADC采样值减去偏置(Vmid对应的ADC中值),得到交流分量。
  2. 分别计算三相的I/Q:
    1. IA_I, IA_Q
    2. IB_I, IB_Q
    3. IC_I, IC_Q
  3. 计算矢量和误差:
    1. SumI = IA_I + IB_I + IC_I
    2. SumQ = IA_Q + IB_Q + IC_Q
    3. CurErr = sqrt(SumI^2 + SumQ^2)
  4. 为增强稳定性,对CurErr做滑动平均或指数滤波。

5.4.3 计算代码示例(浮点示意)

float cosLUT[N];
float sinLUT[N];

static float CurErr = 0.0f;
static float ErrFilt = 0.0f;

float Calc_IQ(const uint16_t *x, float *I, float *Q)
{
    float i = 0, q = 0;
    for(int n=0;n<N;n++)
    {
        float v = (float)x[n] - 2048.0f; // 假设12位ADC中点
        i += v * cosLUT[n];
        q += v * sinLUT[n];
    }
    *I = i;
    *Q = q;
    return 0;
}

float Calc_Err(void)
{
    float IA_I, IA_Q, IB_I, IB_Q, IC_I, IC_Q;
    Calc_IQ((uint16_t*)ia, &IA_I, &IA_Q);
    Calc_IQ((uint16_t*)ib, &IB_I, &IB_Q);
    Calc_IQ((uint16_t*)ic, &IC_I, &IC_Q);

    float SumI = IA_I + IB_I + IC_I;
    float SumQ = IA_Q + IB_Q + IC_Q;

    CurErr = sqrtf(SumI*SumI + SumQ*SumQ);

    // 低通滤波
    ErrFilt = ErrFilt * 0.85f + CurErr * 0.15f;
    return ErrFilt;
}

5.5 阈值设置与比较模块

5.5.1 SetErr与CurErr定义

  1. SetErr为用户设置的误差阈值,可用“电流等效值”或“相对误差百分比”表示。
  2. CurErr为实时计算误差,经滤波后用于判定。

5.5.2 超限确认与滞回

  1. 避免瞬时超限误判,采用计数确认:
    1. CurErr > SetErr连续超过K次(例如K=5,对应1秒)才报警。
  2. 解除报警采用滞回:
    1. CurErr < SetErr - Hys持续一段时间才解除(若支持自动复归)。
  3. 对于接地故障指示器通常需要锁存,直到人工复位,因此系统可设计为:
    1. 报警触发后保持翻牌与灯光状态
    2. 清除需要按键复位或断电复位。

5.5.3 判定代码示例

static float SetErr = 1200.0f; // 示例阈值
static float Hys = 100.0f;

static uint8_t overCnt = 0;
static uint8_t fault = 0;

void Fault_Judge(float err)
{
    if(!fault)
    {
        if(err > SetErr)
        {
            if(overCnt < 10) overCnt++;
            if(overCnt >= 5) fault = 1;  // 连续5次超限判定故障
        }
        else
        {
            if(overCnt > 0) overCnt--;
        }
    }
    else
    {
        // 锁存报警:这里不自动解除
        // 若需要自动解除,可加入err < SetErr - Hys的判断
    }
}

5.6 光照判断与昼夜模式模块

5.6.1 模式切换原则

  1. 白天:光照值大于DayTh,进入DAY模式。
  2. 夜间:光照值小于NightTh,进入NIGHT模式。
  3. DayTh > NightTh形成滞回带,避免频繁跳变。
  4. 模式切换需延时确认(例如连续3秒满足条件才切换)。

5.6.2 示例代码

typedef enum { MODE_DAY, MODE_NIGHT } LightMode_t;
static LightMode_t lightMode = MODE_DAY;

static uint16_t DayTh = 2500;
static uint16_t NightTh = 1800;
static uint8_t lightCnt = 0;

void Light_Task_200ms(void)
{
    uint16_t luxAdc = ADC_Read(ADC_CH_LUX);

    if(lightMode == MODE_DAY)
    {
        if(luxAdc < NightTh)
        {
            if(lightCnt < 20) lightCnt++;
            if(lightCnt >= 10) { lightMode = MODE_NIGHT; lightCnt = 0; }
        }
        else lightCnt = 0;
    }
    else
    {
        if(luxAdc > DayTh)
        {
            if(lightCnt < 20) lightCnt++;
            if(lightCnt >= 10) { lightMode = MODE_DAY; lightCnt = 0; }
        }
        else lightCnt = 0;
    }
}

5.7 报警控制模块(翻牌/发光/蜂鸣器)

5.7.1 报警动作逻辑

  1. 当fault=1时执行报警:
    1. 白天:翻牌动作触发一次并保持翻牌状态
    2. 夜间:开启LED闪烁
    3. 蜂鸣器可持续或间歇鸣叫
  2. 若翻牌采用电磁锁存结构,翻牌只需短时驱动即可节省能耗。
  3. LED闪烁与蜂鸣器节奏可由定时器节拍实现。

5.7.2 示例代码

static uint8_t flipDone = 0;

void Alarm_Control_100ms(void)
{
    if(fault)
    {
        if(lightMode == MODE_DAY)
        {
            if(!flipDone)
            {
                Flip_Drive_On();
                Delay_ms(300);
                Flip_Drive_Off();
                flipDone = 1;
            }
            LED_Off(); // 白天可关闭灯光节能
        }
        else
        {
            LED_Blink(); // 夜间闪烁
        }

        Buzzer_On(); // 持续报警
    }
    else
    {
        flipDone = 0;
        LED_Off();
        Buzzer_Off();
    }
}

5.8 显示与按键设置模块

5.8.1 显示要求实现

  1. 第一行显示设置误差:
    1. “SET:xxxx”
  2. 第二行显示当前误差:
    1. “CUR:xxxx”
  3. 若故障触发,可在第二行末尾显示“ALM”或“!”。

5.8.2 显示代码示例

char line1[17];
char line2[17];

void Display_Update(void)
{
    snprintf(line1, sizeof(line1), "SET:%6.1f    ", SetErr);
    snprintf(line2, sizeof(line2), "CUR:%6.1f %s ", ErrFilt, fault ? "ALM" : "   ");

    LCD_SetCursor(0,0);
    LCD_Print(line1);
    LCD_SetCursor(0,1);
    LCD_Print(line2);
}

5.8.3 阈值设置按键逻辑

  1. SET键进入设置模式,UP/DOWN调整SetErr。
  2. 长按加速(例如每200ms递增一次)。
  3. 退出设置后保存到EEPROM,掉电不丢失。
void Key_Setting_Task(void)
{
    if(Key_Set_Pressed())
    {
        Enter_Set_Mode();
    }

    if(InSetMode)
    {
        if(Key_Up_Pressed())   SetErr += 10.0f;
        if(Key_Down_Pressed()) SetErr -= 10.0f;
        if(SetErr < 0) SetErr = 0;
        if(SetErr > 9999) SetErr = 9999;

        if(Key_Set_LongPress()) 
        {
            Save_SetErr();
            Exit_Set_Mode();
        }
    }
}

5.9 主循环与任务调度模块

5.9.1 调度策略

  1. 采样中断以固定频率采样三相电流。
  2. 当frameReady=1时,主循环进行误差计算与判定。
  3. 每100ms更新报警输出与显示,每200ms更新光照模式。

5.9.2 主程序框架示例

int main(void)
{
    System_Init();
    while(1)
    {
        Watchdog_Feed();

        if(frameReady)
        {
            frameReady = 0;
            float err = Calc_Err();
            Fault_Judge(err);
        }

        Light_Task_200ms();
        Alarm_Control_100ms();
        Key_Setting_Task();
        Display_Update();
    }
}

6 误差阈值设置与工程应用说明

6.1 为什么必须设置误差阈值

  1. 真实三相系统存在天然不平衡,三相电流矢量和不会严格为0。
  2. 若直接以“矢量和不为0即故障”会导致系统长期误报警。
  3. 通过设置误差阈值SetErr,允许正常不平衡范围内的波动,只有误差显著增大时才判断故障。
  4. SetErr应根据线路特性、负载类型、CT精度与现场经验调整:
    1. 负载越不平衡,SetErr应适当增大;
    2. 对重要线路可降低阈值提高灵敏度,但需防误报;
    3. 可在系统运行初期记录正常误差均值与波动范围,推荐阈值取“均值 + 3倍波动”作为初始值。

6.2 为什么误差拉大意味着线路出问题

  1. 接地故障会产生零序电流或不平衡电流显著增加。
  2. 矢量和误差会从“正常小波动”变成“显著大偏离”,且通常持续存在。
  3. 即使是间歇性接地,也会表现为误差周期性突增,因此系统可记录最大误差并锁存报警。

6.3 抗误判的关键措施

  1. 滤波:对CurErr做低通或滑动平均。
  2. 超限确认:连续超限一段时间才报警。
  3. 滞回:解除条件低于阈值一定量,避免反复报警。
  4. 传感器一致性校准:三相采样通道偏置与增益尽量一致。
  5. 光照判断滞回:防止昼夜切换频繁影响报警策略。

7 系统总结

7.1 设计成果总结

  1. 本系统以单片机为核心,通过三相电流采集与矢量和误差计算,实现对架空线路接地故障的实时检测。
  2. 系统采用“设置误差阈值SetErr + 当前误差CurErr”的方式进行故障判定,充分考虑实际三相系统不可能完全平衡的工程现实,避免误报警,同时能够在故障时快速识别误差突增并触发报警。
  3. 系统集成光感应器实现昼夜自适应报警策略:白天翻牌报警、夜间发光报警,提高巡线人员的工作效率与可视性,适应不同环境条件。
  4. 显示模块提供直观的阈值与实时误差反馈,便于现场调试与维护;报警模块提供声光/翻牌多种提醒方式,确保故障信息不被遗漏。
  5. 整体设计具有良好的工程可扩展性,可进一步加入:
    1. 故障记录与最大误差存储
    2. 无线通信上报(LoRa/NB-IoT
    3. GPS定位与区段联动
    4. 多级阈值判断(预警与告警分级)
    5. 低功耗与能量采集优化
  6. 通过本设计,能够构建一套适用于配电架空线路现场的接地故障检测与报警系统,为提高配电网运维效率与供电可靠性提供有效技术手段。

相关推荐