今天我们一起学习降压型开关电源。
为什么需要开关电源
在之前的 线性稳压器教程 中,我们学习了 L7805 等线性稳压器的使用。它们使用起来很简单,但是效率低下。
例如,如果您尝试用 26 伏电压为线性稳压器供电,并且输出电压为 5 伏 电流为 3 安培,则最终会产生 63 瓦的热量。如此巨大的能量浪费是不可接受的。
对于大功率项目,你希望使用所谓的开关电源。有各种不同类型的开关电源,可以让你将一种电压转换为另一种电压。
本文主要讨论降压型(Buck or Step-down)开关电源。它是一种可以将较高电压降低到较低电压的电源。
原理
让我们先从一个简单的电路开始。电路由一个 10 伏的直流电源串联一个开关组成。
开关是什么并不重要。它可以是双极性晶体管,MOS 管,甚至可以是疯狂推动机械开关的疯子。
出于效率原因,开关应该使用场效应(MOS)管。但现在我们在电路中还是用通用开关符号。接下来让我们用占空比为 50% 的脉冲宽度调制(PWM)信号来控制开关的断开和闭合。
这会给我们输出一个一个占空比为 50% 的方波,一半时间为 10 伏,一半时间为 0 伏,这样平均电压就是 5 伏。
现在让我们添加一个 LC 低通滤波器。电感抵抗电流的突变,电容抵抗电压的突变。综合效果是我们的 LC 低通滤波器抹平了方波,我们在输出上获得了 5 伏的相对稳定的直流电。
但是上面这个电路有个问题。假设开关已闭合,我们的电源正在输送一些电流。这意味着电流正流过这个电感器。
现在让我们断开开关。由于电感中的电流不能立即改变,这意味开关断开的一小段时间内仍然有电流流过电感。
但是电感左侧没有接任何器件,所以在这里积累大量带负电荷的电子(电子的流动的方向是和传统电流方向相反的)。从而产生一个巨大的负电压毛刺。
这种电压毛刺可以达到数百甚至数千伏。
如此巨大的负电压毛刺足以烧毁连接在此处的任何开关。如果您想了解有关这种现象的更多信息,请查看我另一篇文章:电感毛刺。在那篇文章中,提到了一个解决办法,就是添加一个二极管。二极管就位后,现在无论何时断开开关,电流都可以在一个完整的路径中流动,并且开关后的电压几乎不会低于零,因为二极管的存在,电感左侧电压最多比接地低 0.7 伏(二极管压降电压),肖特基二极管会更低。
下图是经典的降压型开关电源电路,你可以使用这个基本电路以比线性稳压器(Linear Voltage Regulator)更有效的方式将高电压直流电降低到电压较低的直流电。
使用 Arduino 搭建
我们使用 Arduino 搭建一个降压型直流电源(Buck Converter)。这个电路仅用来学习降压型开关电源的作用,不具有实际用途。Arduino 可以输出方波(PWM), 我们可以利用它输出的方波作为控制信号,在面包上搭建一个简单的降压型开关电源。
无反馈
我们使用 P沟道场效应管 IRF9540 来开关主电源,这里我使用可调电源输出的 12 伏电压。因为 Arduino 的驱动能力不足,不足以直接驱动 IRF9540, 我们使用一个 NPN 型BJT 晶体管 S8050 来驱动 IRF9540。我们编程让 Arduino 输出 31 k 赫兹的控制方波。旋转电位器可以改变输出方波的占空比。这样,当 Arduino D3 脚输出高电平时,三接管导通,拉低 N 沟道场管的门级(G),场管导通;当 D3 输出低电平时,三极管断开,场管门级为高电平,场管关断。
电位器一个引脚接在 Arduino 的 5V 引脚上,一个引脚接地,这样电位器中间引脚可以输出 0~5伏电压。
A0 引脚: 接可调电位器的中间引脚。用于调节方波的占空比。
D3 引脚:输出 31k 赫兹的控制方波,用于控制开关 IRF9540 的关断。
/* * 这是用 arduino 制作的降压型开关电源的示例代码。 * 我们使用 Aruino Uno. Nano 也是可以的。 * D3 引脚输出控制方波 * No feedback is connected here. */ int potentiometer = A0; // 接可调电阻中间引脚 int PWM = 3; void setup() { pinMode(potentiometer, INPUT); pinMode(PWM, OUTPUT); // 引脚3和11, 输出PWM 方波 频率:31372.55 Hz TCCR2B = TCCR2B & B11111000 | B00000001; } void loop() { float voltage = analogRead(potentiometer); int VALUE = map(voltage, 0, 1024, 0, 254); analogWrite(PWM, VALUE); }
我们在面包板上组装好电路,使用一个 12 伏的灯泡作为负载。示波器探头 CH1 接在 Arduino 输出的控制方波上,CH2 接在电压输出端。调节电位器可以调节输出电压,可以看到灯泡也随着变亮。
这个电路可以在负载不变的情况下维持稳定的电压。但是如果负载变了,输出电流就会改变,进而导致输出电压改变。如果想要在负载改变的情况下,维持电压不变,需要有一个反馈系统,该系统将监测输出电压,如果输出电压变低,则可以增加输出方波的占空比,如果输出电压变高,则可以减小输出电压的占空比,进而维持输出电压不变。
有反馈
我们给我们的开关电源加一个反馈系统,以实现在负载改变的情况下,维持输出电压不变。我们使用 Arduino 监控输出电压,如果低了,我们就增加方波占空比,进而拉高输出电压;如果输出电压高了,我们减小占空比,进而减小输出电压。因为电路输出电压的范围为 0~12 伏,而 Arduino ADC 的最大输入电压为 5 伏,不能直接检测输出电压。我们需要将输出电压降到 5 伏以下,我们使用一个简单的电阻分压电路实现。
带反馈的完整的电路如下:
A0 引脚: 接可调电位器的中间引脚。用于调节方波的占空比。
A1 引脚:接反馈电阻,用于监控输出电压。
D3 引脚:输出 31k 赫兹的控制方波,用于控制开关 IRF9540 的关断。
带反馈的降压型开关电源代码如下:
/* * 这是用 arduino 制作的降压型开关电源的示例代码。 * 我们使用 Aruino Uno. 用 Nano 也是可以的。 * A0 引脚: 接可调电位器的中间引脚。用于调节方波的占空比。 * A1 引脚:接反馈电阻。 * D3 引脚:输出 31k 赫兹的控制方波。 */ int potentiometer = A0; // 接可调电阻中间引脚 int feedback = A1; int PWM = 3; int VALUE = 0; void setup() { pinMode(potentiometer, INPUT); pinMode(feedback, INPUT); pinMode(PWM, OUTPUT); // 引脚3和11, 输出PWM 方波 频率:31372.55 Hz TCCR2B = TCCR2B & B11111000 | B00000001; } void loop() { float voltage = analogRead(potentiometer); float output = analogRead(feedback); if (output > voltage) { // 输出电压大了,减小占空比 VALUE = VALUE - 1; VALUE = constrain(VALUE, 1, 254); } else if (output < voltage) {// 输出电压小了,增大占空比 VALUE = VALUE + 1; VALUE = constrain(VALUE, 1, 254); } analogWrite(PWM, VALUE); }
一站式解决方案
上面的降压型开关电源,罗里吧嗦,又是方波,又是反馈,挺麻烦的。市面上有多种降压型开关电源芯片,提供一站式解决方案。。比如 LM2576T-ADJ 这款芯片,使用反馈电阻可以在负载变化的情况下,保证输出电压不变。
输入可以在 40 伏的范围内。不要施加更高的电压,否则可能会烧毁 LM2576T-ADJ 组件。在这种情况下,我们不需要外部开关,因为 LM2576T-ADJ 里面已经有了。将电压反馈引脚连接到输出分压器后,LM2576T-ADJ 将根据输出电压的高低改变输出控制方波的占空比以保持输出电压恒定。在这种情况下,使用肖特基二极管,因为它具有低正向压降电压。
焊起来
像这种大电流,而且有的器件要求尽量靠近芯片引脚的东西,我们就不要在面包板上搞了。我们使用洞洞板搞。
首先在把 LM2576T-ADJ 焊接在洞洞板的中间,在它周围留下大量的空间,以安装其他器件。
输入端的滤波电解电容焊接在芯片的一两厘米内。
同样的方法焊接输出端的二极管、电感,保持元件连线尽可能短:
再焊上输出滤波电容:
当焊接反馈电阻时,尽量使返回芯片的导线尽可能短。
电路板底部的布局比顶部更重要。注意我的地线是一条直线,那两个蓝色的是 100 nF 滤波电容,输入输出各一个:
最后的效果:
跑起来
一切准备就绪就绪。我将用 10 伏电压作为我的开关电源的输入电压。我将使用我的可调节电子负载来查看它如何提供不同大小的电流。
如果你在家中这样做,你可以使用 5欧姆 10瓦的功率电阻器作为负载。
首先,让我们检查一下输出电压是我们想要的。他是完美的 5 伏直流电!
现在,让我们来看看电路中的这个节点,它被称为开关节点, 也就是 LM2576-ADJ 的 2脚:
您可以看到我们熟悉的 0 到 10伏方波,开关频率为 50.65 kHz。但是你可以看到占空比为 59.5 %,而不是理论上的 50%,此时的负载电流为 1 安培。
如果我将负载增加到 2 安培,占空比增加到 63 %。在3 安培时, 功率损失更大,控制器必须将占空比更改为 67% 才能够维持稳定的 5 伏输出:
还记得我之前说过我们得到了一个完美的 5 伏直流电吗?那并不是真实的情况。让我们将示波器的耦合更改为交流耦合并放大波形。可以看到在输出上有一个小的交流分量,因为我们的低通滤波器并不完美。我们称其为电源的输出纹波。在 1 安培负载下,我们有大约 10 毫伏的纹波和噪声。
如果我将负载电流增加到 3 安培,纹波变得更加嘈杂,达到了 16.7 mV:
如果我将输入电压增加到 26 伏,纹波波形会变大,达到了 33 mV。
理想情况下,我们希望这种纹波尽可能小。对于大多数应用,低于 100 毫伏的峰峰值就可以了。但一般来说,您不想用开关电源为无线电接收器等敏感电路供电。
现在让我们计算我们制作的的这个电源的效率。并将其与线性稳压器进行比较。
从 26 伏的输入,我的台式电源向直流转换器提供 0.6889 安培。
我的万用表测量输出为 4.905 伏.
我将负载正好设置为 3 安培。如果你在家中使用电阻器作为负载进行操作,请确保使用万用表准确测量输出电流。
将数据带入公式计算,我们发现我们的电源效率为 82%,非常好!这就是人们为什么通常将开关电源用于高于 1 安培的电流。
评论