返回项目列表
数控 CV/CC 线性稳压电源 + 线性电子负载测控平台

数控 CV/CC 线性稳压电源 + 线性电子负载测控平台

2025.11 – 2026.02电源测控
STM32FreeRTOS电源运放PCB电子负载ADCDAC

独立完成 0~12V/2A 数控线性电源与 0~2A/40W 线性电子负载全套硬件与固件开发,涵盖 CV/CC 双闭环控制、差分采样、地平面分层与多重软硬件保护。

硬件平台
  • STM32F103C8T6
  • DAC(模拟基准输出)
  • 12-bit ADC(电压/电流/温度采样)
  • 双运放闭环反馈网络
  • N-MOS 线性负载阵列
  • NTC 热敏电阻
  • 0.96 寸 OLED
软件工具
  • Keil MDK
  • FreeRTOS
  • 标准库开发
  • 多级软件保护逻辑

项目概述

本项目为独立完成的 数控线性稳压电源 + 线性电子负载一体化测控平台。硬件上完成了从原理图设计、器件选型、双层 PCB 绘制到整机焊接的全流程;软件上基于 FreeRTOS 实现多任务调度,配合多级软硬件保护,构建了一套可靠的电源测控系统。

核心指标:

| 模块 | 参数 | |------|------| | 数控电源 | 0 ~ 12 V 连续可调,0 ~ 2 A 限流 | | 电子负载 | 0 ~ 2 A 程控恒流,最大 40 W 耗散 | | 输出纹波 | < 10 mVpp(轻载) | | 负载调整率 | < 1% | | 温控保护 | NTC 采集 MOS 管温度,> 85°C 自动关断 |

系统架构

┌────────────────────────────────────────────────┐
│              STM32F103 主控                     │
│  ┌──────────┐  ┌──────────┐  ┌─────────────┐  │
│  │   DAC    │  │   ADC    │  │   FreeRTOS  │  │
│  │ 基准输出  │  │ 多路采样  │  │  多任务调度  │  │
│  └────┬─────┘  └────┬─────┘  └──────┬──────┘  │
│       │             │                │         │
│       ▼             ▼                ▼         │
│  ┌──────────┐  ┌──────────┐  ┌─────────────┐  │
│  │ 电源闭环  │  │ 负载闭环  │  │  按键/OLED  │  │
│  │ CV/CC   │  │ 恒流控制  │  │   交互任务  │  │
│  └──────────┘  └──────────┘  └─────────────┘  │
└────────────────────────────────────────────────┘

硬件设计

数控线性电源 — CV/CC 双运放闭环

采用 双运放独立闭环 架构,分别实现恒压(CV)与恒流(CC)控制:

  • CV 环路:电阻分压采样输出电压 → 误差放大器 → 调整管栅极
  • CC 环路:采样电阻检测电流 → 误差放大器 → 限制输出电流
  • 自动切换:两个环路输出取 或逻辑,低者生效,实现无缝 CV/CC 切换

密勒相位补偿

为防止环路自激,在运放反馈回路中并联 47 pF 密勒电容

        R1
   ┌────//\/\────┐
   │              │
   │      C1      │
   │     ┌──┐     │
   └─────┤  ├─────┘
         └──┘
         47pF

补偿后实测相位裕度 > 45°,全负载范围无自激振荡。

线性电子负载 — N-MOS 架构 + 差分采样

采用 N-MOS 线性负载 架构,通过控制栅极电压调节漏极电流:

15 倍差分放大采样

采样电阻仅 0.1 Ω,满载压降仅 200 mV。采用 差分放大 + 15 倍增益 提升分辨率:

V_sense = I_load × 0.1Ω = 0 ~ 200 mV
V_amp   = V_sense × 15  = 0 ~ 3 V  (可直接送入 ADC)
  • 差分前端 无 RC 滤波,保留信号带宽
  • 后端 1 kΩ + 100 pF 低通滤波,抑制高频干扰

地平面分层与抗干扰

采用 三地分割 + 单点共地 策略:

| 地平面 | 连接内容 | 处理方式 | |--------|---------|---------| | 功率保护地 | 电源输入、保险丝、TVS | 独立铺铜 | | 模拟地 | 运放、采样电阻、NTC | 独立铺铜 | | 数字地 | MCU、DAC、OLED、按键 | 独立铺铜 | | 共地点 | 三地唯一连接处 | 星型单点汇合 |

