需求: 实现两个DC电源互为备份,其中任何一个出现故障掉电均可提供输出电源
    原理:利用STM32芯片ADC采集+DMA传输实时采集A和B电源输出电压,电压低至10V操控继电器切换输出电路
    实现功能:1、正常时AB电源同时作为输出电路
    2、当A电源输出电压不足,切换至B电源输出
    3、当B电源输出电压不足,切换至A电源输出
    实验平台&开发环境:STM32CubeMx + Keil5
    芯片: STM32F0P4V6


    工作流程:
    原理图,PCB焊接元器件,代码移植等(以前都是使用STM32F1标准库,首次使用HAL库,将来的开发主流就是CubeMx配置初始化+HAL调用的方式了)
    用继电器控制输出线路,LED灯用来提示继电器工作状态,所以外设管脚不多,用管脚最少的F0芯片即可, 通过ADC采集AB电源的电压值,因STM32F0ADC采集范围0~3.6V,所以AB电源的输出电压需要加入电阻分压到3.6V后才能采集, 再通过DMA实时传送, 函数中滤波转换采集的值,主函数调用,判断低于值切换继电器、LED报警灯闪烁提示即可

    CubeMx配置初始化时钟,GPIO,ADC,DMA等,在此就不上配置图了
    直流电源切换模块 - 图1

    原理图

    直流电源切换模块 - 图2

    PCB焊接
    直流电源切换模块 - 图3

    焊接后实物图
    直流电源切换模块 - 图4

    采集部分代码


    记录这次过程中遇到的问题和总结
    问题:
    1、滤波电容是怎样取值的?
    总结:
    1、关于PCB的设计一定要细心,不要重复辅铜,这次改版了三次


    后续:
    制作展示平台: