您好, 登录| 注册|
论坛导航
您好, 登录| 注册|
子站:
论坛首页    高校联盟/电子设计大赛
  •  发帖
  • 收藏

【风采汇】+降压型直流开关稳压电源的设计资料分享(包括PCB、电路、程序)
阅读: 6950 |  回复: 41 楼层直达

2019/09/12 15:14:29
1
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

QQ截图20160321155901  【活动进行中……】礼遇感恩节!参与顶楼  免费送仪器

QQ截图20160321155901   【风采汇】参与有奖!获奖作品分享大赛



降压型直流开关稳压电源系统的设计资料

这是2018年的题目,获得省二,这次我和大家分享的是降压型直流开关稳压电源,这次资料全部开源,对,是全部开源。我会陆续更新把电路PCB、主要原理以及程序等全部开源。

还有需要PCB和程序以及494使用资料的小伙伴 可以在下面回复邮箱 我看到就会发送的

先上主要的系统图片

先上几份图

2019/09/13 00:01:26
2
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

2019/09/13 00:14:25
3
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长
2019/09/13 00:18:16
4
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长
此题目是2018年山西省电子设计竞赛的电源组1题题目,要求设计一个额定功率15W的电源。对纹波电压有特别要求,具有过流保护。电压调整率和负载调整率以及效率要求容易实现
2019/09/14 00:05:48
5
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

当时手绘的原理图,这是主回路以及EMI

2019/09/14 00:10:04
6
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

初步方案利用TL494主控,控制电路如图

2019/09/14 00:12:58
7
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

当时利用运放做的负载识别

2019/09/14 00:14:16
8
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

BUCK电路

2019/09/14 23:17:15
9
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长
TL494是一种固定频率脉宽调制电路,它包含了开关电源控制所需的全部功能,广泛应用于单端正激双管式、半桥式、全桥式开关电源,振荡频率可以通过外部的一个电阻和一个电容进行调节。输出电容的脉冲其实是通过电容上的正极性锯齿波电压与另外2个控制信号进行比较来实现。功率输出管Q1和Q2受控于或非门。当双稳触压器的 时钟信号为低电平时才会被通过,即只有在锯齿波电压大于控制信号期间才会被选通。当控制信号增大,输出脉冲的宽度将减小。

控制信号由集成电路外部输入,一路送至时间死区时间比较器,一路送往误差放大器的输入端。死区时间比较器具有120mV的输入补偿电压,它限制了最小输出死区时间约等于锯齿波的周期4%,当输出端接地,最大输出占空比为96%,而输出端接参考电平时,占空比为48%。当把死区时间控制输入端接上固定的电压,即能在输出脉冲上产生附加的死区时间。

脉冲宽度调制比较器为误差放大器调节输出脉宽提供了一个手段:当反馈电压从0.5V变化到3.5时,输出的脉冲宽度从被死区确定的最大导通百分比时间中下降为零。2个误差放大器具有从—0.3V到(vcc—2.0)的共模输入范围,这可能从电源的输出电压和电流察觉的到。误差放大器的输出端常处于高电平,它与脉冲宽度调智器的反相输入端进行“或”运算,正是这种电路结构,放大器只需最小的输出即可支配控制电路。

2019/09/22 07:41:19
10
冰糖葫芦娃[版主]
电源币:213 | 积分:2 主题帖:17 | 回复帖:45
LV5
营长
TL 494确实是个好玩意
2019/09/27 23:54:46
12
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长
494玩法好多,有些还没玩过呢
2019/09/27 14:44:10
11
薄浩楠
电源币:83 | 积分:7 主题帖:4 | 回复帖:52
LV5
营长
哈哈,可以呀
2019/09/28 00:15:11
13
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

恒压输出与负载识别功能的切换即恒压和恒流模式的切换,可以采用数控方法和OP07双运放放大电路。

