当前位置:首页 > 电源 > 功率器件
[导读]简介:何为软开关?软开关是相对于硬开关而言。硬开关顾名思义,电源的开断完全取决于硬件,是物理层上的开合;而软开关,则是必须借助于软件,准确地说是借助软件来进行关闭。

简介:何为软开关?软开关是相对于硬开关而言。硬开关顾名思义,电源的开断完全取决于硬件,是物理层上的开合;而软开关,则是必须借助于软件,准确地说是借助软件来进行关闭。

两者各有优劣。前者因为是物理层的操作,可以讲电源和系统部分完全阻隔,所以关闭时漏电流非常小,但缺陷是关闭时无法给予软件任何通知信息;而后者的关闭只是电平的操作,关闭后无法将电源部分与系统部分隔离,因此相对而言,漏电流会比较大,但优点在于,关闭是由软件进行控制,所以能在关闭前做好相应的准备工作。正是因为此特性,故电子设备来说采用硬开关的设计非常少,更多的是软开关。举个简单的例子,我们常用的家用电脑就是软开关设计。试想加入电脑采用的是硬开关的设计,会是什么结果?结果估计就如同我们在正常使用电脑时,突然将插头给拔掉一样。这样,对于电脑的设备,特别是硬盘而言,所造成的损害是不可估量的。

软开关设计 硬件篇

对于软开关而言,在我们按下那一瞬间,因为还没有给CPU上电,不存在任何程序执行的可能,所以注定“打开”这一个操作只能用硬件完成。当系统跑起来以后,此时软件已经开始运作,我们就能通过对GPIO进行操作来关闭设备。综上所述,如果要实现软开关,我们必须具备两个GPIO口。一个为DETECT_KEY,作为输入,用来检测按键是否按下;另一个为GPIO_SHDW,作为输出,用来控制电源的闭合。

现在,我们来看一个典型的软开关电路(图一,以下讲解都以电路图的标号为指代):

 

该电路很简单,对外的节点有四处,分别如下:

PWR_ON:用来控制系统的电源。当其为high时,系统正常供电。

VDD33D:直接接3.3V电压

GPIO_SHDW:当其为low时关闭系统电源

DETECT_KEY:检测按键S1的状态。

我们现在根据开机到关机的过程来一步一步来分析该电路:

1.未开机,S1未按下。

此时GPIO_SHDN为low,直接控制了Q1和Q2的控制脚(PIN1),令VDD33D的电压无法输出到POW_ON端。而D1因为S1未按下,该二极管也处于阻隔状态,S1端的VDD33D也无法输送到POW_ON端。故整个系统还处于关闭状态。

2.S1按下,开机。

S1按下,二极管D1导通,S1端的VDD33D电压输送到PWR_ON端,系统开始启动。系统启动时,将GPIO_SHDN置high。此时PWR_ON已经输入了R2,R3端的VDD33D电压,D1两边电压基本上处于平衡状态,D1相当于断开,S1端的电压无法加载到PWR_ON。

3.S1放开,系统正常运行。

S1放开,D1不可能再导通,而此时电压已经主要是从R2,R3端的VDD3D输入,令PWR_ON一直保持high状态,故系统一直处于正常运行状态。

4.S1按下,系统正常运行。

因为S1按下,导致Q3导通,拉低R6端下方的电压,此时DETECT_KEY这个GPIO口检测到电平为low,软件开始进入计时状态。

5.S1放开。

因为S1已经放开,Q3不再导通,R6下端电压恢复,DETECT_KEY检测到电平为high。此时软件和阈值做比较,如果超过预定的阈值,则关闭系统;否则,将本次操作忽略。在这里之所以和阈值进行比较,是出自于防抖的需要。因为在实际使用中,可能R6端会有微小的极为短暂的电压降,如果软件不设置阈值,检测到该电压降就会关闭,这对于产品而言是不允许的。

软开关设计 软件篇

相对于硬件来说,软开关的软件代码更为简单,只需要检测DETECT_KEY即可。该功能的实现主要是通过GPIO,而wince并没有对GPIO做上层定义,并且每款CPU的GPIO的操作方式又各自不同,所以本文无法给出一个完整可用的代码,只能用伪代码作为示例讲解。虽然是伪代码,但对于了解其流程还是有一定的意义。

void Power_On()

{

...

//设置GPIO_SHDN为high

SetGPIO_HIGH(GPIO_SHDN);

...

}

DWORD PWR_IntrThread(PVOID pParam)

