理解热插拔技术:热插拔保护电路设计过程实例

服务器、网络交换机、冗余存储磁盘阵列(RAID),以及其它形式的通信基础设施等高可用性系统,需要在整个使用生命周期内具有接 近零的停机率。如果这种系统的一个部件发生了故障或是需要升级,它必须在不中断系统其余部分的情况下进行替换,在系统维持运转的情况下,发生故障的电路板或模块将被移除,同时替换部件被插入。 这个过程被称为热插拔(hot swapping)(当模块与系统软件有相互作用时,也被称为hot plugging1)。为了实现安全的热插拔,通常使用带交错引脚的连接器来保证地与电源的建立先于其它连接,另外,为了能够容易的从带电背板上安全的移除和插入模块,每块印制板(PCB)或热插拔模块都带有热插拔控制器2。在工作状态下,控制器还可提供持续的短路保护和过流保护。

尽管切断或开启的电流会比较大,但大电流设计的一些微妙之处却常常未得到充分的考虑。“细节决定成败”,本文将重点分析热插拔控制 电路中各部件的功能及重要性,并深入分析在设计过程中使用ADI公司ADM11773热插拔控制器时的设计考虑和器件选型标准。

热插拔技术
常用的两种系统电源电压为-48 V和+12 V,它们使用不同的热插拔保护配置。-48 V系统包含低端热插拔控制器和导通MOSFET;而+12 V 系统使用高端热插拔控制器和导通MOSFET。

-48 V方案来源于传统的通信交换系统技术,如高级通信计算架构(ATCA)系统、光网络、基站,以及刀片式服务器。48 V电源通常可由电池组提供,选用48 V是因为电源及信号能被传输至较远的距离,同时不会遭受很大损失;另外,在通常条件下,由于电平不够高,所以不会产生严重的电气冲击危险。采用负电压的原 因是,当设备不可避免的暴露在潮湿环境中时,在正极端接地的情况下,从阳极到阴极的金属离子迁移的腐蚀性较弱。

然而,在数据通信系统中,距离并不是重要因素,+12 V电压会更加合理,它常用于服务器及网络系统中。本文将重点介绍+12 V系统。

热插拔事件
考 虑一个具有12 V背板及一组可移除模块的系统。每个模块必须能在不影响任意相邻模块正常工作的条件下被移除和替换。当没有控制器时,每个模块可能会对电源线造成较大的负 载电容,通常在毫法量级。首次插入一个模块时,其未充电的电容需要所有可用的电流来对其进行充电。如果不对这个浪涌电流加以限制,这个很大的初始电流将会 降低端电压,导致主背板上的电压大幅下降,使系统中的多个邻近模块复位,并破坏模块的连接器。

这个问题可通过热插拔控制器(图1)来解决,热插拔控制器能合理控制浪涌电流,确保安全上电间隔。上电后,热插拔控制器还能持续监控电源电流,在正常工作过程中避免短路和过流。

图1 热插拔应用框图

热插拔控制器
ADM1177热插拔控制器包括三个主要元件(图2):用作电源控制主开关的N沟道MOSFET、测量电流的检测电阻,以及热插拔控制器。热插拔控制器用于实现控制MOSFET导通电流的环路,其中包含一个电流检测放大器。

图2、ADM1177功能框图

热插拔控制器内部的电流检测放大器用于监控外部检测电阻上的电压降。这个小电压(通常为0~100 mV)必须被放大到可用的水平。ADM1177中放大器的增益为10,那么,举例来说,某个给定电流产生的100 mV电压降将被放大到1 V。这个电压将与固定或可变的 基准电压进行比较。如果使用1V的基准源,那么在检测电阻上产生 100 mV(±3%)以上电压的电流将导致比较器指示过流。因此,最大电流触发点主要取决于检测电阻、放大器增益,以及基准电压;检测 电阻值决定了最大电流。定时器电路用于设定过流持续时间。

