news 2026/10/15 6:09:15

数控电源电路原理详解:从DAC反馈到ADC采样与保护设计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数控电源电路原理详解:从DAC反馈到ADC采样与保护设计

简介:这份文档面向电子工程、自动化控制方向的学生与硬件爱好者,系统讲解数控稳压电源的电路原理与设计实现,适合课程设计、毕业设计或电源类项目参考。资源为单个doc文档,压缩包约487KB,内容围绕STC89C51单片机主控方案展开,涵盖TLC5615数模转换、OPA2107与IRF9Z24N构成的负反馈恒压输出、电位器反馈调节、键盘输入控制及LCD1602或数码管显示等模块,并配有整流滤波、晶振复位、按键扫描、过流检测与蜂鸣器报警等完整电路图。读者可从中获取从系统综述到各单元原理的详细讲解,理解数字控制与模拟反馈结合的稳压思路,掌握输出电压精准控制与显示的实现方法,为动手搭建或改进数控电源提供可落地的设计参考。目前已有507人学习。

1. 数控电源电路原理讲解:从“旋钮调压”到“按键设值”到底变了什么

很多人第一次拆开数控电源,看到里面还是一颗Buck芯片、一个电感、几个MOS,第一反应是“这不就是普通可调电源加了个单片机吗”。真上手做才发现,普通可调电源靠电位器分压进反馈脚,而数控电源要让单片机去“接管”这个反馈点,中间隔着一层DAC、一层采样、一层闭环控制。这三层里任何一层没处理好,输出要么纹波大得离谱,要么一加载就掉压,要么干脆自激振荡。

这篇讲的是数控电源电路原理,不是讲某个成品怎么用。适合两类人:一类是手上已经有Buck或反激基础,想把它改成按键设值、屏幕显示、能串口读回电压电流的;另一类是买了模块发现“标称5A实际2A就烫得不行”,想搞清楚它内部到底哪里省了料。核心就一句话——数控电源的本质,是把模拟反馈环的参考电压,从固定电阻分压换成DAC可控输出,同时把输出电压电流采回来给MCU做显示和保护。理解了这句话,后面所有电路都是围着它转的。

2. 功率级选型:Buck、反激还是线性,先看压差和电流

2.1 三种拓扑在数控场景下的真实取舍

做数控电源第一步不是画DAC电路,而是先定功率级。常见做法有三种:线性调整管、Buck降压、反激升降压。选错了后面全是坑。

线性方案最简单,MCU的DAC直接驱动调整管基极或栅极,输出纹波极低,适合给模拟电路供电。但它的致命伤是压差全部变成热。输入12V输出5V带2A,调整管上就要耗掉14W,不加风扇根本扛不住。所以线性数控电源一般只做到输入输出压差3V以内、电流1A以下。

Buck方案效率高,适合压差大、电流大的场景。但Buck的反馈环是围绕固定参考电压设计的,要改成数控,就得把原来的分压电阻网络换成DAC输出。这里有个关键点:Buck芯片的FB脚通常要求一个稳定的直流参考,DAC输出如果有纹波或噪声,会直接调制到输出上。所以DAC后面一般要加RC滤波,截止频率压到几百赫兹甚至更低。

反激方案适合需要升降压或隔离的场合,但反激的反馈环补偿更复杂,数控化后环路稳定性更难调。如果只是做桌面可调电源,Buck加一个前置升压或者用SEPIC,比反激好调得多。

拓扑适合压差适合电流数控改造难度主要坑点
线性<3V<1A低散热,压差大时效率极低
Buck>3V1~10A中FB脚噪声敏感,需滤波
反激任意<5A高环路补偿复杂,变压器设计门槛高

2.2 电感、MOS和采样电阻的参数怎么定

定了拓扑之后,功率级的三个关键参数是电感值、MOS耐流和采样电阻。以Buck为例,假设输入24V,输出0~20V可调,最大电流3A,开关频率300kHz。

