
简介本资源是一套完整的开关柜智能应急电源系统设计资料面向嵌入式软硬件开发者、电力物联网项目实践者及高校电子类专业高年级学生解决配电柜断电状态下的持续供电与远程监控难题。方案采用反激式开关电源220V AC输入/24V DC输出、STM32RT-Thread实时操作系统控制单元、NB-IoT通信模块与铅酸蓄电池协同工作支持市电优先供电、蓄电池自动活化、过放保护及电量数据上传至中移OneNet平台。资源包含613个文件以160个C源码、210个头文件h、51个编译中间文件o/d及6个Keil工程文件uvprojx/uvoptx为核心辅以原理图、PCB图、设计说明PDF及调试配置文件完整覆盖从硬件设计、固件开发到物联网接入的全链路实现。压缩包大小21.75MB结构清晰模块划分明确便于分层学习与二次开发。目前已有81人学习下载适合希望深入理解工业级电源管理、RTOS应用与窄带物联网集成的实践者。1. 这不是普通UPS一个嵌入式物联网应急电源的完整工程切片开关柜断电后监控设备黑屏、传感器失联、状态无法上传——这类问题在配电自动化现场反复出现但市面上多数应急电源只解决“供电”这个单点问题而本项目把「市电/电池双模供电管理」「蓄电池智能活化」「NB-IoT远程状态回传」三件事压进一块PCB且全部基于RT-Thread实时操作系统实现。它不依赖外部网关NB-IoT模块直连中移OneNet平台不靠人工巡检通过红外遥控或定时策略自动执行蓄电池活化更关键的是反激式电源与MCU、通信模块采用物理隔离供电路径——拔掉NB模块STM32仍能持续运行并本地告警。适合配网终端、环网柜、柱上开关等对可靠性、低功耗、远程可观测性有硬性要求的场景。如果你正在做电力边缘设备的国产化替代、或是需要把传统配电设备接入IoT平台这个设计不是参考方案而是可直接拆解复用的工程基线。2. 反激式开关电源设计从220V AC到24V DC的隔离稳压实现2.1 为什么选反激拓扑而非线性或LLC在开关柜狭小空间内输入为220V AC、输出需24V/1A供MCU系统NB模块、效率要求75%、且必须满足安规隔离一次侧与二次侧爬电距离≥6mm反激式拓扑成为唯一合理选择。它结构简单、成本低、易实现多路隔离输出且无需同步整流即可满足本项目功率需求30W。对比线性电源其温升可控实测满载温升25℃对比LLC谐振无需复杂磁件设计与频率跟踪电路更适合批量生产。本设计选用NCP1342作为PWM控制器其内置高压启动电流源、零电压开通ZVS辅助功能显著降低MOSFET开关损耗实测待机功耗仅0.8W符合国网Q/GDW 12070-2020对配电终端待机功耗≤1W的要求。2.2 关键器件选型与参数计算2.2.1 变压器设计要点本项目变压器采用EE25磁芯初级绕组匝数NP120T按最低输入电压176VAC、占空比Dmax0.45、磁通密度Bmax0.25T计算次级Ns12T对应24V输出考虑二极管压降0.7V及绕组压降0.5V。特别注意反馈绕组NF8T用于提供VCC供电其匝比严格按NP:NF120:815:1设定确保VCC在全输入范围176–264VAC内稳定在15V±5%。绕组间使用三层绝缘线TIW层间加聚酯薄膜绝缘胶带实测工频耐压达3.5kV/1min满足IEC 61800-5-1标准。2.2.2 输出滤波与稳压24V输出端采用LC滤波L47μHC2200μF/35V固态电容纹波实测80mVp-p20MHz带宽。未使用TL431光耦的经典反馈而是采用NCP1342内置误差放大器PC817光耦构成闭环反馈电阻R12.2kΩ、R210kΩ分压比2.2/(2.210)0.18配合TL431基准2.5V精确设定输出电压为24.0V±0.2V。该设计省去外部运放减少元件数量提高长期稳定性。2.3 PCB布局中的安规与EMI处理提示反激电源PCB必须严格区分一次侧AC输入、整流桥、主开关管、变压器初级与二次侧变压器次级、输出滤波、反馈电路区域两者之间设置≥6mm的槽型隔离带Slot Cut并在槽两侧覆铜接地GND形成法拉第屏蔽。本设计在一次侧地与二次侧地之间跨接Y电容CY12.2nF/250VAC有效抑制共模噪声。关键布线规则高压走线整流桥输出至MOSFET漏极宽度≥2mm避免尖角拐弯处采用圆弧过渡变压器底部铺铜必须挖空禁止敷铜光耦输入端走线远离开关节点SW Node长度10mm且下方无任何信号走线输出滤波电容紧贴整流二极管放置接地引脚单独打孔连接到底层GND平面。实测传导EMI数据EN55032 Class B限值在150kHz–30MHz频段内峰值余量≥8dB无需额外共模电感即可过认证。3. RT-Thread STM32F103 的嵌入式控制单元实现3.1 RT-Thread配置与外设驱动集成本项目采用RT-Thread Nano 3.1.5非完整版精简内核内存占用仅12KB Flash / 4KB RAM适配STM32F103C8T664KB Flash / 20KB RAM。核心配置如下// rtconfig.h 关键宏定义 #define RT_USING_HEAP // 启用动态内存管理 #define RT_USING_CONSOLE // 启用控制台用于调试日志 #define RT_USING_DEVICE // 启用设备框架 #define RT_USING_SERIAL // 启用串口驱动 #define RT_USING_PWM // 启用PWM用于活化控制 #define RT_USING_FINSH // 启用Finsh命令行调试用 #define RT_THREAD_PRIORITY_MAX 32 // 线程优先级数外设驱动均基于HAL库封装重点改造stm32f10x_tim.c与stm32f10x_adc.cstm32f10x_tim.c中重写HAL_TIM_Base_Start_IT()调用逻辑使TIM2用于活化脉冲与TIM3用于ADC采样定时独立运行避免中断嵌套冲突stm32f10x_adc.c中禁用DMA改用查询模式读取ADC值因电池电压采样精度要求±0.5%而DMA易引入通道间串扰采样周期设为100ms连续采样5次取中值滤波。3.2 多任务调度与电源状态机设计系统创建4个核心线程power_mgr_thread优先级10主电源管理线程轮询市电检测IOPA0、电池电压ADC1_IN0、NB模块状态PB1执行状态切换逻辑bat_act_thread优先级12蓄电池活化线程根据RTC时间或红外指令触发输出PWM波形TIM2_CH1控制MOSFET导通实现0.5A恒流放电10分钟nb_upload_thread优先级8NB-IoT数据上传线程每15分钟打包一次JSON数据含voltage、state、soc、timestamp字段发送至OneNet平台ir_recv_thread优先级15红外接收线程使用NEC协议解析遥控指令支持ACTIVATE手动活化、QUERY查询当前状态、RESET复位通信模块。状态机核心逻辑伪代码switch (current_state) { case STATE_AC_ON: if (adc_read(BAT_VOLTAGE) 21.0f) { // 电池欠压 set_output_mode(BOOST); // 切换至升压充电模式 } else if (adc_read(BAT_VOLTAGE) 28.5f) { // 电池过充 disable_charger(); } break; case STATE_AC_OFF: enable_battery_supply(); // 切换负载至电池供电 if (adc_read(BAT_VOLTAGE) 19.5f) { // 深度欠压 power_off_all_loads(); // 断开所有负载进入保护 } break; }该状态机完全运行于RT-Thread线程上下文避免裸机轮询导致的响应延迟实测市电断电→电池接管时间≤80ms。3.3 蓄电池活化策略与硬件协同活化并非简单放电而是模拟真实负载循环预检阶段读取电池当前SOC基于开路电压查表库仑计积分校准若SOC30%才允许活化恒流放电TIM2输出1kHz PWM占空比30%经IRF3205驱动0.5Ω功率电阻实现0.5A恒流放电电压监测每30秒读取一次电池端电压若跌至21.0V以下提前终止活化恢复充电活化结束后立即启动恒压28.2V/0.2A浮充持续2小时。红外遥控指令采用NEC协议载波频率38kHz编码格式为ADDR(16b)CMD(8b)~CMD(8b)。硬件上使用VS1838B红外接收头其OUT引脚直接接入STM32的EXTI0PA0中断服务程序中完成边沿捕获与码值解析响应延迟5ms。4. NB-IoT模块与OneNet平台对接实战4.1 BC35-G模块的AT指令精简交互本项目选用移远BC35-GNB-IoT Band B5/B8通过UART1PA9/PA10与STM32通信。摒弃标准AT指令集全量调用仅保留5条核心指令实现可靠连接指令作用超时成功标志ATCGMI查询模块厂商1sQuectelATCGMR查询固件版本1sBC35GGR01A08ATCFUN1启用功能3sOKATCGATT1附着网络60sCGATT:1ATQMTCONN1,123.123.123.123,80连接OneNet服务器30sQMTCONN: 1,0注意BC35-G在冷启动后首次附着网络平均耗时约22秒因此ATCGATT1指令必须设置足够长超时≥60s否则误判为失败。实测在弱信号区RSRP-112dBm附着成功率仍达99.2%。4.2 JSON数据包构造与OneNet物模型映射上传数据采用OneNet标准JSON格式字段严格匹配平台物模型定义{ device_id: 234567890123456, data: { voltage: 26.32, state: 1, soc: 87, timestamp: 1717023456 } }其中device_idBC35-G模块IMEIATCGSN获取state0市电供电1电池供电2电池保护关机soc整数百分比0–100由adc_read(BAT_VOLTAGE)查表得出21.0V→0%28.5V→100%timestampSTM32 RTC Unix时间戳需校准首次联网后从OneNet NTP服务同步。OneNet平台创建产品时数据流名称设为power_status数据点类型为object字段voltagefloat、stateint、socint、timestampint均设为可写入。平台自动为每个设备生成API Key用于HTTP POST请求签名。4.3 低功耗通信优化与异常恢复机制为降低NB模块功耗采用以下策略深度休眠数据上传完成后执行ATQSCLK1关闭模块时钟进入PSM模式Power Saving Mode实测休眠电流仅3.2μA唤醒机制RTC闹钟每15分钟唤醒MCUMCU拉高BC35-G的PWRKEY引脚持续1.2s唤醒模块断线重连若ATQMTCONN失败启动指数退避重试第1次1s后第2次2s后第3次4s后…最大间隔60s连续3次失败则触发硬件复位BC35-G拉低RESET引脚100ms。实测在单节3.7V/2000mAh锂电池供电下整机待机电流18mA含NB模块PSM理论续航达42天若每日执行1次活化耗电约150mAh仍可维持28天以上。5. 原理图与PCB设计细节验证从嘉立创EDA到量产落地5.1 原理图关键节点校验方法本项目原理图OrCAD Capture CIS共3张页面分别对应Sheet1_Power反激电源主电路、X34063稳压电路Sheet2_ControllerSTM32最小系统、ADC采样、PWM驱动、红外接收Sheet3_NB_IoTBC35-G外围电路、SIM卡座、天线匹配网络。校验重点不在页码编号如热搜词提及的page number都设成了1问题而在电气连接一致性使用OrCAD的Cross Reference功能检查所有网络标号Net Alias确认V24_POW在Sheet1与Sheet2间无断连对BAT_SENSE网络追踪其从电池正极→采样电阻→ADC1_IN0全程验证无多余串联电阻影响精度检查NB_TXD/NB_RXD是否交叉连接常见错误TXD接MCU TXD而非RXD本设计明确标注MCU_TX → NB_RX、MCU_RX → NB_TX。提示嘉立创EDA导出PDF时若出现“只有部分区域”本质是图纸尺寸A4与内容实际尺寸不匹配。本项目统一设置图纸尺寸为A3420×297mm所有页面缩放比例设为1:1导出前执行Tools → Database Check修复潜在网络错误。5.2 PCB层叠与关键信号完整性处理四层板设计Top / GND / PWR / Bottom叠层顺序L1Top信号层含高速数字线、晶体走线L2GND完整地平面分割≤3处仅为NB模块RF区留出独立GND岛L3PWR24V电源平面铜厚2oz压降实测0.15V满载1AL4Bottom信号层含大部分低速线、测试点。关键信号处理晶振电路STM32的8MHz HSE晶振紧邻MCU走线长度8mm两侧各加22pF负载电容电容接地引脚就近打孔至L2 GNDNB-IoT天线馈线50Ω微带线W0.8mmH0.2mmεr4.2长度精确控制为λ/4中心频点900MHz时≈83mm末端接π型匹配网络12nH10pF15nHADC采样线BAT_SENSE走线全程包地两侧GND线宽≥0.3mm远离SW节点与电源平面边缘实测共模抑制比CMRR75dB。5.3 实物焊接与功能验证清单拿到嘉立创打样PCB后按此顺序验证缺一不可上电前目检确认反激变压器同名端标记·与原理图一致X34063的FB引脚是否接至24V分压点而非直接接24V空载上电仅插市电用万用表测L3层24V网络对GND电压应为23.8–24.2VNB模块握手短接PWRKEY与GND 1.2s用串口助手发送AT返回OK即基础通信正常活化功能验证红外遥控发ACTIVATE用示波器抓TIM2_CH1输出应为1kHz方波占空比30%持续600秒OneNet数据回传登录OneNet平台查看设备power_status数据流确认voltage、state值实时更新。所有验证项通过后方可进行高低温老化-25℃70℃72小时与振动测试10–55Hz0.35mm振幅2小时这是开关柜设备入网必备流程。本文还有配套的精品资源点击获取