ADM1177 具有软启动功能,其中过流基准电压线性上升,而不是突然开启,这使得负载电流也以类似方式跟着变化。这可通过从内部电流源往外部电容(SS引脚)注入电 流,令比较器的基准输入从0 V到1 V线性升高而实现。外部SS电容决定了上升的速度。如果需要,SS引脚也可以直接使用电压驱动,以设定最大电流限。

由 比较器及参考电路构成的开启电路用于使能器件。它精确设定了使能控制器所必须达到的电源电压。器件一旦使能,栅极就开始充电, 这种电路所使用的N沟道MOSFET的栅极电压必须高于源极。为了在整个电源电压(VCC)范围内实现这个条件,热插拔控制器集成了一个电荷泵,能够将 GATE引脚的电压维持在比VCC还高10 V的水平。必要时,GATE引脚需要电荷泵上拉电流来使能MOSFET,并需要下拉电流来禁用MOSFET。较弱的下拉电流用于调节,较强 的下拉电流则用于在短路情况下快速禁用MOSFET。

热插拔控制器的最后一个基本模块为定时器,它限制过流情况下电流的调节时间。选用的MOSFET能在指定的最长时间内承受一定的功率。MOSFET制造商使用如图3所示的图表标出这个范围,或称作安全工作区(SOA)。

图3 MOSFET SOA图

SOA 图所示的是漏源电压、漏极电流,以及MOSFET能够承受这一功耗的持续时间之间的关系。例如,图3中的MOSFET在10 V和85 A(850 W)条件下能承受1 ms,如果这一条件持续更长时间,则MOSFET可能损坏。定时器电路使用外部定时器电容来限制MOSFET经受这些最坏条件的时间。例如,如果定时器设 置为1ms,当电流的持续时间超过1 ms的限制时,电路就会暂停,并关断MOSFET。

为了提供安全裕量,在ADM1177中,定时器的电流检测电压激活阈值被设置为92 mV,因此,当检测电压接近100 mV的额定值时,热插拔控制器就会开始计时。

设计实例
由于ADM1177等控制器的设计允许一定的灵活性,因此演示其在12 V热插拔设计实例中的应用是很有用的。在本例中,假设:

  • 控制器为ADM1177
  • VIN = 12 V (±10%)
  • VMAX = 13.2 V
  • ITRIP = 30 A
  • CLOAD = 2000 μF
  • VON = 10 V (较好的开启控制器的电源电平)
  • IPOWERUP = 1 A (上电过程中所需的直流偏置电流)

为简化讨论,计算中不考虑器件容差效应。当然,在最坏条件的设计中,应当考虑这些容差。

ON 引脚
首先考虑在电源电压超过10 V的情况下使能控制器的情况。如果ON引脚的阈值为1.3 V,从VIN 到ON引脚的分压器比例应该设定为0.13:1。 为了保证准确性,选择电阻时应考虑到引脚的漏电。

由10 kΩ与1.5 kΩ构成的电阻分压器的分压比为0.130。

检测电阻的选择
检测电阻的选取应以开启定时器所需的负载电流为依据。

其中 VSENSETIMER = 92 mV.

检测电阻在30 A电流下消耗的最大功率为

因此,检测电阻应该能承受3W的功率。如果没有具有适当的额定功率或阻值的单个电阻,可以使用多个电阻并联来构成检测电阻。

负载电容充电时间
选择MOSFET之前必须确定负载电容充电所需的时间。在上电阶段,由于负载电容的浪涌电流效应,控制器通常会达到电流限制。如果TIMER引脚设置的时间不足以允许负载电容完成充电,那么MOSFET将被禁用,系统无法上电。我们可以使用下列公式来确定理想的充电时间:

其中 VREGMIN = 97 mV,是热插拔控制器的最小调节电压。

