第一部分:设计理念与核心功能
一个好的维修测试仪,核心目标不是“修复”,而是“诊断”和“保护”,它应该能模拟开关电源的正常工作状态,并在出现异常时提供清晰、安全的指示,帮助维修人员快速定位问题。

核心功能清单:
-
安全上电/断电:
- 软启动: 模拟市电缓慢上升的过程,避免开机瞬间的大电流冲击损坏元器件,这是最重要的功能之一。
- 延时启动: 按下开关后,等待几秒钟再输出电压,给电容充电和电路稳定留出时间。
- 一键急停: 在紧急情况下(如冒烟、异响)能瞬间切断输出。
-
电压/电流监测与显示:
- 输入电压监测: 实时显示接入的AC或DC电压。
- 输出电压监测: 实时显示开关电源的输出电压。
- 输出电流监测: 实时显示输出电流,并能设置限流值。
- 过压/过流保护: 当输出电压或电流超过预设值时,能自动切断输出并报警。
-
可调负载(电子负载):
(图片来源网络,侵删)- 这是测试仪的“心脏”,它能模拟真实的用电设备,消耗开关电源的功率。
- 恒流模式: 维持电流恒定,用于测试电源的带载能力和稳定性。
- 恒阻模式: 模拟固定电阻负载。
- 恒功率模式: 模拟真实电子设备的负载特性(更高级)。
-
辅助功能:
- 电压可调: 对于需要测试多电压输出的电源,或者需要“假负载”来启动某些电源(如没有负载不工作的电源),需要一个可调的DC输入来模拟主电压。
- 短路测试: 带有保护的短路测试功能,用于测试电源的短路保护响应。
- 风扇控制: 根据负载或温度自动控制散热风扇。
第二部分:硬件方案选择(从易到难)
根据你的电子技术水平和预算,可以选择不同的实现方案。
纯模拟/简单数字方案(适合初学者)
这个方案主要使用运放、比较器、三极管等分立元件,成本低,原理清晰,但功能相对有限。
-
核心元件:
(图片来源网络,侵删)- 软启动电路: 使用大电容和电阻组成RC延时电路,控制MOSFET或继电器的导通。
- 电压监测: 使用高精度电阻分压,然后连接到电压表头或简单的数显电压模块。
- 电流监测: 使用康铜丝或电流采样电阻,将电流信号转换为电压,再用运放放大后送入电压表。
- 电子负载: 使用功率MOSFET作为可变电阻,通过一个运放控制电路,改变MOSFET的栅极电压,从而改变其导通电阻,实现恒流/恒压控制。
- 保护电路: 使用电压比较器(如LM393)将监测到的电压/电流与参考电压(由电位器设定)比较,比较器输出触发三极管,驱动继电器断开输出。
-
优点: 成本极低,原理直观,是学习电源电路的好机会。
-
缺点: 功能单一,精度不高,调试复杂,无法实现数字显示和智能控制。
基于Arduino/STM32单片机的方案(强烈推荐,性价比最高)
这是目前最主流、功能最均衡的DIY方案,单片机负责逻辑控制、数据处理和显示,外围电路负责功率处理。
-
核心元件:
- 主控MCU: Arduino Uno/Nano (简单) 或 STM32F103 (性能更强)。
- 显示模块: 0.96寸OLED屏(I2C接口)或1602 LCD屏。
- 电压/电流采样:
- 电压: 电阻分压后,输入到MCU的ADC引脚,注意ADC的参考电压和输入范围。
- 电流: 使用霍尔电流传感器(如ACS712)或高精度运算放大器+采样电阻方案,ACS712更简单,但精度和线性度稍差;运放方案精度高,但需要自己设计电路。
- 电子负载核心: 使用功率MOSFET(如IRF540N, IRF3205, IRLZ44N等)作为功率开关,MCU通过DAC或PWM+运放来精确控制MOSFET的栅极电压,从而精确控制电流。
- 驱动与保护:
- 继电器: 用于主回路的通断控制,MCU通过三极管驱动继电器。
- MOSFET驱动: 如果用PWM直接驱动MOSFET,建议加一个MOSFET驱动芯片(如IR2104)以提高开关速度和效率。
- 用户输入: 几个按键用于设置电压、电流限值,启动/停止等。
-
优点: 功能强大(可实现所有核心功能),精度高,人机交互友好(数字显示),编程灵活,成本适中。
-
缺点: 需要一定的编程基础(C/C++)。
基于专用电源控制芯片的方案(进阶)
这个方案更接近专业设备的实现方式,性能和稳定性最好。
-
核心元件:
- 电子负载核心: 使用专用电子负载芯片,如LT3080(线性可调恒流源)或LM5116等 buck 控制器搭建的开关电子负载。
- 主控MCU: 仍然使用STM32等,负责读取数据、控制显示、处理用户指令。
- 其他: 方案二中的传感器、显示、按键等。
-
优点: 性能卓越,效率高(尤其是开关电子负载),控制精确,稳定性好。
-
缺点: 电路设计复杂,成本较高,需要深厚的电源设计知识。
第三部分:基于Arduino的实现方案详解(以方案二为例)
这是最适合大多数爱好者的方案,下面我们详细拆解它的制作步骤。
硬件清单
| 模块/元件 | 数量 | 备注 |
|---|---|---|
| Arduino Nano / STM32F103C8T6 | 1 | 主控制器 |
| 96寸OLED显示屏 (I2C) | 1 | 显示电压、电流、功率、状态 |
| ACS712 20A或30A电流传感器模块 | 1 | 交流或直流电流测量 |
| 电压采样电阻 (1%精度) | 若干 | 用于分压,确保输入ADC的电压在0-5V内 |
| 功率MOSFET (IRF540N, IRLZ44N等) | 1 | 电子负载的核心,TO-220封装 |
| 散热器 | 1 | 必须! MOSFET工作时会发热 |
| 继电器模块 (5V, 10A以上) | 1 | 控制主输出通断 |
| 按键 | 3-4 | 功能设置、启动、停止 |
| 10kΩ 电阻 | 4 | 按键上拉或下拉 |
| 电位器 (10kΩ) | 1 | 用于手动调节设定电流(可选) |
| 电容 (100uF, 10uF, 0.1uF) | 若干 | 滤波、稳定 |
| 杜邦线、洞洞板/PCB板、导线、散热风扇、外壳 |
电路设计思路
-
输入/电压采样:
- AC输入: 先用变压器降压,再整流滤波得到低压DC,或者直接用隔离的AC-DC电源模块,安全第一!
- DC输入: 直接接入。
- 采样: 使用高阻值电阻(如两个100kΩ)分压,将高电压(如30V)降到5V以内,供ADC读取。
V_adc = V_in * (R2 / (R1+R2))。
-
电流采样:
- 将ACS712的信号输出引脚直接连接到Arduino的A0引脚,ACS712会输出一个与电流成正比的电压(在0A时为2.5V,每1A对应66mV)。
-
电子负载电路:
- 将待测电源的正极连接到MOSFET的漏极。
- 将MOSFET的源极连接到待测电源的负极,同时也是测试仪的公共地。
- 将Arduino的PWM引脚(如D9)通过一个电阻(如1kΩ)连接到MOSFET的栅极。
- 原理: Arduino输出PWM信号,通过简单的RC滤波(或运放积分)变成一个稳定的直流电压,加在MOSFET的G-S极之间,这个电压越高,MOSFET导通程度越深,等效电阻越小,流过的电流越大,通过PID算法,可以精确控制这个电压,实现恒流。
-
控制与显示:
- 继电器控制线连接到Arduino的数字引脚(如D2)。
- 按键连接到数字引脚(如D3, D4, D5),启用内部上拉电阻。
- OLED的SDA, SCL引脚连接到Arduino的I2C引脚(A4, A5)。
软件逻辑(Arduino伪代码)
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// 定义引脚
const int relayPin = 2;
const int mosfetPin = 9; // PWM pin
const int currentSensePin = A0;
const int voltageSensePin = A1;
const int buttonStart = 3;
const int buttonStop = 4;
// 定义变量
float voltage = 0.0;
float current = 0.0;
float power = 0.0;
float setVoltage = 12.0; // 目标输出电压
float setCurrent = 2.0; // 目标输出电流
bool isRunning = false;
// OLED显示屏对象
Adafruit_SSD1306 display(OLED_RESET);
void setup() {
pinMode(relayPin, OUTPUT);
pinMode(mosfetPin, OUTPUT);
pinMode(buttonStart, INPUT_PULLUP);
pinMode(buttonStop, INPUT_PULLUP);
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
// 初始状态,继电器断开,MOSFET关闭
digitalWrite(relayPin, LOW);
analogWrite(mosfetPin, 0); // PWM值为0,关闭MOSFET
}
void loop() {
// 1. 读取按键
if (digitalRead(buttonStart) == LOW) {
// 软启动逻辑:逐渐增加PWM值
for (int i = 0; i <= 255; i++) {
analogWrite(mosfetPin, i);
delay(20); // 调整软启动速度
}
digitalWrite(relayPin, HIGH); // 闭合继电器,接通主回路
isRunning = true;
delay(100); // 防抖
}
if (digitalRead(buttonStop) == LOW) {
digitalWrite(relayPin, LOW); // 断开继电器
isRunning = false;
// 软关断逻辑
for (int i = 255; i >= 0; i--) {
analogWrite(mosfetPin, i);
delay(20);
}
delay(100); // 防抖
}
// 2. 采样电压和电流
voltage = readVoltage();
current = readCurrent();
power = voltage * current;
// 3. 保护逻辑
if (isRunning && (voltage > setVoltage * 1.2 || current > setCurrent * 1.2)) {
// 触发过压/过流保护
handleProtection();
}
// 4. 更新显示
updateDisplay();
delay(100); // 主循环延时
}
// --- 函数定义 ---
float readVoltage() {
int adcValue = analogRead(voltageSensePin);
// ... 根据分压比和ADC参考电压计算实际电压
return calculatedVoltage;
}
float readCurrent() {
int adcValue = analogRead(currentSensePin);
// ... 根据ACS712的灵敏度计算实际电流
return calculatedCurrent;
}
void updateDisplay() {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print("V: "); display.print(voltage); display.println("V");
display.print("I: "); display.print(current); display.println("A");
display.print("P: "); display.print(power); display.println("W");
if (isRunning) {
display.println("Status: ON");
} else {
display.println("Status: OFF");
}
display.display();
}
void handleProtection() {
// 保护动作:立即关断
digitalWrite(relayPin, LOW);
isRunning = false;
analogWrite(mosfetPin, 0);
// 显示报警信息
display.clearDisplay();
display.setCursor(0,0);
display.println("!!! PROTECTION !!!");
display.display();
while(1); // 死循环,等待手动复位
}
制作与调试
- PCB设计: 强烈建议使用洞洞板或自己绘制PCB,合理布局,高压区和低压区分开,大电流路径要粗短。
- 焊接: 先焊接小元件,再焊大功率元件(MOSFET、继电器、散热片)。
- 调试:
- 先不接功率部分! 先只调试控制部分:确保OLED能正常显示,按键能被正确识别。
- 单独测试电子负载: 接一个低压直流电源(如12V 5A电源适配器),缓慢调节PWM,用万用表测量电流,看是否能线性变化。
- 整机联调: 小心操作,逐步提高电压,测试各项功能。
第四部分:安全须知(极其重要!)
- 隔离!隔离!隔离! 测试仪的输入端和待测电源的输入端都可能带市电,有致命危险,所有低压控制电路(Arduino部分)必须与高压部分(输入端)通过光耦或变压器进行良好隔离,外壳必须是绝缘的。
- 散热: 功率MOSFET是发热大户,必须配备足够大的散热器,在测试大功率时,最好再加一个风扇强制散热。
- 保险丝: 在输入端必须安装合适的保险丝,作为最后的电流保护。
- 使用隔离变压器: 如果条件允许,维修时最好使用隔离变压器,可以切断地线环路,增加一级安全保障。
- 单手操作: 测量时,尽量只用一只手操作,另一只手插在口袋里,避免双手同时接触不同电位的点。
通过这个项目,你不仅能得到一个强大的维修工具,更能深入理解开关电源的工作原理和测试方法,祝你制作顺利,维修无忧!
