真实案例分享:MOS管电源开关电路,遇到上电冲击电流超标

news2025/2/27 16:18:09

做硬件,堆经验。
分享一个案例:MOS管电源开关电路,遇到上电冲击电流超标,怎么解决的呢?
下面是正文部分。
—— 正文 ——
最近有一颗用了挺久的MOSFET发了停产通知,供应链部门找到我们研发部门,说供应商推荐了另外一型号的作为兼容替代,需要研发部门分析一下。我粗略扫了一下规格书,Vds,Id,Vgs(th)这些主要参数没太大区别,反正现有的应用远没达到器件的极限,所以直接替换是没啥问题的。本以为这事就这样结了,不过为了给今年校招进来的新同事锻炼的机会,部门经理还是分配了做详细兼容替代分析的任务给新同事A君。
结果过了两天A君突然找到我:蒋工,这个替代的MOS管在你的新项目上替代不了。
我:???不会吧,这不是15A的MOS管么,我这平均电流才不到6A,峰值电流也不超过8A,怎么会用不了?虽然替代的MOS管导通电阻增加了几个毫欧,我算了下耗散功率也没增加太多,不应该有问题的。
A君:不是,其他参数都没问题,最大脉冲电流超标了,替代的MOS管这项指标只有40A,之前那个是80A,你这个新项目测出来有60A。
我:不可能,这电路用了很久了,一直都没出过问题,新项目虽然功耗增加了一些,但不可能有那么大脉冲电流,因为板上的大电容总容量又没增加多少,你是不是测错了?
A君:那你过来看看。
啪~~~~~我的脸…
不就是MOS管开关电路嘛,So easy,闭着眼睛也能设计出来。这里用的是PMOS,所以只要把栅极上拉到源极,再通过一个开关控制把栅极拉到地,这样开关导通的时候MOS管也导通,完美。
在这里插入图片描述

然后就有了下面这个测试结果:黄色迹线是漏极电流,紫色是漏极电压,蓝色是源极电压,绿色是开关使能,橘色用漏极电压乘以漏极电流得到功率。是的我没有看错,开关导通的瞬间漏极电流最大能到60A!这次替代的MOS管最大脉冲电流是40A,这样看来这个设计确实不安全。
可我还是不服气,这个电路以前也用过,也详细测过不可能出现这么大的脉冲电流,虽然新项目在MOS管后面增加了一些电容,但电容总容量实际没增加太多,即使上电瞬间充电也不太可能产生这么大电流才对,一定是什么地方出错了。
在这里插入图片描述

新项目的功耗增加了大概30%,电源树结构与之前的也有不小的区别,不过设计时并没有增大板级的大型储能电容容值,而是放了更多容量稍小但性能更好的MLCC(多层瓷片电容)到个负载电源附近以获得更好的效果。
难道是多加进来的这些MLCC在捣鬼?先仿真验证一下看看。
因为电容的ESL常常造成仿真结果出现震荡,所以这里电容只用了ESR,元件参数并不是实际的值,不过足够说明问题了。当电容有一端没有明确接到某个电压的时候,如果不人为设定一下初始电压,往往会造成仿真结果错误,这里在C3上并了一个R5就是出于这种考虑。为了模拟冲击电流造成的电源波动,这里还对总电源和电源线进行了简单建模。
在这里插入图片描述

仿真结果可以看到上电瞬间冲击电流有22A左右,还算在可控的范围内。
在这里插入图片描述

现在把万恶的MLCC加上再试试,相比于470uF的电解电容,MLCC只有22uF,然后…60A的冲击电流,增加了近3倍?!电容量增加还不到1/10,冲击电流增加了那么多倍,这样翻车,我认还不行么。
在这里插入图片描述
在这里插入图片描述

如果不使用MLCC而只是增大电解电容的容量,就增加到2200uF吧,翻了4倍多呢,结果脉冲电流最大值才24A,只是整个充电过程变长了。
在这里插入图片描述

这就是电容ESR捣鬼导致的,使用ESR较大的电解电容时,ESR限制住了流经电容的最大电流,所以冲击电流并不会太大;而ESR非常小的MLCC,在电源接通的瞬间近乎直接断路到地,所以会出现巨大的冲击电流。
我这次算是败给了直觉,直觉认为电容量决定了冲击电流,而实际上ESR才主导冲击电流的最大值,电容量更多的是决定充电的总能量(或者说电流与时间的乘积)。
元凶找到了,现在的问题是如何整改,最简单的整改方法就是给MOS管加缓启动电路。缓启动电路以前也没少用,不过这次设计偷懒,直觉又觉得不会出问题,所以就没加上去,结果翻车了。
MOS管缓启动电路的思路非常简单,充分利用MOS管的线性区,不让MOS管突然从截至跳到饱和就行了,也就是要给Vgs缓慢变化而不是突变,这样MOS管在上电过程中相当于一个可变的电阻,可以温柔地给负载电容充电而不是一口气吃一个胖子。
电容两端电压不能突变,所以在MOS管的栅极和源极之间跨接一个电容,栅极通过电阻或者恒流源缓慢对电容放电而不是简单粗暴开关接短接到地,这样就能让Vgs缓慢变化了。
在这里插入图片描述

仿真结果还不错,冲击电流从60A降到了不到15A,完全不用担心MOS管罢工。虽然缓启动增加了上电延时,不过对于总开关来说没有太严格的上电时序要求,也不算什么大问题。
在这里插入图片描述

不过没完,这个缓启动电路还会带来另一个比较大的问题就是掉电延时,而且比上电延时要严重的多(这应该很容易想明白)。好在我这里是总开关,所以掉电延时也不是什么严重的问题,不过如果是用MOS管做严格的上下电时序控制,这就是个很严重的问题了。对时序控制要求高的场合,还是用专门的负载开关去处理吧,分立MOS开关搞起来就太折腾了。

当然这套简单的缓启动电路缺点还有不少,实际使用中还得根据实际情况进行调整,电路还会更复杂(比如在栅源间跨接二极管解决源极电源突然掉电又恢复时,电路锁定在之前状态的问题),这里就不再展开了。
实际电路中加入缓启动电路再测试,和预期的一样有很大改善。
在这里插入图片描述

—— The End ——

本文转自知乎|蒋宇辰,点击“阅读原文”可访问原文。

1、作者使用的仿真软件是LTspice。

2、电容的ESR对电路的影响,这个案例可以让大家有真切感受。

3、文中对“MOS管缓启动(又叫软启动)电路”没有进行详细分析,强烈建议阅读文章 精准电流走向分析,带软开启功能的MOS管电源开关电路!

4:精准电流走向分析,带软开启功能的MOS管电源开关电路!

5:非常经典的余电快速泄放电路,你学会了吗?

6:灰常实用的一键开关机电路,各位大佬进来mark一下?


7:最初的电路把mos管G极直接拉到地,GS有-11V以上,应该要一个分压电阻吧,不然容易损坏mos管

8:虽然低ESR电容对脉冲有非常好的吸收能力,但上电的瞬间本质上也是脉冲,而我们又希望ESR对这个过程失效,ESR:搞不懂你们人类。

9:en脚接高频pwm是否也是一个方法?

10:LTspice仿真软件可以共享一下下载链接吗,还有怎么用示波器测试MOS管漏极电流啊

PS:电流环或者通过串联一个小电阻测电压的方式吧

11:加了缓启动如果mos输出短接那不是很容易在线性区炸管?不是要快开快关吗?

PS:时间很短的

12:脉冲电流是通过什么工具测出来的呢,也是示波器吗

PS 示波器

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1504577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KEIL 5.38的ARM-CM3/4 ARM汇编设计学习笔记10 - STM32的SDIO学习2

KEIL 5.38的ARM-CM3/4 ARM汇编设计学习笔记10 - STM32的SDIO学习2 一、问题回顾二、本次的任务三、 需要注意的问题3.1 Card Identification Mode时的时钟频率3.2 CMD0指令的疑似问题3.3 发送带参数的ACMD41时要注意时间时序和时效3.4 CPSM的指令发送问题3.5 调试过程中的SD卡的…

伪分布Hadoop的安装与部署

1.实训目标 (1)熟悉掌握使用在Linux下安装JDK。 (2)熟悉掌握使用在Linux下安装Hadoop。 (3)熟悉掌握使用配置SSH免密登录。 2.实训环境与软件 环境 版本 说明 Windows 10系统 64位 操作电脑配置 …

【ENVI精讲】处理专题五:基于像元二分模型的植被覆盖度反演

一、专题概述 植被覆盖度是指植被(包括叶、茎、枝)在地面的垂直投影面积占统计区总面积的百分比。植被覆盖度常用于植被变化、生态环境研究、水土保持、气候等方面。植被覆盖度数据来源于地理遥感生态网平台。 二、像元二分法模型 像元二分模型是一种…

什么是自动化测试?什么情况下使用?

什么是自动化测试? 自动化测试是指把以人为驱动的测试行为转化为机器执行的过程。实际上自动化测试往往通过一些测试工具或框架,编写自动化测试脚本,来模拟手工测试过程。比如说,在项目迭代过程中,持续的回归测试是一项非常枯燥…

蓝桥集训之序列

蓝桥集训之序列 核心思想&#xff1a;多路归并 每次将两个序列合并 –> 两序列n2个和中最小的n个 构成新序列 第一行都是加b1 每次在最外面的元素中取最小(优先队列) #include<iostream>#include<algorithm>#include<cstring>#include<queue>#incl…

ChatGPT 控制机器人的基本框架

过去的一年&#xff0c;OpenAI的chatGPT将自然语言的大型语言模型&#xff08;LLM&#xff09;推向了公众的视野&#xff0c;人工智能AI如一夜春风吹遍了巴黎&#xff0c;全世界都为AI而疯狂。 OpenAI ChatGPT是一个使用人类反馈进行微调的预训练生成文本模型。不像以前的模型主…

LoadBalancer (本地负载均衡)

