简介:这是一份面向电子设计竞赛与电源技术学习者的简易数控直流稳压电源完整设计方案文档,涵盖参赛人员分工、项目背景、设计任务、总体思路与实施方案等内容,细致说明了基于单片机、D/A转换、数模转换电路与显示电路的系统结构,并给出输出电压0~9.9V、步进0.1V、纹波小于10mV等关键指标,可帮助读者快速理解数控电源的设计流程与调测要点。资源为1个doc格式文档,压缩包整体631KB,内容完整、结构清晰,适合准备电子设计大赛、课程设计或对数控电源感兴趣的师生参考借鉴。文档同时梳理了传统电源的不足与数字化智能电源的发展方向,能够让读者在掌握电路实现的基础上,进一步体会数控电源向高精度、智能化演进的工程思路。目前已有429人学习下载,具有较高的实用价值。
1. 从赛题要求倒推设计目标
1.1 数控直流稳压电源到底考的是什么
接触过电子设计竞赛的朋友应该都有体会,电源类是每次大赛几乎都会出现的题目类型,而“简易数控直流稳压电源”是其中非常有代表性的一道。说是“简易”,实际要完整的做出来,涉及的模块一点都不简单:主功率电路、模拟反馈控制、数字控制算法、采压采流、过流保护、人机交互,一个电类专业本科阶段的核心知识点基本都串起来了。
先看赛题通常给出的指标,这里以常见的版本为例:输出电压范围 0~15V(也有题目要求 0~20V),电压步进 0.1V,最大输出电流 2A,电压调整率和负载调整率各自优于一定指标,纹波 Vpp 在毫伏级,显示输出电压和电流,并具备过流保护。这些指标摊开来看,每一项单独拿出来都不算难,但要全部满足且稳定运行,就需要在方案选型上动点脑筋。
1.2 方案选型:为什么竞赛首选线性调整结构
数控稳压电源有三条技术路线:线性串联调整、开关电源(Buck/Boost)、线性加开关混合。我见过一些队伍一开始就想上同步 Buck 拓扑,理由是效率高、体积小。开关电源确实有优势,但对竞赛这种需要在有限时间内稳定出指标的场景,它有两个致命难点:一是电感电容等磁性元件的设计调试周期长,二是开关噪声对单片机 ADC 采样和运放调理电路的干扰很难干净地处理掉,容易在纹波指标上翻车。
因此我当时的选择很明确,用线性串联调整结构,配合合理的输入预稳压。线性结构纹波小、环路简单、调试确定性高,竞赛中哪怕牺牲一些效率,换来的是大概率拿分的稳定指标。至于效率问题,可以通过后文讲的压差控制来缓解,并不是没有优化空间。
2. 硬件电路设计与关键器件选型
2.1 整体框架与主功率回路设计
整机的信号流向大致是这样的:220V 工频输入经变压器降压、整流滤波后得到直流母线电压,母线电压经过调整管(串联调整元件)后输出,输出电压与设定值的差值通过运放误差放大器闭环控制调整管的导通状态,同时电压电流采样信号送入 MCU 的 ADC,MCU 根据设定值计算并输出控制量,通过 DAC 或 PWM 加滤波的方式控制误差放大器的基准电压,从而实现“数控”。
主功率回路里首先要注意的是输入变压器的选型。输出电压最高 15V,考虑到调整管的压降、整流桥压降和电网电压的波动裕量,我选的是次级输出 18V 的工频变压器,整流滤波后空载电压约 25V(18V 乘以 1.414,减去整流桥两个二极管约 1.2V 压降),在 2A 满载时母线电压能维持在 20V 以上。这里有一个经验:调整管压差控制在 3~6V 比较合适,压差太小调整管会进入饱和区失去调整能力,压差太大功耗全堆在调整管上,散热器会烫得怀疑人生。
调整管的选择上有两条路线。一条是达林顿三极管,比如 TIP35C 或者 2N3055 加一个驱动三极管构成复合管结构;另一条是我这次采用的 P 沟道 MOSFET(比如 IRF9540),栅极驱动简单,不需要像 N 沟道那样额外折腾自举电路。用 MOS 管做线性调整要注意的是工作区在放大区(也就是三极管区的可变电阻区),栅源电压需要在线性范围内精细调节,配合运放输出驱动即可。
2.2 数控核心:PWM 滤波方案还是 DAC 方案
这是整个数控电源里最核心的方案取舍。要实现对输出电压的精确控制,必须有一个“数字量到模拟量”的转换环节,把这个模拟量作为误差放大器的参考基准。常用的做法有两种:一是直接用单片机 DAC 输出,二是用 PWM 加 RC 低通滤波生成直流电平。
竞赛中我最推荐 PWM 加有源滤波方案。原因很直接,很多竞赛常用的 STC 或 STM32 系列单片机并不都带 DAC 外设,而 PWM 几乎每一颗 MCU 都有;即使带 DAC,它的输出驱动能力一般,后面还需要接运放缓冲。PWM 方案则完全避开芯片选型的限制。我的实现方式是这样的:定时器输出 16kHz 的 PWM,分辨率 10 位,经过两级 RC 低通滤波后接入运算放大器组成的电压跟随器隔离,输出平滑的直流基准电压。RC 参数我用的 1kΩ 加 10μF,理论截止频率约 16Hz,实测波纹波动在毫伏级别,完全满足作为基准源的要求。这里的 PWM 频率需要避开一个坑,后面“常见问题”里详细说。
如果比赛允许用 DAC 芯片,也可以用 TLV5618 这类双通道串行 DAC,精度和稳定性都比 PWM 滤波方案省心。但 PWM 方案最大的优势是“不需要额外花钱买芯片”,这在竞赛环境下有时候就是决定性的。
2.3 电压采样与电流采样电路
输出电压采样我用了精密电阻分压加射极跟随器的方式。分压比例取 4:1,也就是说输出电压最高 15V 时,送入 ADC 的电压不超过 3.75V,留有一定的裕量。分压电阻要选低温漂的金属膜电阻,阻值精度用 1% 甚至 0.5% 的,因为这款电源的显示精度和输出电压精度,很大程度上就取决于分压电阻的精度。需要反复强调的是,分压电阻一定要并一个高阻值电阻到 ADC 输入端做保护,防止意外过压打坏单片机的 ADC 引脚,这个小细节能救一命。
电流采样我用的是 0.1Ω/2W 的采样电阻串在主回路中,通过 INA282 差分运放放大 10 倍后送入 ADC。采样电阻阻值不能太大,否则满载的时候本身压降就吃掉 0.2V 的输出电压;也不能太小,否则采到的信号太小容易受干扰。INA282 的好处是宽共模输入范围和不错的精度,如果手头没有这颗芯片,用普通运放搭差分放大电路也行,但要注意电阻配对的精度,这直接决定了电流显示的误差。
2.4 显示、键盘与过流保护的硬件设计
显示部分如果只要求输出电压和电流,用 4 位数码管动态扫描就够了,占用 6 个 I/O 口。我推荐用两块 74HC595 串转并来驱动数码管,省 IO 且扫描逻辑简单。如果追求显示效果,可以用 12864 液晶屏,但比赛时间紧,我通常先用数码管把核心功能调稳,再考虑升级显示模块。
键盘我用的 4x4 矩阵键盘,定义了数字键、确认键、步进加减键。如果不做数字直接输入,用两个独立按键做步进加减也完全足够,根据赛题是否有“直接设定输出电压”的要求来定。但要考虑显示刷新与按键消抖之间的配合,不能让按键调整时数码管闪得厉害。
过流保护我做了硬件和软件双重保护。硬件上用采样放大后的电流信号送入比较器 LM393,与一个基准电压比较(对应 2.5A 阈值),超限立即拉低调整管的驱动信号实现快速断电;软件上 MCU 每个控制周期读取电流值,超过设定值后不仅关断输出还通过数码管闪烁报警。双重保护的目的很实在——竞赛现场免不了手忙脚乱,一次输出短路就可能烧掉调整管,多一道保护就多一条活路。
3. 软件设计:闭环控制的完整实现
3.1 单片机内部资源分配与主流程
控制核心我用的是 STM32F103C8T6,这款芯片在竞赛中出镜率极高,价格便宜、资料多、外设齐全。软件整体框架是主循环加定时器中断:定时器触发 ADC 对电压电流进行采样,采样值经过软件滤波后与用户设定值比较,经过 PI 调节器计算出新的 PWM 占空比并更新寄存器,主循环负责扫描键盘、刷新显示和报警处理。
定时中断(1kHz): 1. 启动 ADC 采样电压通道 2. 启动 ADC 采样电流通道 3. 数字滤波(一阶低通或滑动平均) 4. 计算误差 e = U_set - U_fb 5. PI 运算得到占空比增量 6. 更新 PWM 寄存器 主循环: 1. 键盘扫描与消抖 2. 更新设定值 3. 刷新数码管显示 4. 过流/过温标志处理这里将中断频率设置在 1kHz,是因为整个系统的闭环响应不需要太快,电源反馈控制是典型的低频控制,1kHz 足够平滑,同时也不给 MCU 造成太大负载,还有大量时间片留给其他任务。
3.2 PI 调节器的代码实现与参数整定
PWM 占空比的调节我采用的是增量式 PI 算法,相比位置式 PID,增量式不需要累加所有历史误差,不容易出现积分饱和的问题,实现也简单。核心代码如下:
/* 增量式 PI 调节器 */ int32_t pid_incremental(float set_voltage, float feedback_voltage) { float error = set_voltage - feedback_voltage; float proportional = Kp * (error - last_error); float integral = Ki * error; float output = proportional + integral + last_output; /* 输出限幅,避免 PWM 占空比溢出 */ if (output > PWM_MAX) output = PWM_MAX; if (output < PWM_MIN) output = PWM_MIN; last_error = error; last_output = output; return (int32_t)output; }PI 参数整定这块,我采用工程上最实用的“临界比例度法”加现场微调。先把 Ki 设为 0,逐步加大 Kp,观察输出电压在设定值附近的振荡状态,找到临界振荡的 Kp 值,然后取它的一半作为实际 Kp;接着添加 Ki 消除稳态误差,从小到大缓慢增加,直到输出电压稳定且没有明显超调。整套流程下来大约需要半小时。这里有个经验:如果在调整 Kp 的过程中输出电压出现缓慢的低频周期振荡,多半不是参数问题,而是采样滤波的时间常数太大导致的相位滞后,这时候优先减小滤波深度而不是继续调参。
3.3 从设定值到占空比的量化计算
很多新手最大的困惑是:“我想输出 3.3V,PWM 占空比到底该设多少?”这里需要先把整个控制通路上的量化关系捋清楚。
PWM 分辨率是 10 位,即占空比数值范围 0~1023,对应输出基准电压范围 0~V_REF。设 V_REF 为 3.3V(我直接用 TL431 稳压给单片机供电,电压稳定性比单片机的 AVCC 好很多),那么 PWM 值增加 1,基准电压增加大约 3.22mV。基准电压经误差放大器后,理论上对应输出电压的增量取决于采样分压网络的反馈系数。
但在实际系统中存在电阻容差、运放失调电压、PWM 滤波环节的插入损耗等问题,理论计算出的电压往往与实际输出有几十毫伏甚至更大的偏差。所以我把标定做成了系统的一部分——在出厂或每次上电时,让用户进入标定模式,对每个目标电压进行一次实际测量,将测量值与设定值之差存为“预设校准表”,运行时用线性插值修正。这一招对提高输出电压精度效果显著。
3.4 步进与数字量换算的细节处理
赛题要求步进 0.1V,处理器内部我用毫伏作为单位来管理所有电压量,避免浮点数运算的精度丢失。设定 1520 就表示 1.520V,显示的时候再通过取模运算拆分成“整数部分”和“小数部分”,这样既保持了精度,也让显示逻辑变得非常简单。这个细节在调试时帮我省了不少功夫。
4. 实测调试与问题排查实录
4.1 从空载到满载的动态表现
整机调试的第一步先不接单片机,用滑动变阻器模拟基准电压,看模拟闭环是否正常工作;确认模拟部分稳定后,再接入数字控制部分。当时我在空载下把输出设置到 10.0V,面板显示 10.0V,用万用表实测 10.03V,精度符合预期。接下来接上电子负载从 0 慢慢拉到 2A,观测到的数据如下:
| 负载电流 | 输出电压实测 | 电压偏差 | 输出纹波 Vpp |
|---|---|---|---|
| 0A | 10.03V | +0.03V | 约 3mV |
| 0.5A | 10.02V | +0.02V | 约 4mV |
| 1.0A | 10.00V | 0V | 约 5mV |
| 1.5A | 9.97V | -0.03V | 约 6mV |
| 2.0A | 9.94V | -0.06V | 约 8mV |
从数据可以看到,满载时电压跌落了约 60mV,主要原因是采样电阻两端压降被包含在反馈回路之外,以及导线上的电阻损耗。解决思路是在反馈采样点选择上做文章,把采样点从电源输出端直接引到负载端(四线制开尔文接法),或者在软件里加入电流补偿量。竞赛中如果对电压调整率有严格要求,这四个采样点的小改动值得做。
4.2 常见问题速查表
调试过程中遇到的问题五花八门,我整理了当时踩坑频率最高的一组问题,以速查表形式分享:
| 现象 | 可能原因 | 排查与解决方向 |
|---|---|---|
| 输出电压与设定值有固定偏差 | 分压电阻精度不足或 TL431 基准电压偏差 | 更换 0.5% 电阻,重新标定校准表 |
| 输出电压周期性波动 | PI 参数整定不当或采样滤波过深 | 重调 Kp、Ki,降低滤波系数 |
| 大电流时电压跌落明显 | 采样点位置不对或采样电阻阻值过大 | 改用四线制采样,减小采样电阻阻值 |
| 空载或轻载时输出正常,满载后数码管跳动 | 单片机供电受主功率回路干扰 | 数字地与模拟地单点连接,给 MCU 供电加 LDO 和去耦电容 |
| 输出纹波偏大 | 整流滤波电容不足、调整管高频自激 | 加大滤波电容或并联小电容,调整管基极/栅极加防振电阻 |
| PWM 调节时听到变压器或电感啸叫 | PWM 频率落在音频范围 | 将 PWM 频率调整到 16kHz 以上或 20kHz 以上 |
4.3 关于地线布置的独门经验
地线的处理是整个项目中最容易被忽视但影响最大的方面。我初期试板时发现 ADC 采样值波动特别大,输出电压显示在小数点后第二位来回跳动。排查了整整一天,最终发现问题出在单片机的地和主功率回路的“地”直接混在一起,功率电流在地线上产生的噪声直接叠加到了模拟采样信号上。解决办法很简单也很经典:把系统的地分割成数字地、模拟地、功率地三块,最后在电源输入端的滤波电容负极处单点汇接。这个改动让 ADC 采样的码值跳动从十几个 LSB 降到了两三个 LSB,纹波指标也明显改善。
另一个容易忽略的隐患是 PWM 信号的滤波电容在输出端短路瞬间会通过地线向单片机灌入大量浪涌电流。虽然软件有保护,硬件上也应该加一个二极管钳位电路,把浪涌引到功率地回路而不是数字地回路。
4.4 竞赛现场不能犯的“低级错误”
比赛现场环境与实验室差别很大,电源稳定性、电磁干扰、器件温度特性都会变样。出门前一定要把散热片固定牢靠,我当时用的散热片上还单独加了一个小风扇,用继电器控制,当电流超过 1.5A 时自动开启。风扇转动带来的震动和噪声虽然不大,但对示波器测量波形会产生影响,所以测试时要分清“风扇开”和“风扇关”两种状态的纹波数据,不要混在一起评估指标。
操作顺序上也有讲究:先开输入电源,再设置输出电压;关闭时反过来,先把输出电压调到 0,再关输入电源。这个习惯能有效避免上电瞬间输出端过冲损坏负载。我见过有队伍在接感性负载时没有注意这个细节,关机的瞬间负载两端感应出很高的反向电压,直接把调整管打穿,教训相当深刻。
5. 扩展空间与更深一步的思考
5.1 从 0.1V 步进到更高精度的升级路径
竞赛版本的 0.1V 步进,对应 10 位 PWM 在 15V 满量程下约 14.6mV 的电压分辨率,这在 0.1V 步进下完全够用。但如果想进一步做到 0.01V 步进,PWM 方案的分辨率就捉襟见肘了,此时有两条升级路径:
一是改用更高分辨率的 ADC 芯片加真正的 DAC,比如用 16 位 DAC 芯片(如 DAC8552),配合高精度基准源(比如 ADR421 或 REF5025),从源头提升基准的精细度。二是升级 PWM 分辨率到 16 位,比如用 STM32 的高级定时器,将 PWM 时钟频率提高,配合更高阶的有源滤波器(如巴特沃斯二阶低通),也能获得不错的效果。第一条路在长期稳定性和温度漂移等指标上更好,第二条路成本更优。
5.2 恒流模式与自动量程切换的可能性
这个数控电源如果加上恒流控制逻辑,就能升级成一台简易的可编程电源。思路是在模拟反馈环中增加一个电流环,用二极管的“或”逻辑让电压环和电流环“低者生效”。当负载电流达到设定阈值时,电流环自动接管控制,输出电压开始下降,实现恒流输出。这个改动对硬件来说只需要增加一个电流基准比较环节,软件上增加一个电流设定值即可,工作量不大,但可以应对赛题中扩展功能的要求。
后续还可以做自动量程切换,比如输出 0~5V 时用高精度低量程 DAC 值,5V 以上再用全量程 DAC 值,通过继电器切换分压网络,既保证低电压时分辨率高,又保证高电压时够得着。这属于锦上添花的功能,有余力再考虑。
5.3 数控电源的通用系统设计思维
把这个项目做完回头看,数控直流稳压电源本质上就是一个“传感器 + 控制器 + 执行器”的典型控制系统。电压电流是反馈量,MCU 是控制器,PWM 到基准电压再到调整管是执行链路。搞懂这一条链路的信号流动和能量流动,以后设计恒温控制器、电机调速器都跳不出这个框架。竞赛做完之后不要急着把板子拆掉,用这个平台试试恒流充电、LED 驱动、电池放电测试这些应用场景,会有另一层收获。
最后说一个我至今印象很深的细节:比赛当天实测环节,评委拿了一个 12V 的直流电机做负载,打开瞬间电机启动电流远超额定 2A,如果保护电路响应速度不够快,电源就直接过流保护了,电机转不起来。我当时把过流保护比较器做成了一级迟滞比较器,滞回量约 0.3A,启动电流大的瞬间不触发保护,持续过流才动作。这个细节在备赛时没太在意,但在现场确实挽救了整个作品的演示效果。做电源设计,很多时候拼的不是谁的上限高,而是谁能在各种意外工况下不出错。
本文还有配套的精品资源,点击获取