通过两个OP07组成双运放电路,第一个OP07运放通过调整电压放大倍数让负载阻值以输出电压形式体现,第二个OP07运放调整输出电压方向,再将电压反馈至TL494的2脚,从而实现负载识别功能。该方案具有很好的稳定性,并且硬件电路不复杂。为了实现切换功能,我们选择按键开关进行手动切换,简单实用。通过比较,我们选择此方案。如图所示。

2019/09/28 00:24:45
14
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

电阻分压检测电路。经过在输出回路中串连采样电阻,将经过电阻的电流转换成两端的电压,经过检测电压值从而获得电流值。

使用电阻采样法,电阻与电位器串联,获得中间电压返回给单片机,实现采集电压。

的电流转换成两端的电压,经过检测电压值从而获得电流值。

2019/09/28 00:37:33
15
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

过流保护采用TL494内部实现过流保护需要在电路中加采样电阻。利用采样电阻的分压进入芯片内部,实现过流保护。同时该芯片有多种过流保护模式,该方案电路非常简单,但是在3.2A情况下,要实现过流保护,需要加大采样电阻,这会降低整个系统的效率。或者可以采用运放放大电压在进行控制。

这对运放线性要求较高。采样电路如图

2019/09/30 00:30:18
16
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

降低纹波

首先,在输入端串联一个磁珠,以滤除电源与系统之间的杂波,在输出端接入两个2000uF的电解电容和三个470uF的钽电容,用来滤除低频信号,再接入一个104独石电容滤除高频信号实现降低纹波

降低纹波的方法

(1)加大输出滤波的电容、电感参数;

(2)提高开关电源工作频率,增加L值或提高开关频率减小电感内电流波动;

(3)也可采用EMI滤波电路,即由串联电抗器和并联电容器组成低通滤波电路.

2019/10/07 23:25:03
17
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

驱动电路由IR2104半桥驱动芯片驱动BUCK型同步整流电路实现系统降压的操作

该芯片采用被动式泵荷升压原理。上电时,电源流过快恢复二极管D向电容C充电,C上的端电压很快升至接近Vcc,这时如果下管导通,C负级被拉低,形成充电回路,会很快充电至接近Vcc,当PWM波形翻转时,芯片输出反向电平,下管截止,上管导通,C负极电位被抬高到接近电源电压,水涨船高,C正极电位这时已超过Vcc电源电压。因有D的存在,该电压不会向电源倒流,C此时开始向芯片内部的高压侧悬浮驱动电路供电,C上的端电压被充至高于电源高压的Vcc,只要上下管一直轮流导通和截止,C就会不断向高压侧悬浮驱动电路供电,使上管打开的时候,高压侧悬浮驱动电路电压一直大于上管的S极。采用该芯片降低了整体电路的设计难道,只要电容C选择恰当,该电路运行稳定。

BUCK型同步整流电路如下

2104自举电路如图

2019/10/07 23:41:19
18
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

经过对tl494电路的推敲,利用洞洞板搭建系统电路如下

该电路只能实现对系统稳压降压以及带载功能

过流和负载识别尚没使用

2019/10/07 23:48:36
19
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

在初代系统的设计基础上加入了由358硬件实现的过流保护功能,过流在基本在3.2A左右.由于采样电阻的加入导致负载调整率的严重下跌,(电压调整率不带载不受影响),接下来要解决采样电阻和负载调整的矛盾,以及负载识别功能

2019/10/07 23:57:31
20
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

这个是具备完整功能的电路系统,在以前基础上将494主控芯片独立焊接防止受到主回路浪涌的影响

电压调整0.3%

负载调整5.5%

效率80%

纹波未测

虽然可以实现过流,负载识别等功能但是负载调整 效率 纹波都未达要求

2019/10/08 00:00:17
21
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

这个是在输出端采用Π型滤波大大降低了纹波,但是由于滤波使得公共端地的不稳定造成电路有时的故障不能工作

一开始以为是基准电压的浮动就用另一片494的基准作为控制端2脚的基准电压。滤波电路带来的损耗也比较大