此外,运放栅极驱动串联 10 Ω 阻尼电阻,抑制 MOS 管输入电容与走线寄生电感引起的高频振铃。

多重硬件保护

  • 防反接:输入端串联肖特基二极管
  • 过流保护:保险丝 + 软件快速关断
  • 浪涌吸收:输入端 TVS 二极管(SMBJ15A)
  • 过热保护:NTC 热敏电阻贴装于 MOS 管散热片,> 85°C 蜂鸣报警并关断输出

软件设计

FreeRTOS 任务划分

| 任务 | 优先级 | 职责 | |------|--------|------| | 采样采集任务 | 3(高) | ADC 多通道轮询,软件滤波 | | 按键交互任务 | 2(中) | 编码器/按键扫描,菜单导航 | | 屏幕显示任务 | 1(低) | OLED 实时曲线与数值刷新 | | 保护检测任务 | 3(高) | 过压、过流、过热检测与响应 |

任务间通过 消息队列 传递采样数据,避免全局变量竞争。

采样校准与数值换算

/* 零点校准:短路/空载时采样 */
void ADC_Calibrate(void) {
    adc_offset_voltage = ReadADC(CHANNEL_VOUT);
    adc_offset_current = ReadADC(CHANNEL_IOUT);
}

/* 线性换算 */
float GetVoltage(void) {
    uint16_t raw = ReadADC(CHANNEL_VOUT) - adc_offset_voltage;
    return raw * ADC_LSB * VOLTAGE_DIV_RATIO;
}

float GetCurrent(void) {
    uint16_t raw = ReadADC(CHANNEL_IOUT) - adc_offset_current;
    return raw * ADC_LSB / (SENSE_R * DIFF_AMP_GAIN);
}

多级软件保护逻辑

typedef enum {
    PROTECT_NONE = 0,
    PROTECT_WARN,      /* 降功率运行 */
    PROTECT_SHUTDOWN,  /* 关断输出 */
} ProtectLevel_t;

ProtectLevel_t CheckProtection(void) {
    if (temperature > 85.0f)  return PROTECT_SHUTDOWN;
    if (temperature > 75.0f)  return PROTECT_WARN;
    if (voltage > 12.5f)      return PROTECT_SHUTDOWN;
    if (current > 2.2f)       return PROTECT_SHUTDOWN;
    return PROTECT_NONE;
}
  • Warning 级:蜂鸣器间歇鸣响,OLED 闪烁提示,自动降功率 50%
  • Shutdown 级:立即关断 PWM/DAC 输出,蜂鸣器长鸣,需手动复位解除

实测数据

电源输出特性

| 设定电压 | 负载电流 | 实测电压 | 纹波 Vpp | |---------|---------|---------|---------| | 5.00 V | 0.1 A | 5.002 V | 4.2 mV | | 5.00 V | 1.0 A | 4.985 V | 6.8 mV | | 5.00 V | 2.0 A | 4.968 V | 9.5 mV | | 12.00 V | 0.5 A | 12.01 V | 5.1 mV | | 12.00 V | 2.0 A | 11.92 V | 8.7 mV |

  • CV/CC 切换点:当负载电流达到设定限流值时,自动由 CV 转入 CC,切换过程无过冲

电子负载特性

| 设定电流 | 电源电压 | 实测电流 | 功耗 | |---------|---------|---------|------| | 0.50 A | 5 V | 0.502 A | 2.5 W | | 1.00 A | 5 V | 0.998 A | 5.0 W | | 2.00 A | 5 V | 1.995 A | 10.0 W | | 1.00 A | 12 V | 1.002 A | 12.0 W |

踩坑记录

  • 采样零点漂移:温升导致运放失调电压漂移,上电后增加 30 s 预热与自动零点校准流程
  • MOS 管栅极振铃:未加阻尼电阻时,栅极驱动波形出现 50 MHz 振铃,导致负载电流抖动;串联 10 Ω 电阻后振铃消除
  • OLED I2C 地址冲突:电源模块与 OLED 共用 I2C 总线时,因上电时序导致 OLED 偶尔不响应;软件增加 I2C 总线复位与重试机制