【开源】STC8A8K可调固定电压源
简介
由STC8A8K64SA12单片机控制的电压源,具有可调、固定两种输出模式,带低压和过压保护
简介:由STC8A8K64SA12单片机控制的电压源,具有可调、固定两种输出模式,带低压和过压保护开源协议
:GPL 3.0
描述
STC8A8K可调/固定电压源
(原型机,仅提供灵感和思路,不宜复刻)
主图
正面
方案一预览图
方案二预览图
一.功能简介
该电源由STC8A8K64SMCU控制,具有:
- 可调、固定两种输出模式;
- 0.96寸OLED电压显示和Led工作状态指示灯;
- 短路保护,输出过压、低压警告,输入过压保护;
- 程序调试过程的硬件保护电路;
- AC 220V市电输入和DC 4.5~12V宽电压输入。
二.硬件基本原理
1.控制层(顶层)
顶层主要负责向中间层传递4位二进制的控制信号,分别连接四个电源模块的使能端,上层旋钮控制“待机”、“3.3V”、 “5.0V”、“12V”、“ADJ”三种状态的切换,进而控制模块工作状态,改变输出电压。
(1)MCU控制
MCU的ADC模数转换口与电位器相连,在程序中针对转换结果设置不同的区间,实现旋钮(电位器)控制工作模式。在不同的工作模式下,MCU输出不同的3位二进制信号,传递给下一级的3-8译码器(74HC238)输入端,选择8个输出端口中的4个,作为上文提到的“4位二进制的控制信号”,既传递给下一层,也作为led的控制信号,驱动led指示当前工作状态,在OLED或是MCU离线时,指示当前工作状态或错误原因。
为什么采用数字IC作为MCU和电源模块之间的缓冲?为什么不直连MCU和电源模块简化设计?其一是因为该电源为原型机,在面向硬件编程的过程中,如果错误地同时使能两个电源模块可能会损坏电源,因此利用3-8译码器类似互锁的原理,保证同时只有一个电源模块被使能。在程序和硬件已经可行的情况下可以去除这一步。其二是可以作为装饰品,那么大一块空着也是空着。
(2)ADC电压采样
使用了STC8A8K的ADC采样功能,使用原始的电阻分压采样,带SMBJ5.0保护ADC采样口。共设置两条采样通道,先烧录测试程序(已上传附件),使用较精确的电压表在可调模式下,记录不同电压对应的ADC转换结果(理论上是线性变化的),计算出回归方程,写入正式的程序中,由两个通道分别计算求平均值,最终得到当前的电压值。最后将结果通过OLED驱动程序显示在屏幕上。
采样通道(下)
上层PCB
2.(被)驱动层(中层)
中间层主要负责根据顶层传递下来的控制信号,启用对应的电源模块,输出正确的电平。
控制信号 输出电压
000 0V(闲置)
001 3.3V
010 5V
011 12V
100 1.8~13V(可调)
111 0V(保护状态)
(1)固定输出电源模块
固定输出模式包括3.3V、5V、12V固定电压的输出模式,采用了对应型号的LM2596作为电源模块,按照正确的接线方式连接使能端和信号线即可实现功能。
(2)输出可调电源模块
选择LM2596-ADJ开关电源模块,使用一大一小两个阻值的旋钮电位器串联作为反馈电阻,旋转旋钮改变反馈电压大小,实现输出电压的调节功能,一大一小的阻值则可以实现电压粗调和微调。
注:这种简单地设计并不属于数字电源的范畴,若想要实现纯数字控制的数字可调电源,可以用分立元件重建中间层,搭建一个大型降压开关电源,将MCU的IO口连接到开关管的栅极,输出不同占空比的高频方波信号(PWM调制),并设计闭环反馈系统,来输出并维持不同的Vout。
中层PCB
3.电源层(底层)
方案一(内置变压器、2.2W)
底层主要负责上面两层的供能,将220V的AC市电转化为15V的DC直流电,作为各电源模块降压前的VDD。再通过LDO将DC 15V转化为DC 5V提供给MCU、OLED等器件。此外,还设置了直流输入的备用路径,将DC 4.5~8V的输入电压提升到15V,再作为上述的VDD。
(1)AC 220V to DC 15V
220V市电通过220:12的变压器和整流桥转化为16.9V左右(≤12*√2 V),再通过1个LM2596-ADJ电源模块降为更稳定的15V电压,提供给中层作为VDD。同时VDD通过LDO(ASM1117-5.0)转化为5V的控制信号电源,提供给中上两层。
(2)DC 4.5~8V to 15V
为了防止突然断电或者没有市电接口,但又急需一个电压源的情况出现,该电源设计了针对USB、DC 2.1和DC 1.3等传统5V电源接口的输入路径。5V电压通过升压电源模块XL6019,升压到15V,直接作为VDD提供给旁边的5V LDO和中层电源模块。并且设有肖特基二极管作为PN结隔离,在主要路径上阻断备用路径流向,防止同时接入AC 220V和5V DC时可能产生的冲突或意料之外的逆流。值得注意的是,碍于功率(能量)的守恒,并且没有配备任何快充协议,该路径输出功率极其小。
(3)短路保护
除每层的GND都带有自恢复保险外,出于对220V市电基本的尊重,底层市电的变压器输入脚还带有一个玻璃管保险丝座,可根据需求选择不同参数的保险丝。
(4)过压保护(硬件)
在顶层关键器件(MCU和OLED)的5V和GND之间加入TVS瞬态抑制管的齐纳二极管过压截止电路。
过压截止电路
(电路图上方引出的导线连接Pmos栅极,作为开关信号控制Vcc的通、断)
(5)继电器开关
由LDO产生的5V电源供电,控制5V电源和中上两层的开关,继电器关闭时导通,继电器启动时关断,因此不参与输出分流(这种设计纯粹是为了安全,其实完全没有必要)。
缺陷:
由于选择的变压器最大输出400mA(12V)电流,并且两级开关电源的转换效率最多80%,导致该方案输出能力很弱,输出功率仅2.2W。许多反馈电阻的取值区间较窄,由于设计上的忽视,错误的取值可能导致5V LDO的报废。
方案二(外置变压器、15W)
(1)AC-DC
在方案一基础上,将更换了更大功率的变压器(30W),但也占用了更大的空间,因此将变压器移出底层电路板,让AC 220V在外面就通过变压器降压为AC 12V,再输入底层PCB。此外,将LM2596-ADJ换为XL4015降压开关电源模块,增强在方案一中提及的“AC 12V → DC (12 *√2)V → DC 15V ”过程的输出能力(说白了就是增大输出电流上限)。
[方案二] 变压器接口(右)和直流接线柱(左)
(2)5V控制电源
方案一中,5V控制电源通过LDO直接由DC 15V降压产生,一旦Vin(原DC 15V)超过LDO上限(在测试过程经常出现),LDO功能失效,化为一个小电阻,将Vin直接输到中上两层。虽然会触发中上两层的保护机制,但是LDO肯定是没了。因此,在DC 15V和LDO的Vin之间加入12V LDO作为缓冲级,再加上过压截止电路,虽然效率降低了,但充分保护了元器件的安全。那为什么不直接在5V LDO上加入过压截止电路,而要多此一举加个缓冲级呢?这样确实更好,但我多了一个12V LDO一直用不掉。
(3)其他
增大了PCB电源电路的线宽,其余包括继电器、备用输入、过流过压保护部分与方案(一)一致。
(4)功率测试
工作模式(mode) |
负载阻值(RL/Ω) |
最大输出电压(Vout,max/V) |
输出功率(P/W) |
3.3 |
5 |
2.5 |
1.25 |
24 |
2.92 |
0.36 |
|
47 |
3.11 |
0.21 |
|
5 |
5 |
3.8 |
2.89 |
24 |
4.63 |
0.89 |
|
47 |
4.85 |
0.5 |
|
12 |
5 |
(低压报警) |
(低压报警) |
24 |
10.8 |
4.86 |
|
47 |
11.39 |
2.76 |
|
ADJ |
5 |
8.1 |
13.12 |
24 |
11.91 |
5.91 |
|
47 |
12.76 |
3.46 |
底层PCB(方案一)
底层电路图(方案一)
底层PCB(方案二)
底层电路图(方案二)
三 .程序基本原理
(代码风格和性能不具有任何参考性,故下文仅介绍控制原理)
1.ADC和模式切换
(上文已介绍,不再赘述)
2.过压、低压保护
保护机制的设想是:当Vout偏离预计值太远时,输出电源应该被掐断,进入预设的保护状态,当Vout归零后,电源应该尝试自动重启。理论上,通过ADC输出结果,保护功能非常容易实现,但实际上存在许多个特例,让保护机制出现很多间断点。
特例:
(1)档位切换时的充放电过程;
(2)接入负载时的瞬时降压和恢复过程;
(3)脱离保护状态(VEM,V_Emergency)并尝试重启时的充电过程。
因此,需要设置多个定时器,应用多个延时规则为充放电留足时间(百毫秒级),防止保护机制误报。在程序中的中断表现为:
T0:动态保护规则,针对容性元件的充电过程编写规则,由于电容充电V-T曲线是微分方程,因此模拟了近似的三段线性规则来逼近(其实多几段更好,但没有专业设备只能止步于此);
T1:静态保护规则,当档位切换停止一段时间后,恢复到正常的保护规则——即设置Vout的上下限,一旦越线直接进入T2的规则。
T2:瞬态保护规则,当出现Vout越线时,开始计时,当计时结束时若电压仍未恢复到正确区间,触发统一的保护机制:进入保护模式(VEM),OLED显示屏提示警告原因,并在电容放完电后(Vout = 0 V时)尝试重启。计时的时间长短决定保护机制的敏感程度,一般设置为数百毫秒。
低压(负载太小)、短路保护
3.OLED驱动
参考OLED商家提供的代码。
四.注意事项
1.方案一:
方案一仅是第一版的原型机,由于当时选择的变压器最大输出400mA电流,并且两级开关电源的转换效率最多80%,导致该电源输出能力很弱,输出功率仅2.2W。下层中许多反馈电阻的取值比较精确,由于设计上的忽视,错误的取值可能导致5V LDO的报废;
2.方案二:
当负载较小,输出电流较大时,虽然两级的开关电源模块都能勉强支撑输出,但输出电压都会不同程度降低。此外,第一级输出电压降低,会导致第二级的输入电压Vin降低,小于一定阈值时,内部提供的基准电压VREF也会降低,使第二级输出的电压降低效果叠加,因此大大减小输出能力。该方案最大输出功率15W(虽然变压器是30W的,但变压器没跑满,效率肯定不止50%,但也高不到哪里去)。
综上所述,该方案仅提供灵感,不宜复刻;
3.疯狂旋转档位旋钮可能出现误报,尤其是从输出最高电压(13.4V)的“ADJ”档位直接扭到“StandBy”档时。重启电源恢复的过程中请顺便思考一下,为什么要这么疯狂地转它;
4.在运行过程中,千万不要直接接触与市电直连的部分,如:变压器引脚、保险丝引脚等,建议用绝缘胶或橡胶包裹;
5.改进思路:
(1)删去第一级开关电源能极大地增加低阻负载下的输出能力,但同时也会增大输出波纹,降低系统容错率;
(2)MCU下载口改为USB直连下载(参考STC数据手册),减少占地面积,提升美感;
(3)重建中间层,用分立器件搭建BUCK降压电源,PWM控制信号由MCU给出,并通过ADC实现负反馈(设计中)。
上层PCB 3D效果图
底层PCB 3D效果图
评论