这个公式假定负载电流瞬时从0 A上升到30 A,这是一个理想情况。实际上,较大MOSFET的栅极电荷量QGS会限制栅极电压的压摆率,从而限制上电电流,因此,一定量的电荷会传输到负载电容而不触发定时器功能。在图4中,具有较大QGS的MOSFET会导致定时器的工作时间短于具有较小QGS的MOSFET,前者为T1 ~ T3,而后者为T0 ~ T2。

图4、启动过程中QGS的影响

这是因为在T0和T1之间传输电荷的增加小于电流限制,因此实际时间小于计算所需的时间。这个数值难以定量,它取决于控制器栅极电 流以及MOSFET的栅极电荷和电容。在某些情况下,它可能占到整个充电电流的30%,因此在设计中需要对其加以考虑,尤其是使用大MOSFET及大电流的设计。

在利用具有较小栅极电荷的MOSFET的设计中,可假设栅极电压的上升速度很快。这会导致从0 A到ITRIP的快速增加,从而引起不希望 的瞬变,在这种情况下,应使用软启动。

软启动
利用软启动,浪涌电流在软启电容设定的期间可以从零线性增加到满量程。通过逐步提高基准电流,能避免浪涌电流突然达到30 A的限制。需要注意的是,在软启过程中,电流处于调整过程中,因此,定时器从软启动开始之际就进入工作状态,如图5所示。

图5 软启动对定时器的影响

因此,推荐将软启动时间设定为不超过定时器总时间的10%~20%。例如,可以选择100 μs的时间。软启电容可由下式确定:

其中 ISS = 10 μA and VSS = 1 V.

MOSFET与定时器的选择
选择合适的MOSFET的第一步为选定VDS 和ID标准。对于12 V系统来说,VDS应为30 V或40 V,以处理可能损坏MOSFET的瞬变。MOSFET的 ID应远大于所需的最大值(参考图3的SOA图)。在大电流应用中,最重要的指标之一为MOSFET的导通电阻RDSON。较小的RDSON能确保MOSFET在正常工作时具有最小功耗,并在满负载条件下产生最少的热量。

对热量及功耗的考虑
因为必须要避免过热,因此,在考虑SOA指标与定时器选择之前,应该先考虑MOSFET在直流负载条件下的功耗。随着MOSFET温度的升高,额定功率将会减小或降额。此外,在高温下工作时,MOSFET的使用寿命会缩短。

前面提及热插拔控制器将在92 mV的最小检测电压下开启定时器。为了进行计算,我们需要知道不会触发定时器的最大允许直流电流。假设最坏条件下的VREGMIN 为97 mV,那么,

假设 MOSFET‘s 最大 RDSON is 2 mΩ,则功率为

数据手册中会给出MOSFET在常温下的热电阻。封装尺寸及附加的铜引线会对其具有一定影响。假设

由于 MOSFET需要消耗2.1W的功率,最坏条件下,温度可能将上升到高于室温126°C:

降低这个数值的一种方法是并联使用两个或更多的MOSFET,这样能有效降低RDSON,从而降低MOSFET的功耗。使用两个MOSFET时,假设电流在器件间均匀匹配(允许一定的容差),那么每个MOSFET的温度升高最大值为32°C。下式给出了每个MOSFET的功耗:

假设室温TA = 30°C,再加上这个温度上升值,那么每个MOSFET的最大温度为62°C。

MOSFET SOA考虑
下一步需要检查SOA图,以选择合适的能工作在最坏条件的MOSFET。在短路到地的最坏条件下,可假设VDS等于 VMAX,为 13.2V,这是将MOSFET源极拉到地时MOSFET上能产生的最大电压。在调节阶段,最坏条件将取决于数据手册中热插拔控制器调节点的最大值,这个值为103 mV。于是,电流可根据下式进行计算:

在与MOSFET SOA图进行比较之前,我们需要考虑MOSFET的温度降额,因为SOA是以室温(TC = 25°C)下的数据为基础的。首先计算TC = 25°C下的功耗:

其中 RthJC 可由MOSFET数据手册得到。

现在对TC = 62°C进行同样的计算:

