
数字电源转换器
简介
四开关buck-boost电平转换器:输入5V-28V,输出最低是输入的1/9,最大是输入的9倍,最高升压是100v,输入输出都限流18A。
简介:四开关buck-boost电平转换器:输入5V-28V,输出最低是输入的1/9,最大是输入的9倍,最高升压是100v,输入输出都限流18A。开源协议
:GPL 3.0
描述
先叠个甲:
本人是个单片机新手(以前只会arduino拼积木),喜欢玩硬件,不擅长编程,如果语句繁琐还请见谅,可以的话请大佬们多指导。
本人非常喜欢大功率电源,但之前要么是停留在碎片化的理论知识(刷视频刷到的),要么就是用现成的控制芯片(WEBENCH启动!),技术丝毫没有长进。于是萌生了用单片机去做一个电源的想法,为了简单好上手,纠结到底是先做buck好呢还是先做boost好呢,两种拓扑都挺常用的,直到我刷到了唐老师的四开关buck-boost的讲解视频,“感觉这个也挺简单的”,而且能升降压满足各种用电需求,就一直想去做一个。
但技术力不够,大一开学时为了进实验室才开始接触比较底层的编程,C语言都是两三个月的速成鸡,51单片机先学的89C52,一个星期的速成鸡,在同学佬的推荐下接触到更厉害的8h8k64u(当时还是挺震撼的),跟着陈老师视频又学了两三星期才熟练一些(当时并不知道学习打卡送试验箱,自己画了个板子就学了,太亏了),后来了解到stc的论坛的时候看到注册送开发板,就申请了一个学学。(这个发七集感悟也能拿实验箱,但是8051u和8h8k64u的编程方式区别不大,导致我直接无缝衔接了,学习打卡只发了三集就没再看了,可恶,又痛失一个试验箱)
看立创周年庆的时候得知stc和立创联动了,就将这个想法付诸行动了,大一课和考试都很少,设计的时间也是比较充足的,于是就有了这个工程。
本项目以实验和学习电源系统为主,第二版也不建议复刻,可以等到更完善的第三版,这样可以少花费点金钱和精力。
参数说明:
注意,目前这只是一个电平转换器,不能恒流,因为大量程霍尔电流传感器的精度堪忧。
理论上boost的升压可以无限大,但是占空比超过90%之后会变得不好控制,所以这里把占空比限制在10%-90%之间(在20%-80%以内会更好),于是就有了简介里的输出电压是输入电压的1/9到9倍
最高不要超过100V,简易在80V以内运行,因为又加了四颗100V-10uf的固态电容来压纹波,所以取80V安全余量(日常似乎用不到这么高的电压)。
硬件的优化空间还是很大的,要是把输出电压上限降到72V以内,纹波还能再压,而且较低的输出电压意味着共模电压更低,可以使用高精度运放来处理输出端电流(霍尔电流传感器真玩不来)。
DC和TYPEC的最大输入电流限制在7A(我手头的电源适配器没有超过7A的),XT60的输入电流限制在18A(电流密度已经非常高了,板子上用的1oz顶层和底层,凑了个2oz,尽量不要跑满)。
演示视频的链接:
嘉立创xSTC联动比赛,个人参赛小项目:数字电源转换器演示视频_哔哩哔哩_bilibili
日志:
2025.12.28 完成V1.0的设计
2026.1.8 完成V1.0(失败)的焊接


V1.0问题:1.typec(由电脑USB口供电)插上后只有0.4V电压,由typec供电向TX4220的防反接二极管迅速温升到22℃左右(环境温度9℃,很可疑),无法正常供电,检查时发现CH442E在没有供电的情况下DB和DC不与S1、S2相连,造成诱骗芯片不能进行通信(疑问:Type-C就算不通信也默认输出5V,但这里始终是0.4V,恰好是那个二极管导通时的压降,后面测量也未发现短路情况)
2.由于1的问题,我决定先用DC口供电(DC电源适配器用的鸡哥19V==6.32A的电脑充电器),再用示波器查看CH442E和CH224Q的工作情况,结果插上电后,TX4220的1号引脚,也就是开关输出脚,迸发出火星后喷发浓烟,当场烧毁

输出端重载也就那个35v-100uf的固态电容,但是芯片手册当中注明有软启动和输出限流,器件取值也按照官方示例中的那样。猜测可能的原因有:输入端走线过长,TVS的钳位电压大于TX4220的最大工作电压,导致插入一瞬间电压尖峰将芯片击穿,随即出现冒烟现象;或者由于输出端电容ESR太小,导致相位裕度过小,使系统不稳定,产生不可控的震荡后烧毁。
2026.1.10 完成V2.0设计
2026.1.14 完成V2.0焊接(立创真快,四层板也三四天就到了)