1.loadbalancer本地负载均衡客户端 VS Nginx服务端负载均衡区别 Nginx是服务器负载均衡&#xff0c;客户端所有请求都会交给nginx&#xff0c;然后由nginx实现转发请求&#xff0c;即负载均衡是由服务端实现的。 loadbalancer本地负载均衡&#xff0c;在调用微服务接口时候&a…

云计算项目十一:构建完整的日志分析平台

检查k8s集群环境&#xff0c;master主机操作&#xff0c;确定是ready 启动harbor [rootharbor ~]# cd /usr/local/harbor [rootharbor harbor]# /usr/local/bin/docker-compose up -d 检查head插件是否启动&#xff0c;如果没有&#xff0c;需要启动 [rootes-0001 ~]# system…

VARMA(Vector Auto Regressive Moving Average) in Time Series Modelling

what is VARMA? ARIMA是针对单一变量进行建模的方法,当我们需要进行多变量时序建模时,需要使用VAR and VMA and VARMA模型。 VAR:Vector Auto-Regressive,a generalization of the auto-regressive model for multivariate time series where the time series is station…

【重新定义matlab强大系列十七】Matlab深入浅出长短期记忆神经网络LSTM

&#x1f517; 运行环境&#xff1a;Matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&#x1f91…

音视频按照时长分类小工具

应某用户的需求&#xff0c;编写了这款根据音视频时长分类小工具。 实际效果如下&#xff1a; 显示的是时分秒&#xff1a; 核心代码&#xff1a; MediaInfo MI; if (MI.Open(strPathInput.c_str()) 0){return -1;}_tstring stDuration MI.Get(stream_t::Stream_Audio,0,_T…

【Flink】Flink 的八种分区策略(源码解读)

Flink 的八种分区策略&#xff08;源码解读&#xff09; 1.继承关系图1.1 接口&#xff1a;ChannelSelector1.2 抽象类&#xff1a;StreamPartitioner1.3 继承关系图 2.分区策略2.1 GlobalPartitioner2.2 ShufflePartitioner2.3 BroadcastPartitioner2.4 RebalancePartitioner2…

手机APP测试——如何进行安装、卸载、运行?

手机APP测试——主要针对的是安卓( Android )和苹果IOS两大主流操作系统,主要考虑的就是功能性、兼容性、稳定性、易用性、性能等测试&#xff0c;今天先来讲讲如何进行安装、卸载、运行的内容。 一、App安装 1、点击运行APP安装包,检测安装包是否正常; . 2、进入[安装向导]…

Java17 --- SpringCloud之OpenFeign

目录 一、OpenFeign实现服务调用 1.1、创建openfeign微服务 二、Openfeign超时控制 2.1、全局默认配置 2.2、单个微服务配置 三、重试机制 四、替换openfeign默认的HttpClient 五、请求响应压缩 六、日志打印 一、OpenFeign实现服务调用 1.1、创建openfeign微服…

LLM长上下文外推方法

现在的LLM都集中在卷上下文长度了&#xff0c;最新的Claude3已经支持200K的上下文&#xff0c;见&#xff1a;cost-context。下面是一些提升LLM长度外推能力的方法总结&#xff1a; 数据工程 符尧大佬的最新工作&#xff1a;Data Engineering for Scaling Language Models to …

[虚拟机保护逆向] [HGAME 2023 week4]vm

[虚拟机保护逆向] [HGAME 2023 week4]vm 虚拟机逆向的注意点&#xff1a;具体每个函数的功能&#xff0c;和其对应的硬件编码的*长度* 和 *含义*&#xff0c;都分析出来后就可以编写脚本将题目的opcode转化位vm实际执行的指令 &#xff1a;分析完成函数功能后就可以编写脚本输出…

c++ primer plus 笔记 第十六章 string类和标准模板库

string类 string自动调整大小的功能&#xff1a; string字符串是怎么占用内存空间的&#xff1f; 前景&#xff1a; 如果只给string字符串分配string字符串大小的空间&#xff0c;当一个string字符串附加到另一个string字符串上&#xff0c;这个string字符串是以占用…

Spring web开发(入门)

1、我们在执行程序时&#xff0c;运行的需要是这个界面 2、简单的web接口&#xff08;127.0.0.1表示本机IP&#xff09; package com.example.demo;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestCont…

代码学习记录15

随想录日记part15 t i m e &#xff1a; time&#xff1a; time&#xff1a; 2024.03.09 主要内容&#xff1a;今天的主要内容是二叉树的第四部分&#xff0c;主要涉及平衡二叉树的建立&#xff1b;二叉树的路径查找&#xff1b;左叶子之和&#xff1b;找树左下角的值&#xff…

考研复习C语言初阶(4)+标记和BFS展开的扫雷游戏

目录 1. 一维数组的创建和初始化。 1.1 数组的创建 1.2 数组的初始化 1.3 一维数组的使用 1.4 一维数组在内存中的存储 2. 二维数组的创建和初始化 2.1 二维数组的创建 2.2 二维数组的初始化 2.3 二维数组的使用 2.4 二维数组在内存中的存储 3. 数组越界 4. 冒泡…