因此,1.42的降额因数可通过如下计算得到:

这需要被应用于图3的MOSFET SOA图中。为了反映出调节过的额定功率,需要把表示施加最大功率的时间值的对角线向下平移。我们先使用1 ms线来举例说明这条曲线的原理。例如,在这条线上取一点,如(20 A、40 V),这点的功率为800 W,应用降额公式:

在40 V,降额后的功率所对应的电流为14 A,在SOA图上这点将确定新的62°C降额后的1 ms线。使用同样的办法可确定新的10 ms以及100 μs线。新线在图6中以红色示出。

图6、包含62°C降额后功率限制的SOA图

选择定时器电容
SOA中新的降额线可用于重新计算定时器的参数值。沿IMAX ≈ 35A 画一条水平线,沿VMAX = 13.2 V画一条垂直线(淡蓝色的线),并确定它们与红色线的交叉点。这些交叉点示出1 ms与10 ms之间的某个时间,也许是2 ms。在对数坐标图的小范围内,一般很难获取准确的数值,因此要进行慎重的选择,要考虑到这些选择对性能以及价格等其它标准的影响,确保留有足够的容差。

前 面提到对负载进行充电的时间约为850 μs。由于软启动时间是由线性斜坡决定的,与阶跃变化相比,要花费更长的时间来对负载电容充电。为了估算总的电荷量,如果使用软启动,假设需要在计算时间 的基础上加上软启动时间的一半,于是,在850 μs上加软启动时间的一半(50 μs),得到总时间约为900 μs。如果所选的MOSFET具有较大的栅极电荷(比如≥80 nC),如前所述,这个时间需要进一步缩小。如果对负载充电的时间小于最大SOA时间,MOSFET就是合适的。在这个例子中,MOSFET符合标准 (0.9 ms<2 ms)。

小于2 ms的定时器值足以保护MOSFET,大于0.9 ms则足够对负载充电。如果选择的时间恒定为1 ms,那么电容可通过下式进行计算:

其中 ITIMER = 60 μA 和 VTIMER = 1.3 V,

使用并联MOSFET时,对定时器的计算不会变。重要的是应使用单个MOSFET设计定时器及短路保护,原因是在一组MOSFET中,VGSTH会有显著差异,因此在调整过程中,需要使用单个MOSFET处理较大的电流。

完成热插拔设计
图7所示的是具有正确参数值的并联MOSFET热插拔设计。ADM1177热插拔控制器还能执行其它功能。它集成了片上ADC,可用于将电源电压和负载电流转换为数字数据,以通过I2C总线读出,提供全集成的电流及电压检测功能。

图7、完整的参考设计

时间: 2024-10-09 09:12:39

理解热插拔技术:热插拔保护电路设计过程实例的相关文章

Java Serializable(序列化)的理解和总结、具体实现过程(转)

原文地址:http://www.apkbus.com/forum.php?mod=viewthread&tid=13576&fromuid=3402 Java Serializable(序列化)的理解和总结.具体实现过程 内存中的对象是怎么存在的?  内存中各种对象的状态是?  实例变量是什么(指的是实例化的对象吗)?    使用序列化的好处是什么? 1.序列化是干什么的?        简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出

iOS runtime探究(一): 从runtime开始理解面向对象的类到面向过程的结构体

你要知道的runtime都在这里 转载请注明出处 http://blog.csdn.net/u014205968/article/details/67639205 本文主要讲解runtime相关知识,从原理到实践,由于包含内容过多分为以下五篇文章详细讲解,可自行选择需要了解的方向: 从runtime开始: 理解面向对象的类到面向过程的结构体 从runtime开始: 深入理解OC消息转发机制 从runtime开始: 理解OC的属性property 从runtime开始: 实践Category添加属

[项目构建 九]babasport 页面静态化技术Freemarker技术的介绍及使用实例.