电感值按最恶劣工况算,也就是占空比接近50%的时候。纹波电流一般取输出电流的30%左右,即0.9A。电感量公式是 L = (Vin - Vout) × D / (fsw × ΔI)。代入Vin=24V,Vout=12V,D=0.5,fsw=300kHz,ΔI=0.9A,算出来L约22μH。实际选22μH或33μH都可以,但要注意电感的饱和电流必须大于峰值电流,峰值是3A加一半纹波0.45A,约3.45A,所以选饱和电流5A以上的。

MOS的耐压至少是输入电压的1.5倍,24V输入选40V或60V的管子。导通电阻Rds(on)直接决定发热,3A电流下如果Rds(on)是20mΩ,导通损耗是0.18W,还能接受;如果是100mΩ,就是0.9W,小封装会烫。

采样电阻放在低端还是高端,决定了后面运放的选型。低端采样简单,运放共模电压接近地,但会破坏地平面,大电流时采样点地电位会抬。高端采样需要运放支持高共模电压,比如INA240这类专用电流检测放大器。我一般会优先选高端采样,虽然贵一点,但地平面完整,后面ADC读数也稳。

# 电感量快速估算(Buck,连续导通模式) # L = (Vin - Vout) * D / (fsw * ΔI) # 其中 D = Vout / Vin,ΔI = 0.3 * Iout_max Vin=24 Vout=12 Iout_max=3 fsw=300000 delta_I=$(echo "0.3 * $Iout_max" | bc -l) D=$(echo "$Vout / $Vin" | bc -l) L=$(echo "($Vin - $Vout) * $D / ($fsw * $delta_I)" | bc -l) echo "电感量约: $L H"

这段脚本只是把公式敲进命令行,方便改参数试算。实际选型还要看电感的直流电阻,DCR太大会额外发热。一般22μH/5A的屏蔽电感,DCR在30mΩ以内算合格。

3. DAC与反馈环:把“设值”变成真实输出电压

3.1 DAC怎么接入FB脚,两种常见接法

数控电源的核心动作,是让MCU输出的数字量变成FB脚的参考电压。常见接法有两种。

第一种是DAC直接替代原分压网络的下臂电阻。原本Buck输出经过R1和R2分压,FB脚电压等于Vref。现在把R2换成DAC输出,DAC电压记为Vdac,那么输出电压关系变成 Vout = Vref + (Vref - Vdac) × R1/R2'。这种接法要求DAC输出范围能覆盖Vref附近,一般DAC输出0~3.3V,Vref是0.8V或1.25V,可以覆盖。

第二种是DAC经过一个电阻注入FB节点,和原分压网络共同作用。这种接法更灵活,但计算稍复杂。我一般用第一种,因为关系式直接,调试时容易反推。

关键参数是DAC的分辨率。12位DAC在3.3V满量程下,每LSB是0.8mV。如果反馈网络的分压比是1:10,那么输出每步变化8mV。对于0~20V输出,步进8mV已经够用了。如果要求1mV步进,要么提高DAC位数到16位,要么减小分压比,但分压比太小会影响环路稳定性。

# DAC接FB下臂时的输出电压计算 # Vout = Vref + (Vref - Vdac) * R1 / R2 # 其中R2是DAC输出到FB的等效电阻,实际是DAC输出阻抗加串联电阻 Vref = 0.8 # Buck芯片内部参考 R1 = 10000 # 上臂电阻10k R2 = 3300 # 下臂等效电阻3.3k Vdac = 0.5 # DAC当前输出 Vout = Vref + (Vref - Vdac) * R1 / R2 print(f"输出电压: {Vout:.3f} V") # 反推:要输出12V,DAC应该输出多少 Vout_target = 12 Vdac_needed = Vref - (Vout_target - Vref) * R2 / R1 print(f"目标12V时DAC应输出: {Vdac_needed:.3f} V")

这段代码说明一个事:DAC输出越低,输出电压越高,因为FB脚需要维持Vref,下臂拉得越低,上臂分压就得越高。调试时如果发现输出反了,先检查这个极性。

3.2 反馈环补偿:DAC滤波和环路带宽的拉扯

