真实案例分享:MOS管电源开关电路,遇到上电冲击电流超标
做硬件,堆经验。
分享一个案例: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 示波器

相关文章:
真实案例分享:MOS管电源开关电路,遇到上电冲击电流超标
做硬件,堆经验。 分享一个案例:MOS管电源开关电路,遇到上电冲击电流超标,怎么解决的呢? 下面是正文部分。 —— 正文 —— 最近有一颗用了挺久的MOSFET发了停产通知,供应链部门找到我们研发部门,…...
LCR 164. 破解闯关密码
解题思路: 贪心 class Solution {public String crackPassword(int[] password) {String[] strs new String[password.length];for(int i 0; i < password.length; i)strs[i] String.valueOf(password[i]);Arrays.sort(strs, (x, y) -> (x y).compareTo(…...
【鸿蒙 HarmonyOS 4.0】常用组件:List/Grid/Tabs
一、背景 列表页面:List组件和Grid组件; 页签切换:Tabs组件; 二、列表页面 在我们常用的手机应用中,经常会见到一些数据列表,如设置页面、通讯录、商品列表等。下图中两个页面都包含列表,“…...
打造经典游戏:HTML5与CSS3实现俄罗斯方块
🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…...
什么是系统工程(字幕)48
0 00:00:00,760 --> 00:00:03,550 那这里我们要说一下 1 00:00:04,050 --> 00:00:06,163 你看,刚才我们这里 2 00:00:06,163 --> 00:00:06,740 3 00:00:07,440 --> 00:00:13,460 这个我们把它说成,打开这个,关闭这个 4 00:00:…...
Jenkins发送邮件、定时执行、持续部署
集成Allure报告只需要配置构建后操作即可。但如果是web自动化,或是用HTMLTestRunner生成报告,构建后操作要选择Publish HTML reports,而构建中还要添加Execute system Groovy script插件,内容: System.setProperty(&q…...
Mysql的Cardinality值
什么是Cardinality值? Cardinality值是Mysql做索引优化时一个非常关键的值,优化器会根据这个值来判断是否使用这个索引,它表示索引中唯一值的数目估计值,该值应该尽可能接近1,如果非常小,则用户需要考虑是否…...
数据结构 - 栈和队列
本篇博客将介绍栈和队列的定义以及实现。 1.栈的定义 栈是一种特殊的线性表,只允许在固定的一端进行插入和删除数据,插入数据的一端叫做栈顶,另一端叫做栈底。栈中的数据遵守后进先出的原则 LIFO (Last In First Out)。 插入数据的操作称为压…...
C++:模版进阶 | Priority_queue的模拟实现
创作不易,感谢三连支持 一、非类型模版参数 模板参数分类为类型形参与非类型形参。 类型形参即:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。 非类型形参,就是用一个常量作为类(函数)模板的一个参数&…...
【刷题记录】详谈设计循环队列
下题目为个人的刷题记录,在本节博客中我将详细谈论设计循环队列的思路,并给出代码,有需要借鉴即可。 题目:LINK 循环队列是线性表吗?或者说循环队列是线性结构吗? 对于这个问题,我们来看一下线…...
人工智能|机器学习——k-近邻算法(KNN分类算法)
1.简介 k-最近邻算法,也称为 kNN 或 k-NN,是一种非参数、有监督的学习分类器,它使用邻近度对单个数据点的分组进行分类或预测。虽然它可以用于回归问题,但它通常用作分类算法,假设可以在彼此附近找到相似点。 对于分类…...
乐得瑞 1C to 2C快充线:引领充电数据线新潮流,高效快充解决接口难题
随着科技的不断进步,数据线的接口种类也日渐繁多,但在早些时候,三合一和二合一的数据线因其独特的设计而备受欢迎。这类数据线通常采用USB-A口作为输入端,并集成了Micro USB、Lightning以及USB-C三种接口,满足了当时市…...
O2OA(翱途)开发平台如何在流程表单中使用基于Vue的ElementUI组件?
本文主要介绍如何在O2OA中进行审批流程表单或者工作流表单设计,O2OA主要采用拖拽可视化开发的方式完成流程表单的设计和配置,不需要过多的代码编写,业务人员可以直接进行修改操作。 在流程表单设计界面,可以在左边的工具栏找到Ele…...
0 OpenHarmony开源鸿蒙NEXT星河版内核嵌入式编程
开源鸿蒙NEXT星河版内核嵌入式编程 作者将狼才鲸创建日期2024-03-08 CSDN文章阅读地址Gitee文章下载地址 一、前景提要 2024年1月18日,华为放出HarmonyOS NEXT 鸿蒙星河版开发者预览版本(不是HarmonyOS NEXT版,是HarmonyOS NEXT星河版&…...
Vue | 基于 vue-admin-template 项目的跨域问题解决方法
目录 一、现存问题 二、解决方法 2.1 修改的第一个地方 2.2 修改的第二个地方 2.3 修改的第三个地方 自存 一、现存问题 报错截图如下: 二、解决方法 2.1 修改的第一个地方 在 .env.development 文件中: # base api # VUE_APP_BASE_API /d…...
mutex 和 channel 哪一个工作效率更高?
关于Rust中mutex和channel哪一个工作效率更高的问题,实际上并没有一个绝对的答案,因为效率的高低取决于具体的使用场景和需求。 互斥锁(mutex)主要用于保护共享资源,确保一次只有一个线程可以访问它。当需要多个线程同…...
Elasticsearch 通过索引阻塞实现数据保护深入解析
Elasticsearch 是一种强大的搜索和分析引擎,被广泛用于各种应用中,以其强大的全文搜索能力而著称。 不过,在日常管理 Elasticsearch 时,我们经常需要对索引进行保护,以防止数据被意外修改或删除,特别是在进…...
备考银行科技岗刷题笔记(持续更新版)
银行考试计算机部分复习 IEEE 802.11的帧格式 1.1 IEEE 802.11是什么? 802.11是国际电工电子工程学会(IEEE)为无线局域网络制定的标准。目前在802.11的基础上开发出了802.11a、802.11b、802.11g、802.11n、802.11ac。并且为了保证802.11更…...
代码随想录算法训练营第五十五天|583. 两个字符串的删除操作、72. 编辑距离。
583. 两个字符串的删除操作 题目链接:两个字符串的删除操作 题目描述: 给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 解题思路: 1、确定dp数组&#x…...
Softmax 回归 + 损失函数 + 图片分类数据集【动手学深度学习v2】李沐动手学深度学习课程笔记
目录 Softmax回归 损失函数 图片分类数据集 Softmax回归从零开始实现 Softmax回归简洁实现 Softmax回归 回归和分类的区别 回归问题举例上节课的预测房价问题,分类问题就是对样本进行分类 回归和分类的具体区别 假设真实的类别为第i个类别(值为1&#x…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...
【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...