2019/10/10 00:27:31
22
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

在经过一系列调试测试参数,发现利用494做的纯硬件的稳压电源可以实现过流保护功能、负载识别功能。

并且再通过滤波电路的调整会得到一个满足的纹波值

但是这种电路效率最高只能达到75%,离要求还有很多距离而且负载调整率严重不行

重量也严重超标

因此,我们组决定换用覆铜板,利用频率和电路PCB布局走线来降低纹波,

2019/10/12 00:23:59
23
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

这个是当时以494主控做的最完美的稳压系统,重量也是最轻的

上部分是控制电路,下部分是主回路

2019/10/12 00:28:08
24
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

在用TL494主控调试中发现,494虽然设计利用起来简便,但在需要高频环境下以及高效率低纹波都满足不了设计要求。

而且负载调整的采样电阻分压补偿,硬件做起来难度大精度不高,过流精度也稍微低一点。

因此对电路主控进行重新选择,用stc12单片机作为系统主控通过软件实现过流精度以及负载调整的采样电阻分压补偿,

stc12单片机可以提供50khz的工作频率进一步降低纹波电压。

经过AD的洗礼和绘制第一代电路覆铜板的照片如下

2019/10/31 00:06:52
25
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

当时第一次绘制PCB,没怎么绘好,缺陷稍多请大家多多包涵

2019/10/31 00:13:46
26
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

这是当时那个大家伙测试时的图片

2019/10/31 00:17:18
27
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

在原有的基础上进行了主回路的改动稍微好看了一点

2019/11/01 00:12:19
28
薄浩楠
电源币:83 | 积分:7 主题帖:4 | 回复帖:52
LV5
营长
顶一个
2019/11/21 23:26:17
29
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

在对电路的进一步调整后把模组进一步集成,形成如下几代图样,期间也曾用双面板做过

2019/11/21 23:30:30
30
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

在经过对电路的调整最终选择了最后一个方案的PCB

最终成品如下

2019/11/21 23:46:57
31
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

对系统进行全面的调试后,进行了对系统参数的测量,此次的系统全部符合题目要求

2019/11/26 11:20:40
32
zwic
电源币:25 | 积分:5 主题帖:37 | 回复帖:76
LV5
营长
这个太复杂了点吧?才15W!不惜成本啊!
2019/11/27 00:31:30
33
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长
主要是设计要求滤波的效果高,为了实现要求而设计的
2019/11/27 00:44:52
34
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

电路大致都介绍完啦,下面开始先把程序附近来,由于我是在三相程序里面改动的,因此会有些突如其来的注释,不必管他

#include <STC12C5A60S2.H>
#include <intrins.h>	      /*use _nop_() function*/
#define uchar unsigned char
#define uint unsigned int
#define ADC_FLAG      0X10
#define S1_S0 0x40              //P_SW1.6
#define S1_S1 0x80              //P_SW1.7

	
sbit SD1	=	P3^3; 		//第一桥臂,和P13对应同一块ir2104
sbit LED1    =   P1^5;
sbit LED2    =   P1^6;
sbit LED3    =   P1^7;
sbit LED4    =   P3^4;
sbit key1  	= 	P0^0;		//ok
sbit key2  	= 	P2^0;		//+

sfr P_SW1   = 0xA2;             //外设功能切换寄存器1


uint Vout=0;
uint Iout = 0;							//输出电压
uint V1=0;
uint I1 = 0;
uint sum = 0;
uint Vref = 0;
uchar block = 175;
uchar log = 0;
uchar lag = 0;
uchar snm = 0;
uint get = 0;
uint got = 0;
float R = 9.998;
float Vin = 5.08;
float Vget;
float Rfu;
bit busy;




void delay();
void Key_1_();
void Key_2_();
void init_pca();
void init_timer();
void SendData(uchar dat);
void SendString(char *s);