一.FreeMarker简介 1.动态网页和静态网页差异 在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术.静态网页,随着HTML代码的生成,页面的内容和显示效 果就不会再发生变化(除非你修改页面代码).而动态网页则不然,页面代码虽然没有发生变化,但是显示的内容却是可以随着时间.环境或者数据库操作的结果而 发生相应的变化.简而言之,动态网页是基本的HTML语法规范与java.VB.VC等高级程序设计语言.数据库编程等多种技术的融合,以实现对网站内容 和风格

Apache Spark技术实战之2 -- PackratParsers实例

欢迎转载,转载请注明出处,徽沪一郎 概要 通过一个简明的Demo程序来说明如何使用scala中的PackratParsers DemoApp import scala.util.parsing.combinator.PackratParsers import scala.util.parsing.combinator.syntactical._ object Dotter extends StandardTokenParsers with PackratParsers { //定义分割符 lex

我这样理解技术人的成长过程

一直以来,在linux系统运维群(60599879),遇到很多刚刚入门或者尚未入门的技术人才,看到大家提出过很多或易或难的问题.无论什么样 的问题吧,只要我看到了,我就会在第一时间给予提示或者对应的解决思路.至于提示或者思路是否百分百管用,这个暂且搁置.我的本意是想让大家在遇到解决问 题的过程中,逐步提升自己,提示自己的同时去建立自己的一套应对解决问题的思路,以下是我今天在linux系统运维群中写了自己对技术人成长过程的理解. LAMP(812711277)  14:32:13 一个人的成长过程

命题作文:在一棵IPv4地址树中彻底理解IP路由表的各种查找过程

这是一篇命题作文.近期一直想写点东西,但一直找不到题目.正好收到一封邮件,有人问我Linux路由表的布局问题以及路由缓存的问题,加之前些日子又帮人做了一个片上路由表,所以认为这是个好题目,索性花了多半个周末的时间,奋笔疾书. 前面的套话 不写命题作文已经11年了.最后一次是在高考的考场上. 收到邮件时,被人要求写这样的命题作文,其实我是拒绝的,由于你不能叫我写我就立即去写,首先我自己得懂这个.我又不能说到了写完了的时候贴了非常多baidu出来的图片,说了非常多套话,人家一看就知道我这是转载或者翻

深入理解UIApplication和ios程序启动过程

在深入理解UIApplication前我们先了解ios程序的启动过程: UIApplication类在ios里面为app的管理和协调提供一个集中的点,每一个app有一个UIApplication的实例,当app启动时,系统会调用main函数里面的UIApplicationMain函数,该函数会创建一个UIApplication的实例,设置run loop,启动info.plist里面指定的main.storyboard,加载UIview.

深入理解Fabric环境搭建的详细过程

博主之前的文章都是教大家怎么快速的搭建一个Fabric的环境,但是其中大量的工作都隐藏到了官方的脚本中,并不方便大家深入理解其中的过程,所以博主这里就将其中的过程一步步分解,方便大家! 前面的准备工作我就不用多说了,也就是各种软件和开发环境的安装,安装好以后,我们git clone下来最新的代码,并切换到v1.0.0,并且下载好我们需要使用的docker镜像,也就是到步骤6,接下来我们要解析的是之后的步骤,也就是真正的搭建Fabric的过程. 1.生成公私钥和证书 Fabric中有两种类型的公私

【学习&amp;理解】Linux下的系统调用过程

在应用程序中,很多时候都会调用到系统调用来完成一些操作,可是系统调用是在内核态下才能调用,用户态下的应用程序是无法直接调用到的,那么操作系统是怎么处理这一过程的呢? 本文的环境是基于Linux 0.11,没有查证现代操作系统是否有所变化,不过基本思路应该差不多. 过程: 先来看一张图,有个大概的理解. 首先,应用程序能直接调用的是系统提供的API,这个在用户态(Ring3)下就可做到. 然后相应的API就会将相应的系统调用号保存到eax寄存器中(这一步通过内联汇编实现),之后就是使用int 0x