DAC输出不是干净的直流,它带有更新率带来的阶梯纹波。如果直接接到FB脚,输出上会看到和DAC更新率同频的纹波。所以DAC后面必须加RC滤波。

但RC滤波的截止频率不能太低,否则DAC设值变化时,输出电压响应会变慢。假设RC是10k和1μF,截止频率约16Hz,设值从5V跳到10V,输出要几百毫秒才能稳定。如果RC是1k和1μF,截止频率160Hz,响应快,但滤波效果变差。

我一般取截止频率在100Hz左右,既能滤掉DAC更新纹波,又不会让输出响应太慢。具体值在调试时用示波器看FB脚,如果看到明显阶梯,就加大电容;如果设值跳变后输出过冲或振荡,就减小电容或检查环路补偿。

还有一个坑:有些Buck芯片的FB脚内部有上拉电流源,DAC接上去后会被这个电流源影响。比如FB脚内部有10μA上拉,DAC输出阻抗是1k,就会产生10mV误差。解决方法是DAC后面加一个运放缓冲,输出阻抗降到毫欧级,或者选DAC输出阻抗足够低的型号。

注意:DAC接FB脚之前,先用可调电压源手动加在FB脚上,确认输出电压能跟着变,再接DAC。这一步能排除反馈网络本身的问题。

4. 采样与保护:ADC读回和过流关断怎么做才不误动作

4.1 电压电流采样点的选择和ADC基准

采样电压一般直接从输出端分压,送到ADC。分压比要保证最大输出电压时,ADC输入不超过基准。比如输出最大20V,ADC基准3.3V,分压比至少是6:1,实际取10:1留余量。分压电阻用1%精度的金属膜电阻,温漂小的更好。

采样电流用采样电阻加运放。采样电阻放在输出负极和地之间,运放做差分放大。放大倍数要保证最大电流时,运放输出接近但不超过ADC基准。比如采样电阻10mΩ,最大电流3A,压降30mV,放大100倍后是3V,刚好。

ADC基准很关键。如果用MCU的VDDA做基准,VDDA本身会随负载变化,读数就不准。常见做法是用一颗外部基准芯片,比如2.5V或3.0V的,给ADC单独供电。这样读数稳定性好很多。

// 电压电流ADC读数换算示例(12位ADC,外部基准2.5V) #define ADC_REF 2.5f #define ADC_MAX 4095.0f #define VOLT_DIV_RATIO 10.0f // 分压比10:1 #define CURR_GAIN 100.0f // 运放放大100倍 #define CURR_SHUNT 0.01f // 采样电阻10mΩ float read_voltage(uint16_t adc_val) { float v_adc = adc_val / ADC_MAX * ADC_REF; return v_adc * VOLT_DIV_RATIO; } float read_current(uint16_t adc_val) { float v_adc = adc_val / ADC_MAX * ADC_REF; float v_shunt = v_adc / CURR_GAIN; return v_shunt / CURR_SHUNT; }

这段代码里,ADC_REF和分压比、放大倍数必须和实际电路一致,否则读数会差一个系数。调试时用万用表量实际输出电压,和ADC读数对比,如果差得多,先检查分压电阻值。

4.2 过流保护:硬件比较器和软件关断的配合

过流保护不能只靠软件。软件轮询ADC有延迟,等发现过流时MOS可能已经炸了。常见做法是硬件比较器加软件关断。

硬件比较器一路接采样运放输出,另一路接可调阈值,比较器输出直接拉低Buck芯片的使能脚或PWM控制脚。这样过流时硬件在微秒级关断。软件同时也在读电流,如果连续几次超过阈值,就判定为持续过流,关闭输出并锁死,等用户按键复位。

阈值设定要留余量。比如最大3A,硬件阈值设3.5A,软件阈值设3.3A。这样短时尖峰不会误触发,持续过流又能可靠保护。

调试时用电子负载做阶梯加载,从0A慢慢加到3.5A,看硬件比较器在哪个点动作。如果提前动作,检查比较器阈值和采样运放的增益误差。如果迟迟不动作,检查比较器输出是否真的拉低了使能脚,有时候使能脚内部有上拉,比较器开漏输出拉不动。