/**********************************************************
函数说明: 延时程序
**********************************************************/
void delay(uchar t)
{
	uint j;
	uchar i;
	for(i=0;i<t;i++)
		for(j=0;j<1000;j++);
}
/**********************************************************
函数说明: pca计数器初始化函数
**********************************************************/
void init_pca(void)
{
	CMOD=0x08;//计数器0的溢出为PCA计数器的时钟源,允许pca中断使能,PDF资料上错误
	CCON=0x00;
	CCAPM0=0x42;//8位PWM输出,无中断
	CCAPM1=0x42;//8位PWM输出,无中断
	CL=0x00;//清零pca计数器
	CH=0x00;
	CCAP0L=0;    //初始化spwm输出的占空比
	CCAP0H=0;
	CCAP1L=0;    //初始化spwm输出的占空比
	CCAP1H=0;
	CR=1;//运行pca计数器
}
/**********************************************************
函数说明: 计数器0初始化函数
**********************************************************/
void init_timer(void)
{
	TMOD= 0x21;//	   
	TH0 = 0XF7;//	  
	TL0 = 0x7C;    //T1的计数值低位
    ACC = P_SW1;
    ACC &= ~(S1_S0 | S1_S1);    //S1_S0=0 S1_S1=0
    P_SW1 = ACC;                //(P3.0/RxD, P3.1/TxD)
	   SCON = 0x50;                //8位可变波特率
	AUXR=0xC0;//计数器均工作在1T模式。计数频率11.0592M
	ET0 = 1; //开中计数器0断
	TR0 = 1; //开启计数器0
	TL1 = 0xD9;		//设定定时初值
	TH1 = 0xD9;
    TR1 = 1;                    //定时器1开始工作
    ES = 1;                     //使能串口中断
}

/**********************************************************
函数说明: 读ADC数值
**********************************************************/
uchar GetADC(uchar ch)
{	uint laji;
	uint result=0;
	ADC_CONTR=0x88|ch;	  		//选择通道	开始AD转换
	_nop_();  _nop_();  
	_nop_();  _nop_(); 
	while(!ADC_FLAG); 			//查询ADC_FLOG是否置位1  转换结束
    ~ADC_FLAG; 					//Clear ADC interrupt flag//1111 0111	  结束AD转换
	laji=ADC_RESL;	
	result=ADC_RES;
	return(result);
}

/**********************************************************
函数说明: ADC查询法 始化函数
**********************************************************/
void InitADC() 
{	uchar a;
	P1M1=0x07;
	P1M0=0x00;	   
	P1ASF=0X07;
		   		//相应端口当ADC使用时,端口要置位  P10&P11
	ADC_RES=0;
	ADC_CONTR=0X80;	   	//1000 0000	  开电源,最低速
		delay(50);
	for(a=0;a<5;a++)
	{
		GetADC(0);	
	}
}
/**************************************
短延时
**************************************/
void delay5ms()   
{
    uchar i,v,k;
    for(i=1;i>0;i--)
        for(v=168;v>0;v--)
            for(k=22;k>0;k--);
}

/**********************************************************
函数说明: 过流保护开启按键
**********************************************************/
void Key_1_()
{
if(key1==0)
	{
		delay(100);
		if(key1==0)	
		{    
		SD1 = 1;
		LED4 = 1;
		delay(200);
		LED4 = 0;                               
		}	 delay(100);
	}		
}
/**********************************************************
函数说明: 模式选择按键
**********************************************************/
void Key_2_()
{
if(key2==0)
	{
		delay(100);
		if(key2==0)	
		{
		if(log<3)log+=1;
		else log = 0;
		LED4 = 1;
		delay(200);
		LED4 = 0;
		}
				delay(100);
	}	 
}

