我再也不要死记硬背那些公式了。大概三年前,我为了做一个12V的辅助电源,翻遍了各种开关电源设计手册,把反激变压器的计算表格填了又填,结果上电瞬间还是炸了一颗MOS管和一片UC3842。后来我才发现,真正让我卡住的不是那些公式,而是我对这颗芯片和整个反激拓扑“为什么这么做”完全没概念。今天我把这套从原理到实物的完整过程整理出来,希望能帮你少走我走过的弯路。
1. 为什么选UC3842搭12V开关电源:这颗老芯片的不可替代之处
很多人觉得UC3842太老了,一听到就皱眉头,觉得不如用现成的模块或者更新的数字电源方案。但说实话,对想真正搞懂开关电源的人来说,UC3842依然是极其理想的学习对象。它不像那些内部集成了MOS管的芯片那样黑盒,也不像数字电源那样需要写代码调试,它就是一颗非常经典的电流模式PWM控制器,内部结构清清楚楚。
它的核心价值在于:把模拟电源最核心的三个环路——误差放大、电流检测、PWM调制——全部暴露给你看。你用示波器探针戳在它的每个引脚上,都能直观地看到对应波形,理解每一个外部元器件到底在干什么。这种“看得见摸得着”的调试体验,是任何仿真软件都给不了的。
具体到12V开关电源这个场景,UC3842有几个非常契合的特点:
- 宽供电范围:UC3842的启动电压是16V,欠压锁定(UVLO)关断电压是10V。这意味着它非常适合直接从整流后的310V直流母线通过启动电阻取电,而不需要额外搞一套辅助供电。
- 电流模式控制:它通过采样MOS管源极电流来控制占空比,天然具备逐周期限流能力。这对抗输出短路、变压器饱和这类致命故障非常有用,对新手来说就是多了一条命。
- 图腾柱输出:输出级驱动能力有1A的峰值电流,直接驱动一颗中小功率的MOS管完全没问题,省去了复杂的驱动电路。
- 外围元件少:整个电源的核心元件加起来不超过20个,非常适合手工搭建和逐点分析。
如果你去翻那些商用电源的方案,会发现很多还在用UC3842或者它的改良版UC3843、UC3844,这就说明这颗芯片的生命力有多强。它的意义不是让你做出一个多么极致高效的电源,而是让你建立一个完整的、正确的开关电源设计直觉。
2. 反激拓扑的核心逻辑:为什么12V小功率电源几乎都用它
2.1 反激和正激的本质区别
很多人第一次接触反激(Flyback)时,会被它的名字搞糊涂。说直白点,反激变换器的核心就是:当MOS管导通时,变压器初级电感存储能量,次级二极管反向截止不向负载供电;当MOS管关断时,初级电感电流不能突变,通过磁芯耦合到次级,次级二极管导通向负载释放能量。
这和正激(Forward)完全不同,正激是MOS管导通时直接向次级传递能量,同时需要磁复位绕组。反激的优势在于:
- 不需要输出滤波电感,结构简化很多
- 变压器天然起到储能和隔离双重作用
- 输入电压范围宽,适合市电这种大范围波动的输入
2.2 反激变压器本质上是耦合电感
理解反激最关键的一点:它的变压器其实是一个耦合电感,不是传统意义上的变压器。传统变压器追求的是尽量大的耦合系数和尽量小的漏感,但反激变压器必须要有气隙来存储能量。
我最初犯的错误就是把反激变压器当成普通变压器来看,用了没有气隙的铁氧体磁芯,结果上电后磁芯瞬间饱和,MOS管直接过流烧毁。反激变压器开气隙(或者在EE、EI磁芯中柱磨出缝隙)的目的,是让磁芯的磁滞回线“倾斜”,储存更多的磁场能量。简单说,气隙越大,能存进磁芯的能量越多,但同样的匝数下电感量越小,需要更大的峰值电流才能达到目标功率。
所以设计反激变压器时,要先确定目标功率、开关频率和最大占空比,计算出初级电感量,再根据磁芯的AL值确定气隙大小。这一步如果靠猜,后面一定出问题。
2.3 反激的DCM和CCM工作模式
反激变换器有两种主要工作模式:
- DCM(断续模式):次级电流在每个开关周期内降为零,变压器能量完全释放。这种模式控制简单,不容易出现右半平面零点问题,对新手友好,但电流峰值高,EMI会大一些。
- CCM(连续模式):次级电流始终不为零,变压器始终保持部分能量。这种模式电流纹波小,效率略高,但动态响应复杂,容易引发环路不稳定。
对于一台12V 2A的小功率电源,我强烈建议新手从DCM开始设计。原因很简单:环路补偿容易,调试时不容易因为相位裕度不足而振荡。等DCM完全吃透了,再碰CCM会轻松很多。
3. 完整原理图逐块拆解:每个引脚外围电路为什么要这样接
下面这张图是我实际搭建的12V/2A反激开关电源的原理图结构。我把它拆成几个模块逐一说明,搞懂这些,你就不需要死记硬背电路了。
3.1 输入整流滤波模块:310V直流是怎么来的
市电220V交流经过整流桥(通常是四个二极管或一体化整流堆)和滤波电容后,得到约310V的直流母线电压(220V × 1.414 ≈ 311V)。这个310V直流就是标题里那个数值的来源。
需要注意的是:
滤波电容的耐压至少选400V,留足余量。如果市电偏高到240V,峰值就是240 × 1.414 ≈ 339V,用350V耐压的电容已经很危险了,必须400V起步。
电容容量:12V/2A(即24W)的电源,输入功率按效率75%估算,约32W。对于这个功率等级,常见做法是选用两个47μF/400V电容并联,或者一个100μF/400V电容。容量大小决定了母线电压的纹波,容量太小会导致低压时占空比过大,容量太大则上电时浪涌电流大,容易烧整流桥。
整流后310V的PCB间距要求:这里有一个很关键的工程细节。在PCB布局时,310V的焊盘、走线与其他低压网络之间必须保持足够的安全间距。一般来说,500V以下的电气间隙,经验做法是至少2mm以上,如果可能,做到3mm更安全。如果是自己手工搭棚做实验,也一定要把高压区域和低压区域用明显的物理距离隔开,不要在面包板上把310V和12V的走线挤在一起。
3.2 UC3842引脚功能与外围元件作用
UC3842是8脚DIP或SOIC封装,各脚作用如下:
| 引脚 | 功能 | 外围元件与作用 |
|---|---|---|
| 1 | COMP(补偿) | 接RC补偿网络到引脚2,用于稳定误差放大器环路 |
| 2 | VFB(反馈) | 接光耦输出和分压电阻,接收输出电压的反馈信号 |
| 3 | ISENSE(电流检测) | 接MOS管源极采样电阻,实现逐周期限流 |
| 4 | RT/CT(定时) | 接电阻到地、电容到地,决定开关频率 |
| 5 | GND(地) | 直接接到初级侧的功率地 |
| 6 | OUT(输出) | 图腾柱输出,通过栅极电阻驱动MOS管 |
| 7 | VCC(供电) | 启动时从310V经启动电阻取电,启动后由辅助绕组供电 |
| 8 | VREF(基准) | 内部5V基准电压输出,通常接一个小电容退耦 |
让我重点说几个关键的:
引脚4的振荡频率。UC3842的最大占空比是50%(UC3844是50%,UC3845是50%;UC3842是96%但实际到不了),振荡频率由RT和CT共同决定。经验公式是:
f ≈ 1.72 / (RT × CT)
我实际用的是RT=22kΩ,CT=4.7nF,算下来频率大约16.6kHz?不对,这个公式要注意单位,如果用kΩ和nF,结果是kHz。我用RT=22kΩ,CT=4.7nF,算出来约166kHz。不过我做的是DCM模式,没必要跑那么高,最终我把RT换成了39kΩ,CT还是4.7nF,频率落在约94kHz。这个频率对于入门级手工搭建来说是合适的,太高了对PCB布局要求苛刻,太低了变压器会“发胖”。
引脚7的启动和供电。这是整个电路里最微妙的部分。310V通过一个几百kΩ的启动电阻(我用2颗120kΩ串联,共240kΩ)给引脚7外接的电解电容(通常47μF/50V)充电。当电容电压达到16V,芯片启动开始输出PWM。启动之后,芯片自身消耗电流会上升到15-20mA,这时候240kΩ启动电阻提供的电流只有约1.3mA(310V / 240kΩ),根本不够维持芯片工作。所以必须有一个辅助绕组在芯片启动后接管供电,通过二极管和电容整流滤波,给引脚7提供一个约14-16V的持续供电电压。
如果你搭建的电路出现“上电后输出闪一下就停了”的现象,十有八九是辅助供电没弄好,芯片启动了但供不上电,导致电压跌到10V以下又关断了。
3.3 RCD吸收电路:保护MOS管的第二道防线
反激变换器的MOS管在关断瞬间,会承受一个非常高的电压尖峰。这个尖峰来自变压器的漏感能量。漏感相当于一个没有耦合到次级的寄生电感,当MOS管关断,漏感电流不能突变,会在漏极上感应出极高的电压(可以是母线电压的好几倍)。
如果没有吸收电路,这个尖峰直接击穿MOS管。RCD吸收电路的作用就是:在MOS管关断瞬间,通过二极管给漏感电流一个泄放路径,让能量在电阻上消耗掉,把电压尖峰钳位到一个安全的水平。
RCD吸收电路的三个元件是:
- R(吸收电阻):我用了100kΩ/2W,功率要大一点,因为能量最终都在这里变成热。
- C(吸收电容):我用了一个10nF/630V的CBB电容。耐压必须足够,不然这个电容自己就先炸了。
- D(快恢复二极管):选用FR107或者UF4007这类快恢复管,不能用普通整流二极管,因为普通二极管反向恢复时间太长,几百kHz下根本来不及。
这个电路的具体参数要根据实际波形来调整,原则是:R越小吸收能力越强,但损耗也越大;C越大尖峰压得越低,但同样损耗也越大。调试时要边测漏极波形边调整,找到一个“尖峰不超过MOS管耐压80%且损耗可接受”的平衡点。
3.4 电流采样电阻:逐周期限流的核心
引脚3的ISENSE信号来自MOS管源极和地之间的采样电阻。当MOS管导通,电流流过采样电阻产生压降,这个压降送到UC3842内部的电流比较器。当电压超过内部阈值(大约1V),PWM立即关断输出,从而逐周期限制峰值电流。
采样电阻的取值决定了最大峰值电流:
I_peak_max = 1V / R_sense
我做12V/2A的输出,按DCM峰值电流大约是输出电流折算到初级的3-4倍来估算。假设效率75%,输入直流约310V,输出功率24W,输入平均功率约32W,初级平均电流约0.1A,DCM模式下峰值电流按平均电流的3倍算就是约0.3A,但这样算太粗了。更合理的做法是直接从变压器设计出发。我用RM8磁芯,初级电感量取550μH,最大占空比0.45,开关频率约90kHz,峰值电流按公式算:
I_peak = (Vin × D) / (Lp × f) = (310 × 0.45) / (550μ × 90k) ≈ 2.82A
这个值偏大了,因为310V是最高输入电压,DCM模式下输入电压最低时峰值电流最大。但为了简化,先按最坏情况考虑,RSENSE取0.33Ω/2W,那么限流值约3A。这样设定后,即使变压器设计有偏差,芯片也能通过逐周期限流保护MOS管,不会无限增大电流直到炸管。
注意:采样电阻要用低感电阻,最好是金属膜电阻或者专门的无感电阻,否则高频下引线电感会引入很大的噪声,造成误触发限流。我之前用普通绕线电阻,波形上一堆振铃,电流检测完全没法看。
3.5 TL431和光耦反馈环路:输出稳压的关键
12V输出的稳压精度,靠的是TL431和PC817光耦构成的反馈环路。原理很简单:
- 输出电压通过分压电阻(我用了10kΩ和4.7kΩ)得到约2.5V,送到TL431的参考端。
- 当输出电压偏高,TL431的阴极电压降低,流过光耦LED的电流增大,光耦输出侧的光敏三极管导通加深。
- 这个信号送到UC3842的引脚2(VFB),拉低COMP电压,从而减小占空比,输出电压回降。
- 反之亦然,形成一个负反馈闭环。
这个环路的补偿参数(引脚1和2之间的RC网络)非常重要。我用的是典型的Type II补偿:一个10nF电容和10kΩ电阻串联,再并一个100pF小电容。如果补偿太激进,电源会在轻载或者负载突变时出现输出振荡;如果补偿太保守,动态响应会很差,负载跳变时电压跌得厉害。
调试这个环路的一个小技巧:用电子负载做瞬间加载测试,看输出电压波形是否出现持续振荡。如果振荡了,就把补偿电阻调大一点、电容调小一点(或者反过来试,要看具体相位裕度情况)。这个没有捷径,只能边测边调。
4. 高频变压器制作与关键参数计算:手把手绕制的正确姿势
4.1 磁芯选择与气隙
对于24W等级的电源,我用的是RM8磁芯(PC40材质),也可以用EE22、EE25、EFD20等常见的功率磁芯。关键指标是磁芯的截面积Ae和有效磁路长度le,这些决定了它能储存多少能量。
RM8的参数大约是:Ae≈64mm²,le≈57mm。配合开气隙后的AL值(大约100-200nH/N²),可以绕制出需要的电感量。
开气隙的方式有两种:一种是磨中柱,另一种是在中柱垫一层聚酯薄膜。对于DIY实验,垫薄膜虽然不够精确,但操作最简单。不过要注意,垫薄膜会导致磁芯的磁力线发散,产生较大的漏感和EMI。如果是做正式产品,建议直接用有气隙的成品磁芯。
4.2 初级电感量和匝数计算
DCM模式下,变压器设计的核心是先确定初级电感量。根据能量守恒:
P_out = 0.5 × Lp × I_peak² × f × η
其中η是效率,取0.75-0.8。整理一下,如果确定了Lp、f和P_out,就能算出I_peak。
我实际计算过程如下:
- 目标输出24W(12V/2A),效率0.78
- 输入功率 = 24 / 0.78 ≈ 30.8W
- 最低输入直流电压按90V交流算:90 × 1.414 - 整流压降 ≈ 124V(实际还要考虑电容纹波,我按110V粗略算)
- 最大占空比取0.45,频率选90kHz
- 代入反激DCM的输入功率公式:
P_in = 0.5 × Lp × I_peak² × f,同时I_peak = (V_in_min × D_max) / (Lp × f) - 联立求解,得到 Lp ≈ 110μH?这个值很小,但RM8磁芯能轻松做到。
实际算出来Lp约180μH左右,然后匝数比要根据反射电压来确定。设反射电压为100V(这是经验值,太低占空比不够,太高MOS管应力大),则匝比:
n = Np / Ns = V_ref / (V_out + V_diode) = 100 / (12 + 0.7) ≈ 7.87
取整,初选匝比约8,那么次级匝数如果取5匝,初级就是40匝。再根据需要的电感量确定气隙。这个迭代过程,第一次算怎么都不可能一步到位,关键是先把电路搭起来,用示波器实测波形再回推修正参数。
4.3 绕组顺序与辅助绕组
变压器绕制的顺序对性能影响非常大。我推荐的做法是:
- 先绕初级的一半(例如20匝),从引脚起始,均匀排线。
- 加一层绝缘胶带(马拉胶带或者特氟龙胶带)。
- 绕辅助绕组(例如3-4匝,用于给UC3842供电)。
- 再加一层绝缘胶带。
- 绕次级绕组(例如5匝,线径要足够粗,用0.5mm以上铜线,或者两股0.4mm并绕)。
- 再加绝缘胶带。
- 绕初级的剩下20匝。
- 最外层用3层绝缘胶带包裹。
为什么要把初级分成两半、把次级夹在中间?这是为了减小漏感。反激变压器漏感是敌人,它会造成电压尖峰和效率下降。“初级-次级-初级”的三明治绕法能显著提高耦合系数,让漏感控制在初级电感量的2%-3%以内。这个细节直接决定了你的RCD吸收电路能不能轻松搞定尖峰。
4.4 同名端方向千万别搞反
反激变压器的同名端和正激不一样,必须仔细核对。绕好之后可以用万用表二极管档判断同名端:用电池瞬间触碰初级绕组,同时测次级感应的电压方向。如果接反了,整个电路不会工作,或者辅助绕组直接不给芯片供电,导致“闪一下就灭”。
我自己做过一个快速验证的方法:做好变压器后,先用信号发生器加一个正弦波到初级,示波器看次级是否有反相的信号。如果极性反了,就把次级的两个引脚对调。在PCB上预留调换引脚的空间,或者用飞线先验证,都是可行的。
5. 从原理图到实际搭建:排版布局和焊接的工程细节
5.1 布局原则:功率环路尽量小,控制环路远离噪声
手工搭建开关电源,布线和布局就是半条命。这里有几个原则是我踩了很多坑才总结出来的:
310V到变压器到MOS管到采样电阻再回到母线电容,这个环路面积必须尽量小。这个环路里有高频脉冲电流,如果环路面积大,它就是一个天线,不光EMI超标,还会通过空间耦合干扰控制电路和反馈电路,造成输出噪声大、环路误动作。
UC3842的控制地(引脚5)和功率地(母线电容负极)要单点连接。如果让功率地的噪声电流流过芯片的模拟地,引脚3的电流检测就会受到严重干扰。我的做法是:功率地走一圈,控制地在芯片旁边单独汇合,然后用一根短粗的线接回母线电容负极。
引脚4的RT/CT电容要尽量靠近芯片引脚,走线要短。这里的振荡频率信号非常敏感,如果有噪声耦合进去,PWM频率会被调制,输出波形会变乱。
光耦和TL431的走线要远离变压器和高频环路。反馈环路如果夹在噪声大的区域中,会在输出上叠加大量的高频毛刺。
5.2 手工搭建还是画PCB
我的建议是:第一次做,用洞洞板搭棚验证原理,但不要在面包板上做。面包板的寄生电容和接触电阻在高频下是灾难,你会看到一个完全无法正常工作的电源,还以为是设计错了。洞洞板虽然也谈不上美观,但至少焊点是可靠的。
如果条件允许,直接画一块PCB是最省心的。画PCB时注意:
- 310V网络与低压网络间距至少2-3mm
- 变压器下方不要大面积铺铜,避免涡流发热
- 光耦、反馈分压电阻放次级侧,靠近输出端
- 采样电阻用开尔文连接:从电阻两端直接走两根细线到芯片的ISENSE和GND,避免功率电流流过大铜箔产生压降误差
5.3 高压安全与放电
调试220V输入的开关电源,安全永远是第一位的。几个必须养成的习惯:
- 调试时用隔离变压器供电,或者至少在输入端串一个白炽灯做限流保护
- 每次触碰电路前,用万用表确认母线电容已经放电完毕(310V母线电容如果没泄放电阻,断电后能存几秒钟的电)
- 母线上并一个100kΩ/2W的泄放电阻,防止断电后电击
串白炽灯这个方法尤其有用:如果电路有短路,灯泡会亮起来并限制电流,而不是直接炸管。正常工作时,灯泡亮度很暗;如果灯泡很亮,说明初级侧有大电流,先断电查问题再继续。
6. 上电调试全流程:从示波器波形到常见故障定位
6.1 上电前的静态检查
第一次上电前,先用万用表测几个关键点:
- 输入端阻值是否异常短路
- 310V母线电容有没有充到310V(在整流桥后测)
- UC3842的VREF(引脚8)有没有5V
- 光耦、TL431的焊接方向有没有错
如果没有发现短路,就可以串灯泡上电了。
6.2 观察启动过程
上电后,观察灯泡亮度。如果灯泡闪一下就灭,这说明芯片完成了一次启动,但因为辅助供电没跟上又关断了。如果灯泡一直亮,说明初级侧有大电流,可能是MOS管坏了或者驱动在直通。如果一切正常,输出电压应该有12V。
我用示波器测量UC3842引脚4的RT/CT波形,应该看到一个清晰的锯齿波。测量引脚6的输出波形,应该能看到方波。然后在MOS管漏极测电压波形,正常的话会看到:导通时接近0V(其实等于Vds导通压降),关断时跃升到310V + 反射电压 + 漏感尖峰。
6.3 常见故障与解决思路
我把调试中遇到最多的故障整理成了一张表:
| 故障现象 | 可能原因 | 检查思路 |
|---|---|---|
| 上电后无任何反应 | 启动电阻断开或无310V | 测母线电容两端是否有310V,启动电阻是否断路 |
| 闪烁一下即停 | 辅助供电不足或VCC电容太小 | 增大VCC电容,检查辅助绕组同名端是否反了 |
| 输出电压偏低且带载能力差 | 变压器电感量偏大/偏小,或匝数比不对 | 实测Lp,看DCM波形,回推设计参数 |
| MOS管过热 | 开关损耗大或栅极驱动电阻过大/过小 | 调整栅极电阻(10-22Ω),检查是否有直通 |
| 输出纹波大 | 输出电容ESR高,或反馈环路带宽不够 | 换低ESR电解电容(如固态电容),调整补偿参数 |
| 听到啸叫 | 环路不稳定或变压器磁致伸缩 | 调整补偿网络,浸漆处理变压器 |
| 带负载时电压跌落明显 | 变压器设计功率不足或输入电容太小 | 检查母线电压纹波,重新核算变压器参数 |
6.4 用电子负载和示波器验证调试效果
调试完成后,我做了一套完整的验证流程:
- 空载测试:输出12V,纹波应该小于50mV
- 半载测试(1A):输出电压在12V±1%以内
- 满载测试(2A):连续运行30分钟,观察MOS管和变压器温度,正常情况下MOS管温度不超过70℃(需要加散热片),变压器不超过80℃
- 动态响应:电子负载在0.5A和2A之间切换,观察输出电压的瞬态跌落和恢复时间
- 短路保护:直接把输出短路,看电源是否进入打嗝模式,输入功率是否明显下降
关于动态响应,我第一次调的时候,负载从1A跳到2A的瞬间,输出电压跌到了10.8V然后花了十几毫秒才恢复。这个响应速度其实还可以接受,但1.2V的跌落值偏大。后来我把反馈环路的分压电阻改小(用1kΩ和470Ω,静态功耗大了点但环路增益更高),动态响应明显改善。
6.5 关于310V间距的实测经验
前文提到过310V的PCB间距要求,这个在调试时同样要重视。我曾经在一次调试中用飞线接探头的时候,飞线的一端碰到310V节点,另一端悬空,结果那个悬空端的空气被高压击穿,跳了一个小电火花,把我吓了一跳。从那以后我就特别注意:凡是310V等级的焊盘、引脚,周围至少留出3mm以上空间,探头、飞线、散热片都远离它。如果你的PCB空间实在紧张,至少也要做到2mm,再小就是拿安全和可靠性开玩笑。
7. 设计要点的延伸思考:做好这一个电源,等于摸清了开关电源的半壁江山
做完这个12V电源后,我最大的感触是:UC3842这个方案虽然拓扑简单,但麻雀虽小五脏俱全。你在这个项目里遇到的每一个问题——变压器设计、RCD吸收、环路补偿、布局干扰——都是任何一台商用开关电源都会遇到的问题。区别只是商用电源把这些问题的答案固化成了标准设计规范和成熟的供应商方案,但你亲手经历过一遍之后,你对那些规范的信任就不再是盲目的,而是知其所以然。
7.1 从DCM到CCM的进阶思路
如果你做完了DCM版本想继续深入,可以试着把变压器电感量稍微加大一点,让电路在轻载时进入CCM模式。你马上就会遇到之前提到的右半平面零点问题,这就是理解“为什么CCM动态响应差”的最佳切入点。到那时候你再回头看那些讲环路补偿的书,会豁然开朗。
7.2 从模拟控制到数字控制的思维转变
另外我想说,数字电源和模拟电源并不是对立的。现代很多高端电源确实用DSP或MCU来做环路控制,但数字电源的底层算法里,PID参数的整定依然要依赖你对能量传递路径、电感电流波形的直觉认知。这种直觉,恰恰是在UC3842这种最简单的模拟方案上最容易培养起来的。
7.3 一个重要的安全提醒
最后必须再强调一次:这个项目涉及220V交流市电直接整流,整个初级侧都是危险的带电体。如果你没有足够的电工基础和安全意识,强烈建议先用低压直流输入(比如用一个30V的直流电源接到桥式整流的输出端)验证电路逻辑是否正常,再上高压调试。安全这件事,怎么谨慎都不为过。我自己做过的项目中,凡是觉得“应该没问题吧”的环节,最后几乎都会出点小状况。这是经验,也是教训。
做电源设计不像写代码,改完能立刻看到结果。它更像是一门需要耐心和细致观察的手艺活。希望这篇文章能让你少走一些弯路,也希望你把每一个测试波形都记录下来,这些数据才是你提升水平最宝贵的财富。这篇是我基于实际搭建过程整理出来的经验,后面有机会我再把详细的变压器参数计算表和PCB布局要点单独整理成文章分享出来。