5. 避坑与排查:数控电源调试中最容易翻车的五个点

5.1 输出纹波大,示波器上看全是开关尖峰

现象:输出接纯电阻负载,示波器交流耦合看纹波,发现开关频率处的尖峰很大,几百毫伏甚至上伏。

原因:采样点或反馈走线太长,形成了天线效应,把开关节点的高频噪声耦合进了FB脚。或者DAC滤波电容太小,DAC更新纹波直接调制到输出。

解决:FB脚走线尽量短,远离电感和开关节点。DAC滤波电容加大到10μF并联0.1μF。示波器探头用弹簧地针,不要用长地线,否则测到的尖峰有一部分是探头环路感应来的。

5.2 设值后输出慢慢爬升,响应像蜗牛

现象:按键设值从5V改到10V,输出要好几秒才稳定,中间还可能有台阶。

原因:DAC滤波RC时间常数太大,或者MCU更新DAC的速率太慢。有些方案用PWM加RC模拟DAC,PWM频率低,RC又大,响应自然慢。

解决:减小RC滤波的电阻或电容,把截止频率提到100Hz以上。如果是PWM模拟DAC,提高PWM频率到几十kHz,同时减小RC。但要注意PWM频率太高时,RC滤波后的纹波可能反而变大,需要折中。

5.3 带载后电压掉,空载又正常

现象:空载时输出电压准,一加负载就掉,负载越大掉得越多。

原因:采样点选在了输出电容之前,负载电流在走线上产生压降,采样没采到。或者反馈环的直流增益不够,带载后FB脚电压偏离Vref。

解决:采样点移到输出端子附近,用开尔文接法。检查Buck芯片的误差放大器增益,如果不够,考虑换更高增益的芯片或加一级运放做积分补偿。

5.4 过流保护误动作,电机启动就关断

现象:带电机或容性负载时,一启动就触发过流保护,但实际电流没超。

原因:电机启动或电容充电时有浪涌电流,峰值可能超过阈值但持续时间很短。硬件比较器没有延时,直接动作了。

解决:在比较器输出加RC延时,或者软件里做去抖,连续多次超过阈值才关断。硬件延时一般取1~10ms,既能躲过浪涌,又不会让MOS承受太久过流。

5.5 ADC读数跳动大,最后一位总在变

现象:输出电压稳定,但ADC读数最后几位一直跳,显示不稳定。

原因:ADC基准噪声大,或者采样走线被开关噪声干扰。MCU内部基准通常比外部基准差。

解决:换外部基准芯片,基准脚加10μF和0.1μF退耦。ADC输入加RC低通,截止频率远低于开关频率。软件上做滑动平均或中值滤波,但滤波会牺牲响应速度,过流保护不要用滤波后的值。

6. 进阶技巧:用校准表把精度从5%拉到0.5%

数控电源做出来能调压调流只是第一步,真正拉开差距的是精度。DAC和ADC都有增益误差和偏移误差,分压电阻和采样电阻也有公差。不校准的话,设定5V实际输出4.8V,读回电流和实际差10%,都是常事。

我一般会在固件里放一张校准表。电压校准取三个点:比如2V、10V、18V,用外部万用表读实际值,和设定值对比,算出增益和偏移。电流校准取两个点:1A和3A,用电子负载读实际值。然后固件里用线性插值修正。

// 电压校准:两点法算增益和偏移 typedef struct { float set_val; float actual_val; } CalPoint; CalPoint volt_cal[3] = { {2.0f, 1.98f}, {10.0f, 9.92f}, {18.0f, 17.95f} }; // 用最小二乘拟合 y = kx + b void calc_volt_cal(float *k, float *b) { float sum_x = 0, sum_y = 0, sum_xy = 0, sum_xx = 0; int n = 3; for (int i = 0; i < n; i++) { sum_x += volt_cal[i].set_val; sum_y += volt_cal[i].actual_val; sum_xy += volt_cal[i].set_val * volt_cal[i].actual_val; sum_xx += volt_cal[i].set_val * volt_cal[i].set_val; } *k = (n * sum_xy - sum_x * sum_y) / (n * sum_xx - sum_x * sum_x); *b = (sum_y - *k * sum_x) / n; }