/**********************************************************
函数说明: 调整电压
**********************************************************/
void VAdjust()
{	uchar a,b,c,d;
	

	switch(lag)
	{
	case 0:	  I1 = GetADC(1); sum+=1;Iout +=I1;break;
	case 1:	  ADC_CONTR=0X00;_nop_(); _nop_();_nop_();  _nop_();sum+=1;break;
	case 2:	  V1 = GetADC(0); sum+=1; Vout +=V1;break;
	case 3:	  ADC_CONTR=0X80;_nop_(); _nop_();_nop_();  _nop_();sum+=1;break;
	}	
	if(sum >= 100)
	{
		sum = 0;	
	 switch(lag)
	{

	case 0:	Iout = Iout/50;
			 a = 48+Iout/1000;
			 b = 48+Iout%1000/100;
			 c = 48+Iout%100/10;
			 d = 48+Iout%10;
//           SendData(e);
		   SendData(a);
		   SendData(b);
		   SendData(c);
		   SendData(d);
		   SendData('\n');
	  		Vref = 119+ Iout/29
			;
	 	  break;
	case 1:	break;
	case 2:	Vout = Vout/100;
			 a = 48+Vout/1000;
			 b = 48+Vout%1000/100;
			 c = 48+Vout%100/10;
			 d = 48+Vout%10;
//           SendData(e);
		  SendData(a);
		   SendData(b);
		   SendData(c);
		   SendData(d);
		   SendData('\n');		  
	
	   			if(Vout>Vref)		//输出电压小于36V
		{
			if(block==255) 
				block=255;
			else
				block++;
		}
		else						//输出电压大于36V
		{	
			if(block==50) 
				block= 50;
			else
				block--;	
	
		}  break;
	
		case 3:	break;
	}
		 

				lag+=1;
		if(lag>3) lag=0;
		Vout = 0;
		Iout = 0;
	}
}
/**********************************************************
函数说明: 过流保护
**********************************************************/ 
void IAdjust()
{	uchar a,b,c,d;
	

	switch(lag)
	{
	case 0:	  I1 = GetADC(1); sum+=1;Iout +=I1;break;
	case 1:	  ADC_CONTR=0X00;_nop_(); _nop_();_nop_();  _nop_();sum+=1;break;
	case 2:	  V1 = GetADC(0); sum+=1; Vout +=V1;break;
	case 3:	  ADC_CONTR=0X80;_nop_(); _nop_();_nop_();  _nop_();sum+=1;break;
	}	
	if(sum >= 100)
	{
		sum = 0;	
	 switch(lag)
	{
	case 0:	Iout = Iout/50;
			 a = 48+Iout/1000;
			 b = 48+Iout%1000/100;
			 c = 48+Iout%100/10;
			 d = 48+Iout%10;
//           SendData(e);
		   SendData(a);
		   SendData(b);
		   SendData(c);
		   SendData(d);
		   SendData('\n');
		  if(Iout>=218) 
	 {
	  snm+=1;
	  if(snm >=20)
  		SD1 = 0;
	 }		Vref = 119+ Iout/29;  break;
	case 1:	break;
	case 2:	Vout = Vout/100;
			 a = 48+Vout/1000;
			 b = 48+Vout%1000/100;
			 c = 48+Vout%100/10;
			 d = 48+Vout%10;
//           SendData(e);
		  SendData(a);
		   SendData(b);
		   SendData(c);
		   SendData(d);
		   SendData('\n');	
		   			if(Vout>Vref)		//输出电压小于36V
		{
			if(block==255) 
				block=255;
			else
				block++;
		}
		else						//输出电压大于36V
		{
			if(block==50) 
				block= 50;
			else
				block--;	
	
		}  break;
	
		case 3:	break;
	}
		 

				lag+=1;
		if(lag>3) lag=0;
		Vout = 0;
		Iout = 0;
	}
}


