发作品
标准版

【开源】STC8A8K可调固定电压源

1.4w
0
0
27
简介:由STC8A8K64SA12单片机控制的电压源,具有可调、固定两种输出模式,带低压和过压保护
开源协议:GPL 3.0
创建时间:2022-07-03 13:08:37更新时间:2022-08-16 13:46:15

描述

STC8A8K可调/固定电压源

(原型机,仅提供灵感和思路,不宜复刻)v0JFD5GAqgQbDLgmiqMEhMAasUrFtCA3Q6JlFycW.jpeg

主图

cLehkLWjQXWGhsIdArT8rmPUj2hPQzW2PcLIlDlb.jpeg

正面

QtnzbmsP3IgLdzQAjIYWEblX4tataZOqoREGvb0g.jpeg

方案一预览图

方案二预览图

一.功能简介

该电源由STC8A8K64SMCU控制,具有:

  1. 可调、固定两种输出模式;
  2. 0.96寸OLED电压显示和Led工作状态指示灯;
  3. 短路保护,输出过压、低压警告,输入过压保护;
  4. 程序调试过程的硬件保护电路;
  5. 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驱动程序显示在屏幕上。

pzWYlXAGkMLHsU1JIaCt1agxlcwXRSoF5gD6i0iW.jpeg

采样通道(下)

6OKvCfqeAlOICzcWMWliEvC3fPqlPAIgCKW4jaVI.jpeg

上层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。

N3GVhPWtIZMP38BqqO02T8cawNnrRcPMQkzcBMyV.jpeg

中层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瞬态抑制管的齐纳二极管过压截止电路。

屏幕截图(1)(1)屏幕截图(2)(1)

                                     过压截止电路

(电路图上方引出的导线连接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 ”过程的输出能力(说白了就是增大输出电流上限)。

1g43yoGSLTRFM76OW2a5bE7nEOYbsoxuuOhnE4rE.png

[方案二] 变压器接口(右)和直流接线柱(左)

(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

 

N9Ec032RV4f3W3lFE8Hb9IfYPwGI5eHzoDJbDt2c.jpeg

底层PCB(方案一)

HA5ntrZWwEsiaU77qY94uIkFbfmj7kYieEjCuG8U.png

底层电路图(方案一)

Aor5pKc0i3pWUvQwilXpUmraR64wqgsuCQ0Sifki.jpeg

底层PCB(方案二)

 

mWOl0pPA1ttTskr2wItKk5pHryGe4cbSXXSTol6X.png

底层电路图(方案二)

三 .程序基本原理

(代码风格和性能不具有任何参考性,故下文仅介绍控制原理)

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时)尝试重启。计时的时间长短决定保护机制的敏感程度,一般设置为数百毫秒。

rfEBfLrfPJT42ht8GhdENJOHQzwSsyeg0GRkhnLo.jpeg

低压(负载太小)、短路保护

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实现负反馈(设计中)。

BWTQuTB8l5jbJk1UTZBY1QvPRjw9k83lFXwcfGL2.png

上层PCB 3D效果图

BNXqwbcMlfIwwEK183qSemWYxXth8mMiYz1UsrZw.png

底层PCB 3D效果图

 

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
程序代码+说明文档+PCB文件.zip
428
2
VID20220816122357.mp4
70
3
VID20220816122119.mp4
137
克隆工程
添加到专辑
0
0
分享
侵权投诉
工程成员
全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程