Type-C用电脑供电正常输出5V,降压后的3.3V正常输出,3.3V升14V也正常(电源这一块儿,TI的强大无需多言)
开始编写代码......
2026.1.17
代码大致框架已经写好,以下是电脑供电,开环空载运行时的数据:
这里电压都是比较精确的(相对于我的万用表,从小数点第二位出现偏差,差值在0.04左右浮动),这个电流ina226肯定是比较精准的,就是这个霍尔电流传感器在电流非常小的情况下(我这里是20A量程的)误差比较大(后来发现是计算公式0.066敲成了0.0066,翻了十倍),直接给我干个能量不守恒了,这点我再想想怎么搞个软件滤波,温度这里懒得给℃取模了,就直接用开尔文当单位了,现在还只能用EC11调电压,之后再把交互调一下

这个驱动芯片用着很方便,但是温升显著,家里八度,一分钟升到了22度,之后就保持在这个值了,因为是空载,所以mos和环境温度差不多,夏天不得干到五六十度。

空载时的电压纹波在100mV左右(虽然空载好像没什么意义),这也在情理之中,因为只用了两颗470uf大电容,耐压高一点的陶瓷电容不好找,容量比较大的也就100nf,固态电容超过100V的更是天价(指运费),如果不需要63V以上的应用,可以把输出电容改成贴片的固态电容,63V以内价格、大小、容值还是比较合理的。

下面是开关管的驱动波形,没有尖刺,比较圆滑,说明10Ω驱动电阻是比较大的,想提开关速度来降低纹波的可以把这个改小一点,但是驱动温升就不好说了。



开始写交互和闭环......
2026.1.19-0:33 这是悲痛的时刻
测试散热风扇呢,结果高频噪声非常严重,直接花屏,无论是把线绕到磁环上,还是在靠近风扇处并联电容都无济于事,串扰严重到让单片机频繁重启,然后莫名其妙就正向短路了,鸡哥电源适配器的接头也直接带走了,man,What can i say.
烧熔的接头


2026.1.19-2:48 复活吧我的电源
经过一个多小时的排查与检修,最终发现只有两颗电容失效短路,就是给输入降到3.3V的降压芯片的输入电容,应该是风扇启动浪涌电流太大导致的,最终只有电容受伤的世界达成了。

可以明显看到右边那个已经鼓包了。
2026.1.20 做了一些测试
这是负载(1KΩ 100W),已经是手头上功率最大,阻值最小的电阻了,买的大功率滑动变阻器到现在还没发货,应该是赶不上了。
测试条件:环境温度10℃,20V输入,升压到53.6V(从3.3V开始,逐渐上升),观察温度变化,为什么只升到53V呢,往下看就知道了。
初见倪端



功率部分就驱动温度比较高,mos也没多热

电压来到了53.6V

然后我们的电感就快要红温了

但是mos和驱动也来到了40℃,再升下去肯定要出问题。

我们的纹波也达到了惊人的500mV!所以这次测试到此为止,结果不理想,是完全不能用的地步。

感觉和电感有很大关系,百度了一下:
1.我们的开关频率只有100kHz,但示波器上的震荡在两百多k,应该是板子功率布局不合理,导致寄生参数引发震荡,而铁硅铝的分布式气隙对高频,小幅度振荡的阻尼效果极强,导致铁硅铝将振铃能量转化为了热能(以后不能无脑铁硅铝大磁环了,虽然饱和电流很诱人);
2.输出电容只有两颗普通的铝电解质电容,那几个瓷片电容在高压下由于直流偏压效应容量损失太多,封装也大,所以整体ESR太大,压不住纹波;

在两个大铝电解质电容上各并联一个100V-10uf的固态电容后(此时并未更换电感),同样是53.6V,1kΩ负载,纹波降到了200mV,但是振铃的峰值有所下降

接下来更换为铁氧体电感,对高频振铃几乎透明,所以应该不会怎么发热,因为网上扁平线电感22uh的饱和电流只有10A,我们目的是至少20A,而且现买的话快递比较费时间,所以我就用手上剩余的EQ4020 PC95的磁芯自己绕了一个,用的0.1*600的利兹线,四匝刚好绕满一层。

我们来计算一下:
Bmax=Vin*Ton_max*D/(N*Ae)//这里都取最大
=28V*10us*0.9/(4*278mm^2)
=0.227T
已知PC95在常温下的磁饱和在0.51T,100℃也只降到0.4左右,所以留有1倍余量
接着算饱和电流
Isat=N*Ae*Bsat/Lm>20A
4*278mm^2*0.4/Lm>20A
Lm<22.24uH
用万用表电感档测量(有条件的建议用数字电桥,测试频率100kHz去测)无气隙的情况下,Lm=67.2uh
所以我们要开气隙来降低感量,提高抗饱和能力,开气隙的长度也有计算公式,我就懒得算了,因为做不到严格控制
所以一边磨一边去测量,只用磨中柱即可。
大概是磨了这么多,感量降到了21.6uH,已经足够了,磨太多增加损耗

本来想着放到背面,但是线太粗了,孔太小了,就只能改成贴片了。

同样是53.6V,1kΩ负载,纹波的形状都变了。