/**********************************************************
函数说明: 负载识别
**********************************************************/
void KnowLoad(void)
{	uchar a,b,c,d;
	switch(lag)
	{
	case 0:	  get = GetADC(2); sum+=1;got +=get;break;
	case 1:	  ADC_CONTR=0X00;_nop_(); _nop_();_nop_();  _nop_();sum+=1;break;
	case 2:	  V1 = GetADC(0); sum+=1; Vout +=V1;break;
	case 3:	  ADC_CONTR=0X80;_nop_(); _nop_();_nop_();  _nop_();sum+=1;break;
	}	
	if(sum >= 100)
	{
		sum = 0;	
	 switch(lag)
	{
	case 0:	got = got/100;
		  	 a = 48+got/1000;
			 b = 48+got%1000/100;
			 c = 48+got%100/10;
			 d = 48+got%10;
//           SendData(e);
		   SendData(a);
		   SendData(b);
		   SendData(c);
		   SendData(d);
		   SendData('\n');
		   if(got>=240) Vref = 0;
		   else
		   {   if(got<=60)	 {Vget =  (got+2)*0.02; 
		   Rfu =Vget*R/Vin/(1-Vget/Vin)/2.0; 
			 Vref = Rfu/0.02-3;
			 }
		    if(got>60 && got<100)	
			{ Vget =  (got-3)*0.02; 
			 Rfu =Vget*R/Vin/(1-Vget/Vin)/2.0; 
			 Vref = Rfu/0.02+2;
			 }
		   if(got>=100)	
		   { Vget =  (got-6)*0.02; 
		   Rfu =Vget*R/Vin/(1-Vget/Vin)/2.0; 
			 Vref = Rfu/0.02;
			 }
		   			  
	    	}  break;
	case 1:	break;
	case 2:	Vout = Vout/100;
			 a = 48+Vout/1000;
			 b = 48+Vout%1000/100;
			 c = 48+Vout%100/10;
			 d = 48+Vout%10;
//           SendData(e);
/*		  SendData(a);
		   SendData(b);
		   SendData(c);
		   SendData(d);
		   SendData('\n');	 */
		   			if(Vout>Vref)		//输出电压小于36V
		{
			if(block==255) 
				block=255;
			else
				block++;
		}
		else						//输出电压大于36V
		{
			if(block==50) 
				block= 50;
			else
				block--;	
	
		}  break;
	
		case 3:	break;
	}
		 

				lag+=1;
		if(lag>3) lag=0;
		Vout = 0;
		Iout = 0;
	}
}

/**********************************************************
函数说明: 主函数
**********************************************************/
void main(void)
{	 LED1 = LED2 =LED3 =LED4 =0;
	delay(255);delay(255);delay(255);
	InitADC();
	init_pca();
	init_timer();
	EA=1;//开总中断
	while(1)//主循环
	{	

		Key_2_();
	//	VAdjust();		
       switch(log)   
	   {
	   case 1:  break;
	   
	   case 0:	VAdjust();LED1 = 1;LED2 = LED3 = 0;break;
	   
	   case 3:	IAdjust();LED2 = 1;LED1 = LED3 = 0;Key_1_();break;

	   case 2:	KnowLoad();LED3 = 1;LED1 = LED2 = 0;break;   
	   } 

		
	}
}
/**********************************************************
函数说明: 定时器0中断
**********************************************************/
void int_timer0(void) interrupt 1//计数器1中断函数
 {
				CCAP0H=block;
		 		CCAP1H=175;
 }
 /*----------------------------
UART 中断服务程序
-----------------------------*/
void Uart() interrupt 4 using 1
{
    if (RI)
    {
        RI = 0;                 //清除RI位
        P0 = SBUF;              //P0显示串口数据
       
    }
    if (TI)
    {
        TI = 0;                 //清除TI位
        busy = 0;               //清忙标志
    }
}

/*----------------------------
发送串口数据
----------------------------*/
void SendData(uchar dat)
{
    while (busy);               //等待前面的数据发送完成
    ACC = dat;                  //获取校验位P (PSW.0)
    busy = 1;
    SBUF = ACC;                 //写数据到UART数据寄存器
}

