基于CH32C8T6的个人服务器UPS设计
一、项目简介
使用MOS管组成的市电和备用电池的切换电路。由CH32F103C8T6作为控制中心来完成对备用电池和RTC电池的电量管理,并且模拟HID键盘向主机服务器发送指令,并且将断电记录保留在tf卡中。项目现状:受限于CH32F103C8T6的容量限制原定的FreeRTOS + 模拟HID + FatFs的SPI读写tf卡,无法共存于芯片中。所以目前投入使用的设计只能在保留模拟HID键盘的条件之下,采用裸机方式并且去掉FatFs的SPI读写tf卡的方案。
二、相关展示
盒子接口:sata供电接口(左一内),USB接口(左一内),电源输出和风扇电源输出(左一内);4pin 12V电源输入(中),12V DC输入(中),电池12V输入(中),备用电池充电(中),功能选择拨码(中)。
三、原理图和PCB展示
四、部分电路介绍
上图是市电--电池切换电路。电路基本设计来自网络2.3 经典电路升级
在红框中的主体部分是由两颗PMOS和一个二极管组成。当PW_DC端输入经过市电转换出的12V电压时,12V电压通过二极管D1的同时作用于Q1和Q2的栅极。Q1和Q2在12V作用下断开了BAT端口的输入电压的电路。此时由转换出的市电12V供电。
当市电停电后,作用于Q1和Q2栅极的12V消失,栅极电压经过R1拉为0V。此时两个MOS管打开,电源变化成由备用电池供电。其中的Q2作为低压差的二极管,在市电存在时避免可能的倒灌。
Q3和Q5,Q4和Q6组成两个开关电路,由单片机的3.3V去开关12V的MOS管。
上图是给可充电纽扣电池充电的电路,采用了恒流充电和恒压充电两个阶段设计。Proteus简单模拟没有问题。
恒流部分采用镜像电流源的基本设计,来保证电池所需要的充电电流。当CH32检测到RTC电池电压低,会拉高3V3_IO电压,此时比较器输出低电平打开PMOS关闭NMOS,此时进行恒流充电。 当电池电压大于3V3_IO的电压瞬间,比较器开始输出高电平(这个高电平作为电池即将充满一次的信号),关闭PMOS打开NMOS,此时电池两端是由单片机输出的恒定电压。一段时间后由CH32拉低3V3_IO即可结束充电。
改进:或许可以用DAC连接到U6 PMOS的栅极,来实现涓流充电部分。芯片没有DAC功能,也可以使用UART实现DAC。
五、项目问题
目前使用了一个月,电路没有明显发热。用于低负载的个人服务器也不会导致电源切换时的设备断电。项目目前的问题:
①使用市电掉电后会逐渐降压的电源适配器有概率导致切换电源的时候设备断电。立即断电的适配器则没有问题。 ②设想的由模拟HID键盘发送指令,命令服务器关机的功能需要用硬件诱骗主机,让主机认为设备有显示器,设备才会分配终端。否则需要外接显示器,浪费电能。
要专心参与复试了,没有时间再详细写了。项目持续完善中......