ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

从模拟旋钮到数字控制:完整拆解数控直流稳压电源制作全过程

从模拟旋钮到数字控制:完整拆解数控直流稳压电源制作全过程 简介面向电子类专业课程设计与电源设计入门者的数控直流稳压电源完整课程设计文档内容以天津工业大学电科专业的实际项目为背景完整覆盖0~9.9V、步进0.1V的数控稳压电源设计脉络。文档从设计任务与基本要求出发比较三种实现方案详述可逆计数器、DAC0832数模转换、七段译码LED显示、运放输出与取样电路等模块的原理和元件选择并给出电路调试、性能测试、改进措施及主要电路仿真过程便于读者复现或借鉴。压缩包内含1个docx文档大小约1.93MB结构包含设计任务、方案论证、理论分析、电路设计、调试测试、结论、参考文献与附录等完整章节。已有177人学习下载适合需要完成类似电源设计、撰写课程设计报告或进行数电综合实践的读者参考。 做电源这行久了都有个体会以前调一台稳压电源全靠手拧电位器想精准调到5.00V得对着表一点点蹭手一抖就跳出去0.1V。后来我把手头一台老电源改造成数控直流稳压电源按键设定、数码管显示、电压电流可存储从调节手感、显示精度到控制便利性完全是两个世界。这篇完整版拆解就把我从主电路到固件再到校准调试的整个制作过程写清楚适合想做数控线性电源、或者已经搭好模拟电源想加数字控制的爱好者参考。1. 数控与模拟的分水岭电源的控制链路变了1.1 传统模拟电源的痛点是“旋钮即参考”传统模拟稳压电源最经典的方案就是LM317、LT1083这类三端稳压器或者用运放TL431搭一个可调稳压电路。它们不是不能用但在实际使用中非常别扭电位器本身有线性误差多圈电位器转10圈才走完量程想精确定位到某个电压要来回找电位器还会受温度、湿度影响发生阻值漂移输出跟着跑。更关键的是传统模拟电源没有“显示”和“记忆”的概念设定值全靠人在旋钮上判断。数控电源的本质不是把模拟稳压去掉而是把“参考值从哪里来”这件事从人手改成单片机。电压的准确度、稳定性、可重复性一下就解决了——设定5.000V开一万次都是5.000V不再依赖手感和电位器寿命。1.2 数控电源的控制链路拆解一套完整的数控线性稳压电源控制链路可以分成两个回路看给定通道单片机的DAC输出一个基准电压进入误差放大器的同相输入端。误差放大器把输出反馈与基准电压做比较放大差值后驱动调整管形成负反馈稳压。这里DAC的电压精度直接决定了输出电压设定精度。采样通道输出端的电压和电流通过电阻分压、运放放大送进ADC。单片机换算成实际值后显示在屏幕上同时可以用软件做保护判断。两个通道合在一起就是“单片机设定参考模拟环路稳压ADC测量反馈软件显示和控制”。很多新手容易误解成“数码管显示电压就是数控电源”其实真正算数控的必须是设定值由数字量给出显示只是附加值。1.3 三种常见数字设定方式怎么选方式分辨率成本输出电压纹波适合场景专用DAC芯片12/16位高中等低正规数控电源制作PWM加RC滤波看PWM位数和滤波级数低偏高入门练手、要求不高的场合数字电位器如X9C103低低低简单可调电压、小电流我推荐直接用DAC。PWM滤波做出来确实能调压但RC滤波电容越大响应越慢电容太小纹波又压不下去属于两头受气。数字电位器分辨率普遍只有100级左右想做到0.01V步进根本不够看。MCP4921这类12位SPI接口DAC几块钱一片分辨率4096级满量程30V对应步进约7.3mV够常规使用了。2. 主功率电路设计30V/3A线性方案如何选型和计算2.1 输入级变压器、整流桥和滤波电容的参数怎么定做电源的第一步不是焊板子是先算账。我这里按一个常见的指标展开输出0~30V最大电流3A。变压器次级电压不能随便选。线性调整管要正常工作必须保持一定的管压降一般取3~5V以上。如果次级交流电压选24V全桥整流后峰值电压是24×1.414−1.4≈32.5V输出30V时调整管压差只剩2.5V对达林顿结构可能不够重载下一压就掉。我实际用的是25V交流双绕组整流滤波后空载约35V30V输出时还有5V压差比较从容。滤波电容的计算用工程近似公式C I × Δt ÷ ΔV电网频率50Hz全桥整流后每个半周期放电时间约10ms3A电流、允许纹波峰峰值3V时C 3 × 0.01 ÷ 3 0.01F 10000μF所以滤波电容至少取10000μF/50V。如果还想纹波再小点可以上两个6800μF并联因为大电解电容的ESR并联后会降下来。2.2 调整管功耗计算别让散热片逼你返工线性电源的最大敌人是发热。这里的计算非常关键功耗发生在调整管上数值等于输入输出电压差乘以电流P (Vin − Vout) × I最恶劣情况是什么不是满载输出30V而是设定0V、电流3A的时候。此时输入约35V输出接近0V调整管承受的功耗高达35×3105W。单只管子扛105W基本不现实即便加巨大散热器也不安全必须并联均流。我用了4只功率管并联每只承受约26W工作在可以接受的范围内。选管时除了看最大耗散功率还要看安全工作区SOA特别是低压差大电流区域很多管子标称150W但低压大电流下SOA不够照样秒烧。管子之间要配对基极串0.1Ω~0.47Ω的均流电阻发射极最好也串小电阻否则电流分配不均匀某一只先过热热失控连锁反应。散热结构上必须用强制风冷自然对流扛不住105W长时间工作。散热器、云母绝缘片、导热硅脂这三样缺一不可风扇建议常转或温控别等到管子烫手了才转。2.3 CV/CC双环控制为什么自动切换这么顺实验室电源必须既能恒压又能恒流。我会用两个运放分别搭电压误差放大器和电流误差放大器两个运放的输出接一个二极管“或”网络然后共同驱动调整管。电压回路想让调整管多导通电流回路想让调整管少导通谁更“急”谁接管输出。听起来抽象打个比方电压环说“输出电压低于设定值继续给门极电流”电流环说“输出电流已经超过设定值不许再给”当负载电流触及设定上限时电流环输出的下拉作用比电压环的上拉作用强调整管就被限制在恒流状态。这个切换完全由硬件自动完成不需要单片机快速响应这也是模拟闭环在电源里的核心价值。2.4 采样位置决定电源准不准电压采样点一定要接在输出接线端子处不要接在调整管后面就直接采。大电流走线哪怕只有0.1Ω3A电流也会产生0.3V压降电源端显示30V负载端实际只有29.7V。这就是为什么很多成品电源有“远端采样”端子把采样线直接连到负载端补偿线缆压降。电流采样我放在输出回路的低端用0.1Ω/5W锰铜分流器。3A时压降0.3V再通过运放放大到ADC的满量程范围。分流器四个引脚必须开尔文接法——电流从一对对角引脚流过电压从另一对对角引脚取这样接触电阻不会叠加到测量结果里。普通贴片采样电阻在3A下发热后阻值会漂读数跟着漂必须用低温漂的大功率分流电阻。3. 数字控制接口DAC、ADC和交互缺一不可3.1 DAC选型与基准电压源头的源头MCP4921是12位单通道DACSPI接口基准电压默认由VREF引脚决定典型值4.096V。输出电压0~30VDAC的4.096V满量程要经过后级运放放大约7.3倍。这样算下来每个LSB对应的输出电压是30V ÷ 4096 ≈ 7.32mV这个分辨率做0.01V步进完全够用。基准芯片不能用DAC的电源电压来代替必须单配。我用REF192基准5V输出温漂指标比普通LDO好一个数量级。TL431也可以但温漂和噪声控制上不如专用基准。有一点必须提醒DAC的输出是类似台阶的保持信号后面必须接高输入阻抗的缓冲运放否则后级放大电路会从DAC拉电流导致阶梯电压被拉歪。运放选低失调的OP07或OPA2277失调电压直接影响输出电压零点的准确度。3.2 电流电压采样通道的调理单片机ADC内部的参考电压最好不要直接用LM2940这类LDO给的3.3V噪声和温漂都没法保证测量精度。我给ADC用独立的外部基准比如2.5V的REF5025电压电流信号按比例落到0~2.5V区间。电压通道用精密电阻做1/10分压30V进来变成3V再经电阻网络缩放到2.5V以内。电流通道先把0.1Ω分流器的0~0.3V放大到0~2.5V放大器增益约8.3倍增益电阻用0.1%精度。软件上别上来就做PID先处理采样。ADC原始值含噪声是正常的我在代码里做了两级处理先从中位值滤波去掉脉冲毛刺再滑动平均平滑。实测下来电压显示稳定到小数点后两位不跳比裸采好太多。3.3 旋钮与屏幕人机交互的完成度调节部分我推荐旋转编码器EC11顺时针加电压、逆时针减电压按下旋钮切换“电压调节/电流调节/输出开关”模式。按键动作要加消抖限幅转动一格只调0.01V按住连续加速变化手感和使用效率才平衡。显示用LCD1602够了但OLED或者0.96寸TFT观感更好。我最终用的两行显示第一行显示设定电压和设定电流第二行显示实测电压、实测电流和当前模式CV还是CC。CC模式一定要在屏幕上显著提示否则你以为是恒压电路坏了其实是进了限流状态。3.4 软件保护只能做第二道防线过压、过流保护在单片机里写ADC采样值超过阈值立刻把输出关断同时蜂鸣器报警。但我要强调软件保护不能替代硬件保护单片机死机、程序跑飞时输出可能直接失控。我在输出端加了独立的硬件比较器输出过压或电流取样过流时直接拉低调整管驱动完全不经过MCU。这是安全底线别省。另外上电瞬间调整管可能因为运放还没有稳定而瞬间全导通输出产生尖峰很多设备就是被它打坏的。软件里启动输出时先给DAC一个0V码延时几百毫秒再慢慢升到设定值实现软启动成本为零效果非常明显。4. 固件逻辑从手拧旋钮到程序设电压4.1 主循环状态机设计固件不要写成一条大流水到底我用状态机管理几个状态清晰地区分功能STANDBY等待用户调节输出继电器断开DAC输出0VRUN输出闭合正常稳压/稳流PROTECT过压/过流触发立刻关断输出等待手动复位CAL校准模式通过按键输入基准值记录校准表主循环里每一轮执行读旋钮事件、更新DAC码、读ADC、换算显示、检查保护阈值。环路不需要跑得飞快20ms左右足够人机调节的分辨率靠编码器挡位处理不依赖循环速度。4.2 设定电压到DAC码的换算公式这是最核心的代码直接贴我的写法#define DAC_REF_V 4.096f #define AMP_GAIN 7.3f uint16_t voltage_to_dac(float vset) { float v_ref vset / AMP_GAIN; // 输出电压反算到DAC需要给的基准电压 if (v_ref DAC_REF_V) v_ref DAC_REF_V; return (uint16_t)(v_ref / DAC_REF_V * 4095.0f 0.5f); }注意浮点转整数时我加0.5再截断这是四舍五入。不这么做的话每次计算都会向零截断累加起来设定值会系统性偏低0.01V步进调10次就偏了0.05V以上。电流设定同理但电流环路的参考电压回路不一样我直接按“满量程基准电压 ÷ 最大电流 × 设定电流”算成DAC码送到电流误差放大器。4.3 软件PID不是必选项别为了“数控”盲追网上很多数控电源教程一上来就上PID其实在线性电源里没那么必要。模拟误差放大器已经用硬件完成了高带宽负反馈单片机插在中间做数字PID相当于给一个本来很漂亮的环路增加ADC采样延迟、DAC更新延迟和量化噪声。实测下来某些PID参数下输出会出现几十毫伏的周期性波动远不如模拟环来得干净。我最终采用的方案是模拟CV/CC双环负责真正的稳压稳流单片机只负责“给定”——输出DAC码、采样、显示、保护。如果你要做的是开关电源数字控制那是另一条技术路线PID绕不开但线性电源用“模拟环数字设定”的组合是成熟又稳的选择。4.4 EEPROM参数保存的细节设定电压、设定电流、校准系数都要存到单片机的EEPROM里否则每次开机归零电源实用性大打折扣。我的设计是固定偏移地址存校准系数固定区域存用户设定两块逻辑完全分开。EEPROM有擦写寿命限制不能每次转动编码器都写。我做了个简单的“脏页标记”机制参数变化时先在RAM里记录持续10秒没有新变化再写EEPROM。这样电源突然断电也能恢复最近一次设定又不会把EEPROM写坏。5. 校准与调试把“能出数”变成“出准数”5.1 电压校准的完整流程焊完板子第一件事不是去试30V而是校准。用精度至少四位半的万用表当标准表一步步来开机后让电源空载预热10分钟让运放和基准达到热稳定。设定0V读取ADC实际显示值记录为电压零偏。设定10V读取ADC实际显示值记录为第一校准点。设定20V读取ADC实际显示值记录为第二校准点。设定30V读取ADC实际显示值记录为第三校准点。校准数据我存放在8个点的校准表里。实际设定电压时先判断落在哪一段再做线性插值反推DAC码。这段代码不复杂但效果立竿见影特别是运放失调和分压电阻误差造成的系统性偏差全被补掉了。5.2 电流校零和温度漂移电流采样最容易栽跟头的是零点。运放输入失调电压、采样电阻残余电阻都会导致无负载时电流读数不为零。我在固件里保存了一个“零电流ADC值”每次开机先读一次分流器两端电压作为软件校零。这样显示才不会是0.013A这种永远清不掉的底数。采样电阻发热是另一个隐性坑。我刚开始用普通合金贴片电阻3A电流跑10分钟电流读数从3.000A漂到3.023A不是电路坏了是电阻温漂。后来换成锰铜分流器漂移降到几毫安级别。电流回路的放大增益电阻也必须用低温漂金属膜电阻或精密电阻排不能用普通碳膜。5.3 纹波、振铃和示波器使用细节调试时都会遇到输出纹波和自激振荡。我的排查顺序是先看DAC输出电压纹波再看基准电压纹波最后测输出端。发现DAC引脚附近有高频振铃是SPI时钟串扰在DAC输出端加了RC低通和运放缓冲后解决。误差放大器需要加相位补偿电容一般取100pF~1nF并联在反馈电阻上消除带宽过高引起的高频振荡。但补偿电容加大了会让动态响应变慢这就得一边用示波器观察负载跳变时的响应一边微调容值。测纹波也有讲究。示波器探头用长鳄鱼夹地线等于拉了一根长天线看到的几十毫伏噪声有相当一部分是空间耦合不是电源本身的问题。要换成探头自带弹簧地针靠近输出端子直接测同时打开20MHz带宽限制和AC耦合测出来的才是真实纹波。5.4 一个典型的排查过程设定10V输出9.95V有段时间我做的电源设置10V屏幕上显示10.02V万用表却量到9.95V三处三个数。一步步拆屏幕显示的是单片机ADC采到的电压它采的是板内采样点不是端子端。采到10.02V说明板内确实有10.02V。万用表量端子只有9.95V说明从板内采样点到输出端子之间有0.07V压降板内大电流走线或者继电器接触电阻引入的。解决方法是把电压采样点从板内改到输出端子处让ADC“看到的点”和万用表“量的点”是同一个点。改完再看屏幕显示和万用表读数完全一致。这个案例很典型很多人以为是校准问题其实是采样位置问题。6. 实测数据与我的几点习惯建议完整版做完后我自己跑了一轮最基础的验证空载输出纹波约2mV以内负载调整率在0.05%左右负载从0.1A跳到2.9A时电压恢复时间约几百微秒连续带载3A半小时散热片温度稳定在70℃左右。数据不是实验室级别的漂亮但作为自制数控电源给单片机板、运放实验、小功率设备供电已经很够用。最后说点很难从图纸上学到的东西。第一焊完先检查电源地线布局大电流地和小信号地不要串成一条长线尽可能单点接地能少踩很多显示跳变和噪声的坑。第二所有功率器件和散热片之间的绝缘垫片安装前用万用表确认绝缘装好后还要确认散热片不带电。第三调试时候一定要串一个限流电阻或者调流到最低习惯性避免电流冲击烧管子毕竟电源坏了可以重做设备烧了才是真的肉疼。这台电源我后来还加了串口指令接口就能让上位机直接设电压自动跑老化测试。数控电源玩到这一步你已经不只是做一台电源而是一个可程控的测试工具了。敢动手拆一台旧电源来改的人基本都能收获一台用了很多年还舍不得换的设备。本文还有配套的精品资源点击获取
返回列表