/*----------------------------
发送字符串
----------------------------*/
void SendString(char *s)
{
    while (*s)                  //检测字符串结束标志
    {
        SendData(*s++);         //发送当前字符
    }
}

2019/11/28 23:22:15
35
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

系统参数测试

2019/11/28 23:24:24
36
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

补更一份TL494主控电路的原理图

2019/11/29 23:57:33
37
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

BUCK电路草图和PCB

2019/11/29 23:59:48
38
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

主要元器件清单

2019/11/30 23:36:47
39
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

测试结果分析

根据上述测试数据,由此可以得出结论:

(1) 额定输出电压下,输出电压偏差为:5.5mV,远小于100mV。说明电路的输出准确。

(2) 额定输入电压下,已测最大输出电流为3.102A,大于3A。说明电路能承受大电流。

(3) 输出噪声纹波电压峰峰值为20.5mV,小于50mV。满足题目要求。

(4) 负载调整率为1.02%,小于5%;以及电压调整率为0.01%,小于0.5%。说明整个电路稳定性好,不易受到外部的干扰。

(5) 满载时效率为90.4%。说明该电路效率极高。

(6) 具备3.2A过流保护。

(7) 整体重量为0.17kg说明该电路具有小体积小重量的优势。

2019/11/30 23:37:53
40
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

本次设计主要采用TL494和IRF3205场效应管构成DC/DC同步整流降压电路,全部达到题目要求指标。满载效率高达90.4%,纹波在50mV以内,具有过流保护的功能。总体具有高效能、高效率、小质量的特点。

通过对直流稳压电源相关知识的查阅,首先确定各个模块部分的设计方案,进行比较分析,确定整体的总体设计方案。然后对用到的软件函数程序进行设计编程,并测试可用性,将主程序烧入单片机中,与硬件电路部分配合调试测试。对出现的错误进行修正,对电源输出电压进行数据测试,对数据进行分析,满足设计所达要求。

对系统进行软件、硬件联合调试,数据分析,可知该系统输出稳定,电压变化小,精度较高。仿真设计已完成基本功能,能够达到预期目标。但是,由于此次设计时间有限和自身能力的匮乏,在实际实物设计中可能控制不是太理想,比如:带负载运行时需要的功率就会更大,线路自身的损耗,数模转换的电流相差较大的困扰等都是需要实物考虑的因素。

2019/11/30 23:39:36
41
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

本系统以Buck降压斩波电路为核心,以STC12C5A60S2单片机为主控制器和PWM信号发生器,根据反馈信号对PWM信号做出调整,进行可靠的闭环控制,从而实现稳压输出。系统输出直流电压5V,可以通过键盘设定和步进调整,最大输出电流超过3.2A,电压调整率和负载调整率低,DC-DC变换器的效率达到93.9%。能对输入电压、输出电压和输出电流进行测量和具备友好的人机交互界面。

经过四天三夜的辛勤努力,我们实现了题目的全部要求,在某些方面系统性能还超过了题目的要求,但由于时间紧,工作量大,系统还存在许多可以改进的地方,比如电路布局、和抗干扰方面还有很大的提升空间,经过改进,相信性能还会有进一步的提升。本次竞赛极大的锻炼了我们各方面的能力,虽然我们遇到了很多困难和障碍,但总体上成功与挫折交替,困难与希望并存,我们将继续努力争取更大的进步。

 

2019/12/07 23:04:44
42
GJGJ
电源币:68 | 积分:8 主题帖:3 | 回复帖:27
LV4
连长

本次比赛过程从最初的TL494备选电路系统到集成覆铜板成品经过了许许多多的调试,克服了很多问题并最终完成了对电路设计的要求,

在这过程中我们付出了很多同时也 收获了很多。

客服热线
服务时间:周一至周五9:00-18:00
微信关注
免费技术研讨会
获取一手干货分享

互联网违法不良信息举报

Reporting Internet Illegal and Bad Information
editor@netbroad.com
400-003-2006