{

....

//使能中断

EnableInterrupt();

//初始化中断

InterruptInitialize(btnSysIntr, hNotifyEvent, 0, 0)

while(TRUE)

{

//等待中断事件

dwRet = WaitForSingleObject(hNotifyEvent, INFINITE);

if(dwRet == WAIT_OBJECT_0)

{

//中断处理完毕,让中断再次进入处理

InterruptDone(btnSysIntr);

//再次等待中断处理事件

dwRet = WaitForSingleObject(hNotifyEvent, 1000);

if(dwRet == WAIT_TIMEOUT)

{

//当其位WAIT_TIMEOUT时,意味着为长按,进入poweroff函数

EnterPowerOff();

}

}

}

....

}

void EnterPowerOff()

{

...

while(TRUE)

{

if(IsGPIOHigh(GPIO_DETECT_KEY) != FALSE)

{

//S1已经松开,跳出循环

break;

}

}

//关闭系统电源

SetGPIO_LOW(GPIO_SHDN);

...

}

这里唯一需要注意的是EnterPowerOff函数,在这里必须要检测S1是否已经松开。如果还没有松开S1就将GPIO_SHDN置为LOW,因为S1端还有VDD33D电压输入到PWR_ON端,所以系统还是无法关闭。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

理想的软开关过程是电流或电压先降到零,电压或电流再缓慢上升到断态值,所以开关损耗近似为零。

关键字: 软开关

在电子电路中,电解电容的纹波电流承受能力直接影响其使用寿命和电路稳定性。准确测试纹波电流不仅能验证电容性能是否达标,也是电路设计可靠性验证的关键环节。以下从测试原理、设备准备、操作步骤到数据解读,全面介绍电解电容纹波电流...

关键字: 电解电容 纹波电流 电路设计

在电子电路设计与实践中,稳压芯片是维持稳定输出电压的关键组件。然而,当我们将两个输出电压不同的稳压芯片的输出脚连接在一起时,会引发一系列复杂的物理现象和潜在风险。这一操作不仅违反了常规的电路设计原则,还可能对电路系统造成...

关键字: 稳压 芯片 电路设计

在当今电子技术飞速发展的时代,随着电子产品不断向小型化、高性能化迈进,印刷电路板(PCB)的设计变得愈发复杂和精密。过孔,作为 PCB 中连接不同层线路的关键元件,其对信号完整性的影响已成为电路设计中不可忽视的重要因素。...

关键字: 印刷电路板 电路设计 信号

IIC(Inter IC Bus)协议是一种广泛应用于嵌入式系统中的同步半双工通信协议。随着电子设备的复杂性不断增加,高多层电路板设计变得越来越普遍。在高多层电路板中实现可靠的IIC通信,需要综合考虑布线策略、电源设计、...

关键字: 电路板 电路设计

在现代高速、高密度的电路设计领域,电路完整性是确保电子系统可靠运行的关键要素。回路电感作为电路中的一个重要参数,对电路完整性有着多方面的深远影响。从信号传输的准确性到电源系统的稳定性,回路电感在其中扮演着不容忽视的角色。...

关键字: 电子系统 回路电感 电路设计

在现代电力电子领域,反激式转换器以其结构简单、成本低廉、易于多路输出等特点,在中小功率场合得到了广泛应用。然而,设计一个高效的反激式转换器并非易事,特别是变压器的设计与软开关技术的实现,直接关系到转换器的性能与效率。本文...

关键字: 反激式转换器 变压器 软开关

随着电子技术的飞速发展,开关电源作为电子设备中的关键组件,其性能要求日益提高。传统的硬开关技术因其在开关过程中产生较大的损耗和电磁干扰(EMI),已难以满足现代电子设备对高效率、低噪声的需求。因此,软开关技术应运而生,其...

关键字: 软开关 ZVS ZCS

在电力电子领域,随着对电源系统性能要求的不断提高,如何精确控制输出电流大小成为了关键技术问题。移相全桥(PSFB)变换器因其具有软开关特性、高效率等优点,在众多应用中得到了广泛采用。而原边峰值电流控制作为 PSFB 变换...

关键字: 电源系统 移相全桥 软开关

在现代汽车电子控制系统中,CAN(Controller Area Network,控制器局域网)总线作为一种高效、可靠的通信协议,发挥着举足轻重的作用。它不仅连接着发动机控制单元(ECU)、变速器控制单元、制动系统控制单...

关键字: 车规级CAN总线 电路设计
关闭