这段代码用三个校准点拟合一条直线,得到增益k和偏移b。实际设值时,先算目标值对应的DAC码,再用k和b反推修正。校准后精度一般能到0.5%以内。

校准时的血泪经验:一定要在热机状态下校准。冷机时运放和基准的温漂还没稳定,校准完等机器热了又偏了。我一般让电源空载运行十分钟,等内部温度稳定后再采校准点。另外,校准用的万用表精度至少要比目标精度高一个数量级,否则校了个寂寞。

还有一个后悔药:校准参数存在EEPROM里,但EEPROM写入次数有限。不要每次开机都写,只在用户主动校准后写一次。读的时候上电读一次到RAM,后面都用RAM里的值。

希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 6:09:10

AI技术速递的工程化解读:从资讯到决策落地

1. 项目概述&#xff1a;这不是资讯汇编&#xff0c;而是一份AI技术演进的现场观测笔记“衍辉AI速递 10.8&#xff5c;OpenAI开放GPT-6智能界面等11条AI资讯”——这个标题乍看是常规的科技资讯简报&#xff0c;但作为在AI工程一线摸爬滚打十多年的从业者&#xff0c;我一眼就看…

作者头像 李华
网站建设 2026/10/15 6:09:10

训练LLM自主生成可复用工具:从SFT到DPO的完整实践

静态化、接口抽象、测试用例、评估管线&#xff0c;这套东西一步步推进下来&#xff0c;前后大约八周时间跑通了全流程。下面我会把这套方案的完整设计、训练数据构造、偏好优化细节、评估管线搭建过程全部展开&#xff0c;包括那些文档里不会写的坑和我自己的取舍逻辑&#xf…

作者头像 李华
网站建设 2026/10/15 6:09:09

基于S7-1200的PLC流水灯控制系统设计与仿真全解析

《可编程控制器原理与应用》这门课到了综合实验阶段&#xff0c;题目一般都会开放好几组&#xff0c;我抽到的是那个看起来人畜无害的“基于S7-1200的PLC流水灯控制系统设计与仿真”。当时第一反应和大多数人一样&#xff1a;流水灯&#xff1f;这不是网上随便一搜就有梯形图的…

作者头像 李华
网站建设 2026/10/15 6:09:04

1.5GB锂电池精选资料:从电化学到BMS的三个月学习路线

怕你没耐心先听结论&#xff1a;所谓1.5GB的锂电资料&#xff0c;真正值得逐字精读的&#xff0c;可能连300MB都不到。剩下的大部分&#xff0c;是拿来查的、拿来对比的、拿来画图的。很多人一听说“1.5GB资料包”就头大&#xff0c;觉得学习量太大、门槛太高。但实际整理这批资…

作者头像 李华
网站建设 2026/10/15 6:08:38

2000-2024年地级市农林牧渔业面板数据:构建、清洗与应用

做地级市层面的农林牧渔业数据分析&#xff0c;最头疼的往往不是模型怎么跑&#xff0c;而是数据从哪里来、口径怎么对齐、缺失怎么处理。我自己这几年整理过不少区域经济面板数据&#xff0c;也踩过很多坑。这次分享一个覆盖2000到2024年、全国地级市尺度的农林牧渔业数据集&a…

作者头像 李华
网站建设 2026/10/15 6:08:38

2024主流轻量级AI模型本地部署实战指南

我无法根据您提供的标题生成博文&#xff0c;因为该标题中包含明显虚构、不实且违反事实核查原则的信息。具体原因如下&#xff1a;Claude Haiku 5.5 不存在&#xff1a;Anthropic 官方从未发布过名为“Claude Haiku”的模型系列&#xff1b;其轻量级模型为 Claude Haiku&#…

作者头像 李华