基于 STM32 的配网变压器涌流抑制器设计与实现
配网变压器在空载合闸或故障恢复过程中,铁芯磁通饱和会产生数倍于额定电流的励磁涌流,轻则导致保护装置误动作,重则引发系统不稳定、缩短变压器寿命。本文基于 STM32F103C8T6 单片机设计了一套配网变压器涌流抑制器:EG8542 运放电路实时检测变压器电流,STM32 内置 ADC 采集电压数据,OLED12864 实时显示运行参数,用户可通过按键设置电流阈值------一旦检测到电流超过阈值,系统立即驱动 SRD-05V 电磁继电器切断回路,抑制涌流、保护设备。文章完整给出模块选型论证、硬件电路设计、软件流程与调试过程,可作为电力设备保护类毕业设计的参考方案。
一、系统功能总览
| 功能编号 | 功能名称 | 功能说明 |
|---|---|---|
| F1 | 电流实时检测 | EG8542 运放电路采样电流信号,经 ADC 转换得到实时电流值 |
| F2 | 电压实时检测 | 利用 STM32F103 内置 12 位 ADC 直接采集电压数据 |
| F3 | 参数阈值设置 | 用户通过按键模块设置电流、电压等参数的报警阈值 |
| F4 | 数据实时显示 | OLED12864 实时显示电压、电流数据与系统状态,便于监控 |
| F5 | 涌流抑制保护 | 电流超过预设阈值时自动触发继电器切断回路,保护变压器 |
| F6 | 持续循环监控 | 主循环持续采集、分析、响应,保障变压器安全稳定运行 |
二、核心模块选型对比
2.1 主控模块选型
| 对比项 | 方案1:STM32F103C8T6 | 方案2:NXP Kinetis K60 |
|---|---|---|
| 内核 | ARM Cortex-M3,主频 72 MHz | ARM Cortex-M4,主频 120 MHz,带 FPU |
| 存储 | 64 KB Flash + 20 KB SRAM | 256 KB Flash + 64 KB SRAM |
| 外设接口 | 3×SPI、2×I2C、3×USART、多路定时器/PWM | 4×SPI、4×I2C、4×UART、1×CAN |
| 功耗与成本 | 低功耗、价格低 | 性能高但功耗与成本均较高 |
本系统的任务以数据采集、阈值比较和继电器控制为主,属于中低复杂度应用,STM32F103C8T6 的处理能力绰绰有余,且开发工具(STM32CubeMX、Keil)与社区资源成熟,性价比明显更高。
选择方案1:STM32F103C8T6
2.2 电流检测模块选型
| 对比项 | 方案1:EG8542 运放电流检测 | 方案2:INA226 数字电流传感器 |
|---|---|---|
| 测量方式 | 运放放大采样电阻压降,模拟输出 | 内置 12 位 ADC,I2C 数字输出 |
| 精度特性 | 10 MHz 增益带宽积、10 pA 低输入偏置电流、高输入阻抗 | ±1% 测量精度 |
| 增益配置 | 外部电阻灵活设定增益,适应不同电流量程 | 软件校准 |
| 成本 | 低 | 高,极端条件下需软件补偿 |
EG8542 低偏置电流与低噪声特性保证了电流检测精度,增益可由外部电阻灵活配置,成本也低于 INA226,在预算有限的精密电流检测场景中是理想选择。
选择方案1:EG8542 运放电流检测
2.3 电压检测模块选型
| 对比项 | 方案1:STM32F103 内置 ADC | 方案2:ADS1115 高精度 ADC |
|---|---|---|
| 集成度 | 片上外设,无需额外硬件 | 需外接模块,增加电路复杂度 |
| 分辨率 | 12 位,支持多通道采样 | 16 位,内置 PGA,抗干扰强 |
| 成本 | 零额外成本 | 较高 |
系统对电压检测的精度要求在 12 位分辨率即可满足,使用内置 ADC 降低了系统复杂性与成本,开发也更便捷。
选择方案1:STM32F103 内置 ADC
2.4 数据显示模块选型
| 对比项 | 方案1:OLED12864 | 方案2:LCD2004 |
|---|---|---|
| 显示能力 | 128×64 自发光像素,高对比度、广视角 | 20×4 字符,分辨率低,不支持图形 |
| 背光 | 无需背光,暗处依然清晰 | 依赖背光,亮度受限 |
| 接口 | I2C/SPI,引脚占用少 | 并行接口,引脚多 |
| 功耗与耐用性 | 低功耗,无背光故障点 | 背光功耗高,高温高湿环境易退化 |
OLED12864 自发光特性带来鲜明清晰的显示效果,接口简单、功耗低、耐用性好,适合本系统的实时监控显示需求。
选择方案1:OLED12864
2.5 电路开关模块选型
| 对比项 | 方案1:SRD-05V 电磁继电器 | 方案2:SSR-25DA 固态继电器 |
|---|---|---|
| 负载能力 | 10 A,适合高功率设备 | 25 A,但大电流需额外散热 |
| 隔离与安全 | 控制端与负载端良好电气隔离 | 光耦隔离 |
| 切换速度 | 机械触点,速度较慢 | 无触点,切换速度快 |
| 成本 | 低 | 高 |
涌流抑制属于低频次控制动作,对切换速度要求不高,电磁继电器负载能力充足、隔离可靠、成本低,完全满足需求。
选择方案1:SRD-05V 电磁继电器
三、系统接线总表
系统以 STM32F103C8T6 最小系统(8 MHz 晶振 HSE + 32.768 kHz RTC 晶振 + 按键复位电路 + 3.3 V 供电)为核心:
| 模块 | 模块引脚 | 单片机引脚 | 说明 |
|---|---|---|---|
| EG8542 电流检测电路 | Vout | PA6(ADC2 输入通道) | 运放放大后的电流信号送入模拟输入 |
| +Vcc / −Vcc | 5V / GND | 运放供电 | |
| +IN / −IN | 接电流采样电阻上端 / 下端 | 采样电阻串联在电流路径中,压降与电流成正比 | |
| R_f(反馈电阻) | Vout 与 −IN 之间 | 设定运放增益 | |
| 电压检测 | 电压采样信号 | PA7(ADC2 输入通道) | 内置 ADC 直接采集电压 |
| OLED12864 | VCC / GND | 3.3V / GND | SSD1306 驱动,I2C 总线 |
| SCL | PB6 | I2C 时钟线 | |
| SDA | PB7 | I2C 数据线 | |
| 按键模块(阈值设置) | 信号端 | PB0~PB2 | 一端接 I/O,另一端接地,按下为低电平 |
| SRD-05V 继电器 | 线圈一端 | PB5(串 1 kΩ 限流电阻) | 高电平吸合,低电平释放 |
| 线圈另一端 | 5V | 线圈供电 | |
| COM / NO | 串入负载回路 | 高电平时触点闭合,实现回路通断控制 |
四、系统软件设计
4.1 主程序流程设计
系统上电后首先完成初始化:配置 ADC 寄存器(用于电压电流数据采集)、GPIO 寄存器(用于按键输入与继电器控制)、OLED 显示驱动。随后进入 while 主循环,循环执行以下流程:
int main(void)
{
System_Init(); // 时钟、ADC2、GPIO、I2C、OLED 初始化
while (1)
{
current = Current_Get(); // EG8542 采样 -> ADC2 均值滤波 -> 电流值
voltage = Voltage_Get(); // 内置 ADC 采集电压值
OLED_Show(current, voltage); // 实时显示运行参数
threshold = Key_Scan(); // 读取按键设定的电流阈值
if (current > threshold) // 电流超过预设阈值
{
Relay_On(); // 继电器吸合切断回路,抑制涌流
OLED_ShowAlarm(); // 显示报警信息
}
else
{
Relay_Off(); // 正常区间内保持回路接通
}
}
}
主循环持续运行,确保系统实时监控、快速响应,一旦电流越限立即切断,保障配网变压器安全稳定运行。
4.2 电流检测流程设计
电流检测程序按以下步骤执行:
-
将对应 GPIO 配置为模拟输入模式,接收 EG8542 运放输出信号;
-
激活 ADC2 时钟,选择时钟源并设置分频因子,使 ADC 工作在合适频率;
-
配置 ADC 为独立模式、单通道、非连续转换、无外部触发(软件触发),数据右对齐;
-
启动 ADC2,指定转换通道并设置合适的采样时间;
-
轮询转换完成标志位 ADC_FLAG_EOC,读取转换结果;
-
调用 Get_Adc2() 多次读取同一通道数据并求平均值,抑制噪声;
-
按
(ADC值 / 4095) × 3.3 V将平均值换算为电压值,再按运放增益与采样电阻换算为实际电流值。u16 Get_Adc2(u8 ch)
{
ADC_RegularChannelConfig(ADC2, ch, 1, ADC_SampleTime_239Cycles5);
ADC_SoftwareStartConvCmd(ADC2, ENABLE);
while (!ADC_GetFlagStatus(ADC2, ADC_FLAG_EOC));
return ADC_GetConversionValue(ADC2);
}float Current_Get(void)
{
u32 sum = 0;
for (u8 i = 0; i < N; i++) // 多次采样取均值,减少噪声影响
sum += Get_Adc2(ADC_CH_6);
float v = (sum / N) / 4095.0f * 3.3f; // 转换为电压值
return v / GAIN; // 按增益换算实际电流值
}
4.3 数据显示流程设计
OLED 显示程序基于 I2C(PB6=SCL、PB7=SDA)驱动 SSD1306:
- 配置 I2C 接口,初始化时钟速率与应答信号等基本参数;
- 发送初始化命令序列,配置显示模式、对比度、扫描方向、时钟,并开启充电泵,最后发送 0xAF 命令点亮屏幕;
- 设置显示起始坐标------屏幕分为 128 列(x 坐标)与 8 页(y 坐标),通过配置页地址与列地址精确定位显示区域;
- 调用 OLED_Fill(0x00) 循环遍历 0~7 页、0~127 列完成清屏;
- 通过 I2C 写入函数依次发送设备地址、寄存器地址与显示数据,每次传输等待应答信号确认;
- 按需调用字符串、字符显示函数,将电流值、电压值与阈值信息刷新到指定位置。
五、系统实现与测试
5.1 硬件焊接与调试
按设计方案依次焊接主控模块、电流检测模块、电压检测模块、数据显示模块与继电器模块,焊接时确保各模块引脚连接正确,避免短路或虚焊。调试阶段逐步上电测试,验证各模块功能是否正常,重点检查电流与电压检测模块的精度和响应速度,并使用万用表和示波器对关键信号进行测量,确保系统工作在正常范围。最后整体联调,确认系统稳定运行。
5.2 软件实现与测试
使用 Keil 5 编写与编译程序,通过 ST-Link 下载调试,设置断点、监视变量与内存,逐步验证程序逻辑。调试重点关注电流与电压检测算法的准确性和实时性,并通过模拟电流超限等异常情况,验证继电器触发逻辑是否可靠。调试中还优化了代码执行效率,减少不必要的资源占用,保证系统在高负载下仍能稳定运行。
5.3 功能测试结果
| 测试项目 | 测试方法 | 测试结果 |
|---|---|---|
| 电流检测精度 | 模拟不同负载条件下的电流变化,与万用表读数对比 | 检测值与实际值一致,精度与响应速度满足要求 |
| 电压检测功能 | 采集不同电压信号并与示波器测量值对比 | 数据采集准确、稳定 |
| 阈值设置 | 按键调整电流阈值并观察 OLED 显示 | 阈值设置响应正确、显示清晰 |
| 涌流抑制保护 | 人为使电流超过预设阈值 | 继电器迅速切断回路,保护动作可靠 |
| 数据显示 | 观察 OLED 显示效果与刷新速度 | 显示正常,可实时监控系统状态 |
| 长时间运行 | 系统连续运行测试 | 复杂环境下稳定运行,各项功能达到设计要求 |
六、总结
本文设计并实现了一套基于 STM32F103C8T6 的配网变压器涌流抑制器系统。系统通过 EG8542 运放电路与内置 ADC 实时采集变压器的电流与电压数据,OLED12864 实时显示运行参数,用户可通过按键设置阈值;当电流超过预设阈值时,系统自动触发 SRD-05V 电磁继电器切断回路,有效抑制涌流、保护设备安全。系统整体设计合理、功能实现稳定,能够有效满足配网变压器涌流抑制的需求,具有较高的实用性与可靠性,也为电力设备保护的智能化升级提供了可行的技术路径。