大家好,很高兴和各位一起分享我第 108 篇原创文章,喜欢和支持我的工程师,一定记得给我点赞、收藏、分享哟。
加微信【jiyuyun18】与作者沟通交流
实验目的
学习升压(Boost)型直流开关电源的基本原理。
实验原理
给一个电感通电,然后迅速断电,电感的开路一侧会出现高电压。不理解的可阅读 开关电源的故事-起源-电感毛刺 。
我们可以用下面这个由一个电感和一个开关组成的简单电路来学习一下电感的升压原理。下图是电路图:
图1-电感升压实验电路
下图是在面包板上组装好的电路:
图2-面包板上的电感升压电路
下面是按下按钮然后迅速松开后的波形截图:
图3-电感升压波形
可以看到 5V 电压在电感开路一侧被升高到了 130V。
在这个简单的电感升压电路后面加一个二极管和电容就构成了经典的升压型直流-直流开关电源(switched-mode boost DC-DC power supply):
图4-经典升压型直流-直流开关电源原理图
当开关闭合期间,由于二极管右侧电压高于左侧,二极管可以防止电容存储的电能通过开关向电源放电。电容用于减小开关电源纹波,起稳压滤波的作用。
实验电路
我们使用 Arduino UNO 来产生控制 PWM 信号,开关我们使用 N 沟道场效应管 IRFZ44N。N 沟道场效管的 Gate 极在输入低电平 时场管的 Drain 极和 Source 极会关闭,反之, Gate 极输入高电平 ,Drain 极和 Source 极会导通。
实验电路原理图如下:
图5-基于Arduino的升压型直流-直流开关电源
Arduino A0 引脚接可调电阻,用于调节输出电压。
A1 接反馈信号,由于使用了 1k 和 8k 电阻分压,实际输出电压是此电压的 9 倍。
D3 引脚接输出 PWM 控制信号,输出高电平时场管导通,输出低电平时场管关闭。
可调电阻输出 5V 时,输出电压最大,为 5V*9=45V。
下面是 Arduino 代码:
/*
* 这是使用 Arduino 制作的带反馈的升压型(Boost)直流开关电源示例代码。
* 使用 Arduino UNO.
* D3: 输出控制 PWM 信号。
* A1: 接反馈信号。
* A0: 接可调电阻。用于调节输出电压。
* 欢迎搜索并关注薇信公号:飞多学堂。学习更多电子知识和示波器使用技巧。
*/
int potentiometer = A0; // 输入引脚:可调电阻,接A0。
int feedback = A1; // 输入引脚:反馈信号,接A1。
int PWM = 3; // 输出引脚:PWM 控制信号,接D3。
int pwm = 0; // 要写入到 PWM 的值,0:输出方波占空比 0%(低电平);255:方波占空比 100%(高电平)
// 本实验中使用的是 N 沟道场效应管,低电平关闭,高电平导通
// PWM 引脚输出高电平->场管打开->电感导通;
// PWM 引脚输出低电平->场管关闭->电感截止;
// 电感导通的时间越长,关闭时输出的电压越高。
// 增加 PWM 占空比->增加场管导通的时间->增加电感导通时间->增加关闭时的瞬间电压->增加输出电压
void setup() {
// put your setup code here, to run once:
pinMode(potentiometer, INPUT); // 引脚设置为输入
pinMode(feedback, INPUT); // 引脚设置为输入
pinMode(PWM, OUTPUT); // 引脚设置为输出
// 引脚3和11,PWM 信号频率:31.37255Hz
TCCR2B = TCCR2B & B11111000 | B00000001;
Serial.begin(9600); // open the serial port at 9600 bps:
}
void loop() {
// put your main code here, to run repeatedly:
// 读取可调电阻电压,也就是期望电压,
float voltage = analogRead(potentiometer);
// 读取反馈电压,来自于实际电压,因为使用了1k和8.2k电阻分压,所以实际电压是反馈电压的10倍
float output = analogRead(feedback);
Serial.print("voltage=");Serial.print(voltage);
Serial.print(",output=");Serial.print(output);
// 如果输出电压低于期望电压,增加 PWM 信号占空比,增加电感导通时间,提高电感关断时的电压,进而提高输出电压
if (output < voltage)
{
pwm = pwm + 1;
pwm = constrain(pwm, 1, 254);
}
// 如果输出电压高于期望电压,减小 PWM 信号占空比,减小电感导通时间,降低电感关断时的电压,进而降低输出电压
else if (output > voltage)
{
pwm = pwm - 1;
pwm = constrain(pwm, 1, 254);
}
analogWrite(PWM, pwm);
Serial.print(",pwm=");Serial.print(pwm);
Serial.println();
}
程序不停对可调电阻的电压 voltage 和输出电压的 1/9 output进行比较,当 voltage < output 时,增大 PWM 信号占空比,提高输出电压;当 voltage > output 时,减小占空比,降低输出电压。
实验步骤
1.在面包板上搭建电路:
图6-面包板上的基于Arduino的升压型直流-直流开关电源
2.示波器波形图如下:
图7-基于Arduino的升压型直流-直流开关电源波形动图
可以看到随着 PWM 控制信号占空比的增加,电感输出电压逐渐增大,最高可达 34.8V。
实验结论
升压型直流开关电源是利用了通电后的电感突然断开,在开路的一侧会出现电压升高这一特性而实现的,并且,通电时间越长,电感断开时出现的瞬间电压越高。