这种铁氧体磁芯的比热容应该挺大的,焊接后晾了十几分钟还是热乎的,但是等不及了,就直接开测了,还是熟悉的配方,时间是开机10分钟,可以看到,比铁硅铝改善太多了。

接下来是25V,150Ω负载,100mV左右的纹波,还是有点大。

感觉是电容位置的问题,于是又在输出的接头上各并联一个100V-10uf的固态电容,纹波来到了80mV左右,感觉继续加下去也不会有太大改善了,应该换其他容值的,但是手头上没有。

接下来测一下我们的老朋友,降压到14V,启动电流达到了惊人的0.6A,稳态电流0.2A,风扇劲儿也是真的大,观察波形(用夹子使探头并联在杜邦线上,并且靠近电源输出端),发现并没有太大高频污染(当然这时候风扇上的磁环并没有取下来,没有控制变量,也可能是示波器采不出来)
所以之前惨案就是因为风扇启动瞬间功率不够导致集体掉电重启。

不知道是因为带载的原因,还是因为风扇上并联了一个35V68uf的固态电容导致的,纹波下降了几毫伏。

来张全家福

2026.1.22 重新调整PI参数,删除了效率显示(霍尔电流传感器结果跳变太严重了,但是我只会平均值滤波,先存5个数据,然后排序,剔除最大值和最小值后取平均值,然而并无卵用,不仅降低了反应速度,跳变问题依然存在,然后你能看到输出功率大于输入功率的情况,直接能量不守恒了,所以也放弃了这个算法,同时删除了效率显示,换成了PI控制的显示,最后录了个视频放到b站了,代码在附件里,选择24Mhz下载就行,如果能看看代码,给点高级建议就更好不过了)
2026.1.24 突然想到个问题,既然用铁硅铝测出来波形有震荡,铁硅铝将高频震荡阻尼了,但是高频震荡可以轻松通过铁氧体啊,实质上高频震荡并没有消失,那岂不是全加在mos上了,于是我又是1kΩ负载,20V输入,53V输出的条件下去测量后级mos的漏极相对于地的电压波形(就是输出端和电感以及地相连的那个mos),很奇怪,几乎看不到电压尖峰(之后也测了每个mos的d相对于地的电压波形,也看不到震荡,也可能是震荡频率太高,示波器显示不了)

上升沿

下降沿

难道是因为铁硅铝自己的某种特性吗,还是寄生参数刚好和这个型号的铁硅铝发生了什么,网上查的次谐波震荡频率是开关频率的一半,但这里变成了两倍,论坛上有些案例和我的很相似,他们的解决方案是换用更大感量的电感,但是大感量的DCR也会增加,大电流很不友好,发现自己还是太无知了,有点无从下手。
V3.0更新预告
二代虽然已经能够使用,但是可以优化的地方很多:
1.比如降低理想的输出电压,上限定为48V将有更多的滤波电容规格可以选择,同时mos可以换成耐压80V的(有钱上氮化镓,开个玩笑),内阻和栅极电荷可以进一步降低,因此开关频率可以进一步提高,最终可以更好利用铁氧体的高频性能,使用更小的磁芯,缩减滤波电容的容值和大小。
2.降低输出电压后,可以换用高精度运放去检测电流,这样就可以写一下恒流模式的相关代码了,主要是想搞个电池和超级电容的充电器,一个充电器解决多种电池规格的充电问题,现在已经堆了很多充电器了,带着太麻烦。
输出电压降低后还可以在输出端加理想二极管芯片防倒流。
3.现在在想:是再加一路降压到5V的,给风扇单独供电(Vin经过DCDC降到3.3V和5V,14V由DCDC从3.3V升压);还是统一成5V和15V的双电源(Vin经过DCDC降到5V,15V由DCDC从5V升压,3.3V由5V经过LDO降压),这样有个问题就是在电压低于5V(有时候电脑供电是4.8V,或者老一点的电源适配器只支持5V)不能工作了,给调试带来一定麻烦。
曾经想过先用dcdc降到3.3V给单片机启动,再用sot-23封装的小mos搭一个非同步的两开关buck-boost去转换输入电压到栅极驱动和风扇供电,这样减轻了3.3V的压力,15V输出也会更有劲儿,但是放弃的原因有两点(1.两个nmos:找不到能在这么低电压下工作的栅极驱动器(带自举的);2.1p1n:在输入电压高于20V时会很麻烦),但是我坚信个人的眼界是有限的,肯定有大佬有奇思妙想。
4.输入电容比较大,导致上电瞬间浪涌电流比较大,我用pd20V上电时,直接显示过流了,这里我再想想怎么解决。
5.以后功能比较多了可以上个操作系统,增加一个更完善的菜单功能。
我个人能想到的改进方向是以上五点,也希望听听大佬们的建议,目前第三版还在设计中,比赛结束前是见不到成品了,所以先用二代结项,第一个小项目肯定希望越来越好,最喜欢影视飓风的口号了——无限进步!!!
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。





评论