1. 项目概述与核心价值
最近在做一个低成本、小体积的电源项目,需要一个可靠的软启动功能来抑制上电浪涌电流。市面上专用的软启动芯片要么太贵,要么功能冗余,对于这种固定时序、简单逻辑的应用场景有点“杀鸡用牛刀”。翻看手头的物料,几毛钱的PIC10F200单片机引起了我的注意。这玩意儿只有6个引脚,内置4MHz振荡器,用来做个软启动控制器,简直是量身定做。这个项目,就是围绕这颗小小的8位MCU,设计并实现一个用于反激式开关电源的软启动控制器。它不直接控制功率开关管,而是通过控制PWM芯片(如UC3843)的反馈电压或使能端,实现输出电压的平滑爬升,从而有效限制开机瞬间的冲击电流,保护整流桥、滤波电容和功率MOSFET。
对于任何开关电源,尤其是反激式拓扑,上电瞬间给大容量输入滤波电容充电产生的浪涌电流是一个经典难题。不加抑制,轻则导致保险丝熔断、空开跳闸,重则损坏整流二极管,甚至让MOSFET在第一个周期就承受过大的应力。传统的NTC热敏电阻方案有功耗和冷却时间问题,而继电器旁路方案又增加了成本和体积。用MCU实现数字软启动,不仅成本可控,而且时序精准、可编程,还能方便地集成过压、欠压保护等附加功能。PIC10F200虽然资源极其有限(仅256字节RAM,768字节程序空间),但用于实现一个固定延时和斜率控制的软启动逻辑,绰绰有余。接下来,我就把从电路设计、代码编写到调试测试的全过程拆解一遍,你会发现,用最基础的硬件和代码,也能解决一个实际的工程问题。
2. 系统整体设计与核心思路拆解
2.1 控制器在电源系统中的定位与接口设计
这个软启动控制器是一个“外挂”模块,它需要无缝嵌入到现有的开关电源主控环路中。最常见的接入点有两个:一是PWM控制芯片的电压反馈端(如UC3843的COMP引脚或TL431的阴极),二是PWM芯片的使能或关断引脚(如UC3843的SS/软启动引脚本身,或其他芯片的EN/使能引脚)。
我选择了第一种方案:控制反馈电压。原因在于其通用性更强,且不依赖于主控芯片是否具备专用的软启动引脚。其核心思路是,在电源启动初期,由我们的PIC10F200控制器“劫持”反馈环路,输出一个从低到高缓慢变化的模拟电压,替代真实的反馈信号,迫使PWM控制器输出一个从零开始逐渐增大的占空比,从而实现输出电压的缓慢建立。当输出电压接近目标值后,控制器再“交出”控制权,让位于正常的电压反馈环路。
因此,硬件接口上,PIC10F200需要:
- 一个ADC输入引脚 :用于监测电源的输入电压(VIN)和/或输出电压(VOUT),以判断启动时机和完成条件。这里我选择监测输入电压,逻辑更简单:当输入电压高于某个阈值(如150V)时,认为电源已上电,开始软启动流程。
- 一个PWM输出引脚 :PIC10F200的GP2引脚可以配置为PWM输出。但这里我们不需要真正的PWM频率,而是利用其数模转换(DAC)功能。通过一个简单的RC低通滤波器,将GP2引脚输出的固定频率、可变占空比的PWM波,平滑成一个可调的直流电压,这就是我们模拟的“软启动参考电压”。
- 一个数字输出引脚(可选) :用于指示状态(如软启动完成)或作为使能信号。我使用了GP0引脚,驱动一个LED,直观显示工作状态。
2.2 PIC10F200的资源分配与极限挑战
PIC10F200是Microchip的基线8位MCU,资源如下:
- 程序存储器 :768 Words (12-bit)
- 数据存储器 :64 Bytes (SRAM)
- 引脚 :6个(GP0, GP1, GP2, GP3/MCLR, VDD, VSS)
- 外设 :一个8位定时器(TMR0),一个比较器,GP2可配置为PWM输出。
在如此拮据的资源下编程,必须精打细算:
- 程序空间 :避免使用浮点数运算和复杂的库函数。所有逻辑用整数和查表实现。
- RAM空间 :全局变量极少,避免大型数组。临时变量尽量使用编译器自动分配的存储区。
- 时钟 :使用内部4MHz RC振荡器,四分频后指令周期为1MHz。这对于软启动这种秒级甚至百毫秒级的过程来说,精度完全足够。
- PWM分辨率 :GP2的PWM模块是8位的,即占空比可从0到255调节。结合后续的RC滤波,足以产生平滑的电压斜坡。
2.3 软启动算法流程设计
整个软启动过程被设计为一个状态机,清晰且易于在有限资源下实现:
- 上电复位与初始化状态(IDLE) :MCU上电,初始化GPIO、PWM模块和ADC(通过比较器模拟)。PWM输出占空比为0,模拟输出电压为0。状态机等待启动信号。
- 输入电压检测状态(VIN_CHECK) :持续采样输入电压检测引脚(通过比较器)。当检测到输入电压超过预设的开启阈值(例如,对应比较器反相端设置的分压电压),进入下一状态。
- 软启动斜坡生成状态(RAMP_UP) :这是核心阶段。控制器以固定的时间间隔(例如每10ms)递增PWM的占空比寄存器。占空比从0开始线性增加至目标值(如200/255)。同时,这个递增的PWM信号经过RC滤波后,产生一个从0V缓慢上升至目标电压(如2.5V)的模拟信号,送至主PWM芯片的反馈端。
- 软启动完成与保持状态(HOLD) :当PWM占空比达到目标值并保持一段时间(例如50ms)后,认为输出电压已稳定。此时,可以点亮完成指示灯(GP0)。控制器进入保持状态,PWM占空比维持不变,持续输出稳定的参考电压。
- 故障检测状态(可选,FAULT) :在RAMP_UP或HOLD状态,持续监测输入电压。如果输入电压突然跌落至关闭阈值以下,则认为电源掉电或故障,立即将PWM占空比置零,熄灭指示灯,状态机跳回IDLE状态,等待下一次上电。
这个状态机逻辑简单,仅需几个状态变量,非常适合PIC10F200。
3. 硬件电路设计详解
3.1 核心控制电路与电源设计
PIC10F200的工作电压范围为2


313


被折叠的 条评论
为什么被折叠?



