• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

【show】12V5A输出的三种拓扑,反激,正激,推挽!

      本文延续了“【讨论】各位高手大师进来看看,此贴必火!”这个帖子,在那个帖子中讨论了方案,大家说出了自己对此设计的看法。首先,感谢chenyankun老梁头ta7698rj44444wanghaitingxd285070yueyunno1zhenxiangwangjiudan

singer2002各位大师的解答与建议。还有一位非常热心的哥哥,那就是那个“坑蒙拐骗”我的单片机的“”新月GG“”。其次,大家在讨论中,都提到了正激的效率会比反激的效率高,我也查了相关的资料,确实如此。但是由于在知道这个正激效率高的信息的时候,我已经向电源CBD区020徐大哥买了一款芯片,ME8202,这款芯片有许多的好处,讲究的办事,不能出尔反尔,所以,我打算先用反激做做看。并不是否定大家意见的意思。老实说,这是我们大学本科组的一个电子设计大赛的电源题目,我正在做,由于时间比较长,有一个月的时间,很充分,所以又一次决定先用反激做一下看看,效率会有多少。之后该方案,做个正激,两个比较着学习。第三,那就是为了我的《开关电源设计(第3版)》,干掉电源网80楼,感谢大家可以热心回复此帖子。先谢谢大家!

 

电源设计题目如下:

DC-DC开关稳压电源

一、任务

设计并制作如图1所示的开关稳压电源。

                               

1电源框图

二、要求

在电阻负载条件下,使电源满足下述要求:

1.基本要求

(1) 输出电压VO12V

(2) 额定输出电流ION5A

(3) VinDC41V变到DC57V时,电压调整率SU2%IO=5A)

(4) IO从0变到5A时,负载调整率SI5%Vin=48V)

(5) 输出噪声纹波电压峰-峰值VOPP1VVin=48V,VO=12V,IO=5A)

(6) DC-DC变换器效率70%Vin=48V,Vo=12V,IO=5A)

(7) 具有过流保护功能动作电流IO(th)=6±0.2A

2.发挥部分

(1) 进一步提高电压调整率使SU0.5%IO=5A)

(2) 进一步提高负载调整率,使SI1%Vin=48V)

(3) 进一步提高效率,使85%Vin=48V,UO=12V,IO=5A)

(4) 排除过流故障后,电源能自动恢复为正常状态;

(5) 具有输出电压、电流的测量和数字显示功能。

(6) 其他。

 

全部回复(161)
正序查看
倒序查看
2014-04-16 18:56
原理图已经画好如下。参数都已经设计完,由于是比赛的题目,所以此次设计并没有考虑成本和体积的要素,更加注重了效率,所以元器件选择的时候都比较贵一些,但是,一分钱一分货,确实有它的好处。同时还要感谢电源网这个平台,我一直都没注意到的一个页面就是Elecshop.com。这里面的好多元器件的选型,元器件的价格以及主参数都已经列出,可以买的不大头,也可以比较选择更加适合的元器件。TKS TO DIANYUANWANG.

0
回复
2014-04-16 18:57
@SKY丶辉煌
原理图已经画好如下。参数都已经设计完,由于是比赛的题目,所以此次设计并没有考虑成本和体积的要素,更加注重了效率,所以元器件选择的时候都比较贵一些,但是,一分钱一分货,确实有它的好处。同时还要感谢电源网这个平台,我一直都没注意到的一个页面就是Elecshop.com。这里面的好多元器件的选型,元器件的价格以及主参数都已经列出,可以买的不大头,也可以比较选择更加适合的元器件。TKSTODIANYUANWANG.[图片]

由于买的mosfet和diode没有邮寄到,所以焊接过程要等两天,这些参数大家可以帮忙参考一下,有什么不足之处,大家一起讨论。谢谢大家

0
回复
2014-04-16 18:59
变压器采用了PQ5050,这个变压器个头确实好大,买的时候18元一个。听很多的前辈说,变压器大点对效率提高有好处,所以此次特别选择了大个的变压器,来试试是不是真的。
0
回复
2014-04-16 19:10

 

PQ5050:原边10匝4股0.67mm并饶

                副边4匝20股0.67并饶

            原边10匝4股0.67mm并饶

            辅助绕组5匝0.33mm

采用三明治绕法,有效降低漏感。

0
回复
老梁头
LV.10
6
2014-04-16 19:28
@SKY丶辉煌
[图片] PQ5050:原边10匝4股0.67mm并饶                副边4匝20股0.67并饶            原边10匝4股0.67mm并饶            辅助绕组5匝0.33mm采用三明治绕法,有效降低漏感。
个人感觉最好用丝包线 绞合线来绕 避免趋肤效应
0
回复
2014-04-16 20:08
@老梁头
个人感觉最好用丝包线绞合线来绕避免趋肤效应
丝包线?是漆包线么?
0
回复
兰波
LV.8
8
2014-04-16 22:26
@SKY丶辉煌
[图片] PQ5050:原边10匝4股0.67mm并饶                副边4匝20股0.67并饶            原边10匝4股0.67mm并饶            辅助绕组5匝0.33mm采用三明治绕法,有效降低漏感。
期待你的大作,坐等图文并茂的讲解。
0
回复
2014-04-17 11:25
好棒~
0
回复
2014-04-17 13:42
@SKY丶辉煌
丝包线?是漆包线么?

就是多股线。

0
回复
SKY丶辉煌
LV.10
11
2014-04-17 17:31
@新月GG
就是多股线。
恩,多股并饶~
0
回复
btma
LV.8
12
2014-04-17 20:27
@SKY丶辉煌
[图片] PQ5050:原边10匝4股0.67mm并饶                副边4匝20股0.67并饶            原边10匝4股0.67mm并饶            辅助绕组5匝0.33mm采用三明治绕法,有效降低漏感。
PQ5050反激能上200多W了,用于60W太奢了吧?
0
回复
SKY丶辉煌
LV.10
13
2014-04-17 20:48
@btma
PQ5050反激能上200多W了,用于60W太奢了吧?

恩,是的。我想验证一下是不是变压器体积大点,会不会提升效率,由于不是产品,就做一套而已,所以并没有考虑到体积和成本问题。谢谢你的指导

0
回复
2014-04-17 23:23
@SKY丶辉煌
恩,多股并饶~

不是多股并饶,是多股线。

0
回复
wangjiudan
LV.5
15
2014-04-18 01:30
等待学习
0
回复
2014-04-18 09:12
@SKY丶辉煌
恩,是的。我想验证一下是不是变压器体积大点,会不会提升效率,由于不是产品,就做一套而已,所以并没有考虑到体积和成本问题。谢谢你的指导[图片]
变压器的个头都比别人60W的电源大啦
0
回复
SKY丶辉煌
LV.10
17
2014-04-18 10:06
@qinzutaim
变压器的个头都比别人60W的电源大啦[图片]
是啊,嘿嘿
0
回复
SKY丶辉煌
LV.10
18
2014-04-18 10:09
@qinzutaim
变压器的个头都比别人60W的电源大啦[图片]
有没有这个说法呢?变压器个头大,综合损耗小?
0
回复
2014-04-18 10:12
@SKY丶辉煌
有没有这个说法呢?变压器个头大,综合损耗小?
铁损和铜损都会降低,这个好理解啊。。。。
0
回复
SKY丶辉煌
LV.10
20
2014-04-18 10:43
@qinzutaim
铁损和铜损都会降低,这个好理解啊。。。。
哈哈,英雄所见略同,我的一个哥哥也是这么认为
0
回复
SKY丶辉煌
LV.10
21
2014-04-18 11:04

干货更新,由于在黑龙江,大部分电子元器件,比较优质的MOSFET,DIODE没有卖的,所以只能在网上买了MOSFET和DIODE,由于顺丰也不给力了,两天还没到(有可能是商家没发货),所以这两天抽出空来解决一下单片机显示问题,由于普通51单片机内部没有ADC功能,所以本次设计采用了STM8单片机,是STM32的前身,STM8内部自带ADC,不用外接ADC模块,比如ADC0832.Stm8内部有16个转换通道,10位的采样精度,所以基于此优点,本次选择此芯片。把进步向大家发出来:现在完成一路的采样,电压采样:

0
回复
SKY丶辉煌
LV.10
22
2014-04-18 11:06
@SKY丶辉煌
干货更新,由于在黑龙江,大部分电子元器件,比较优质的MOSFET,DIODE没有卖的,所以只能在网上买了MOSFET和DIODE,由于顺丰也不给力了,两天还没到(有可能是商家没发货),所以这两天抽出空来解决一下单片机显示问题,由于普通51单片机内部没有ADC功能,所以本次设计采用了STM8单片机,是STM32的前身,STM8内部自带ADC,不用外接ADC模块,比如ADC0832.Stm8内部有16个转换通道,10位的采样精度,所以基于此优点,本次选择此芯片。把进步向大家发出来:现在完成一路的采样,电压采样:[图片]

精度还可以,有1mV的误差,可以允许的。

下面把程序发出来让大家审核,有什么完善的地方我一定做到,希望大家给出宝贵意见。

 

/**
  ******************************************************************************
  * @file    Project/main.c 
  * @author  MCD Application Team
  * @version V2.0.0
  * @date    25-February-2011
  * @brief   Main program body
  ******************************************************************************
  * @attention
  *
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  *
  * 

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include "stm8s.h" /* Private defines -----------------------------------------------------------*/ unsigned char const shumaguan[] = {0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}; //ADCValue数组存放A/D采样值,voltageADC为数字滤波后的结果 unsigned int ADCValue[20] = {0},voltageADC = 0; //voltage为电压计算结果,单位mV unsigned int voltage = 0; /* Private function prototypes -----------------------------------------------*/ void ADConvert(void); void DigitalFiltering(void); void Display(void); void Delay(unsigned int t); /* Private functions ---------------------------------------------------------*/ void main(void) { unsigned char i; //PG口数码管段选,PE口数码管位选 GPIO_Init(GPIOG,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_HIGH_FAST); GPIO_Init(GPIOE,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_HIGH_FAST); /*ADC2配置为: -连续转换模式 -通道0(PB0) -fADC = fmaster/2 -触发模式为定时器 -触发关 -数据右对齐 -选择通道0上的施密特触发器 -施密特触发器关*/ ADC2_Init(ADC2_CONVERSIONMODE_CONTINUOUS, ADC2_CHANNEL_0, ADC2_PRESSEL_FCPU_D2, ADC2_EXTTRIG_TIM, DISABLE, ADC2_ALIGN_RIGHT, ADC2_SCHMITTTRIG_CHANNEL0, DISABLE); /* Infinite loop */ while (1) { //连续转换20次 ADConvert(); //数字滤波 DigitalFiltering(); i = 200; while(i --) Display(); } } void ADConvert(void) { unsigned char count = 0; //连续转换 ADC2->CR1 |= 0x02; ADC2_StartConversion(); while(count < 20) { //等待转换结束 while(ADC2_GetFlagStatus() == RESET); //清除转换结束标志位 ADC2_ClearFlag(); ADCValue[count] = ADC2_GetConversionValue(); count++; } //关闭连续转换 ADC2->CR1 &= ~0X02; } void DigitalFiltering(void) { unsigned char i,j; unsigned int temp; //对数组排序 for(i = 20;i >= 1;i--) { for(j = 0;j<(i-1);j++) { if(ADCValue[j] > ADCValue[j+1]) { temp = ADCValue[j]; ADCValue[j] = ADCValue[j+1]; ADCValue[j+1] = temp; } } } //舍弃最大和最小的两个数,然后求平均值 voltageADC = 0; for(i = 2;i<=17;i++) voltageADC += ADCValue[i]; voltageADC /= 16; } void Display(void) { unsigned char displayArray[4],i; voltage = (unsigned int)((unsigned long)voltageADC * 3161UL / 1023UL); //拆分数据,使用数码管显示 displayArray[3] = voltage / 1000; displayArray[2] = (voltage % 1000) / 100; displayArray[1] = (voltage % 100) / 10; displayArray[0] = voltage % 10; //使用数码管显示电压值,单位mV for(i = 0;i < 4;i++) { GPIOG->ODR = shumaguan[displayArray[i]]; GPIOE->ODR = ~(0X01 << i); Delay(100); GPIOE->ODR = 0XFF; } } void Delay(unsigned int t) { while(t--); } #ifdef USE_FULL_ASSERT /** * @brief Reports the name of the source file and the source line number * where the assert_param error has occurred. * @param file: pointer to the source file name * @param line: assert_param error line source number * @retval : None */ void assert_failed(u8* file, u32 line) { /* User can add his own implementation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* Infinite loop */ while (1) { } } #endif /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/

 

0
回复
zhenxiang
LV.10
23
2014-04-18 11:12
@SKY丶辉煌
是啊,嘿嘿
太浪费了。而且这个方案效率做不高。
0
回复
SKY丶辉煌
LV.10
24
2014-04-18 11:24
@zhenxiang
太浪费了。而且这个方案效率做不高。
恩,批评接受。做完这个方案在做正激试试
0
回复
yueyunno1
LV.9
25
2014-04-18 11:37
@SKY丶辉煌
精度还可以,有1mV的误差,可以允许的。下面把程序发出来让大家审核,有什么完善的地方我一定做到,希望大家给出宝贵意见。 /*********************************************************************************@fileProject/main.c*@authorMCDApplicationTeam*@versionV2.0.0*@date25-February-2011*@briefMainprogrambody*******************************************************************************@attention**THEPRESENTFIRMWAREWHICHISFORGUIDANCEONLYAIMSATPROVIDINGCUSTOMERS*WITHCODINGINFORMATIONREGARDINGTHEIRPRODUCTSINORDERFORTHEMTOSAVE*TIME.ASARESULT,STMICROELECTRONICSSHALLNOTBEHELDLIABLEFORANY*DIRECT,INDIRECTORCONSEQUENTIALDAMAGESWITHRESPECTTOANYCLAIMSARISING*FROMTHECONTENTOFSUCHFIRMWAREAND/ORTHEUSEMADEBYCUSTOMERSOFTHE*CODINGINFORMATIONCONTAINEDHEREININCONNECTIONWITHTHEIRPRODUCTS.**©COPYRIGHT2011STMicroelectronics*******************************************************************************//*Includes------------------------------------------------------------------*/#include"stm8s.h"/*Privatedefines-----------------------------------------------------------*/unsignedcharconstshumaguan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//ADCValue数组存放A/D采样值,voltageADC为数字滤波后的结果unsignedintADCValue[20]={0},voltageADC=0;//voltage为电压计算结果,单位mVunsignedintvoltage=0;/*Privatefunctionprototypes-----------------------------------------------*/voidADConvert(void);voidDigitalFiltering(void);voidDisplay(void);voidDelay(unsignedintt);/*Privatefunctions---------------------------------------------------------*/voidmain(void){unsignedchari;//PG口数码管段选,PE口数码管位选GPIO_Init(GPIOG,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_HIGH_FAST);GPIO_Init(GPIOE,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_HIGH_FAST);/*ADC2配置为:-连续转换模式-通道0(PB0)-fADC=fmaster/2-触发模式为定时器-触发关-数据右对齐-选择通道0上的施密特触发器-施密特触发器关*/ADC2_Init(ADC2_CONVERSIONMODE_CONTINUOUS,ADC2_CHANNEL_0,ADC2_PRESSEL_FCPU_D2,ADC2_EXTTRIG_TIM,DISABLE,ADC2_ALIGN_RIGHT,ADC2_SCHMITTTRIG_CHANNEL0,DISABLE);/*Infiniteloop*/while(1){//连续转换20次ADConvert();//数字滤波DigitalFiltering();i=200;while(i--)Display();}}voidADConvert(void){unsignedcharcount=0;//连续转换ADC2->CR1|=0x02;ADC2_StartConversion();while(count<20){//等待转换结束while(ADC2_GetFlagStatus()==RESET);//清除转换结束标志位ADC2_ClearFlag();ADCValue[count]=ADC2_GetConversionValue();count++;}//关闭连续转换ADC2->CR1&=~0X02;}voidDigitalFiltering(void){unsignedchari,j;unsignedinttemp;//对数组排序for(i=20;i>=1;i--){for(j=0;jADCValue[j+1]){temp=ADCValue[j];ADCValue[j]=ADCValue[j+1];ADCValue[j+1]=temp;}}}//舍弃最大和最小的两个数,然后求平均值voltageADC=0;for(i=2;iODR=shumaguan[displayArray[i]];GPIOE->ODR=~(0X01ODR=0XFF;}}voidDelay(unsignedintt){while(t--);}#ifdefUSE_FULL_ASSERT/***@briefReportsthenameofthesourcefileandthesourcelinenumber*wheretheassert_paramerrorhasoccurred.*@paramfile:pointertothesourcefilename*@paramline:assert_paramerrorlinesourcenumber*@retval:None*/voidassert_failed(u8*file,u32line){/*Usercanaddhisownimplementationtoreportthefilenameandlinenumber,ex:printf("Wrongparametersvalue:file%sonline%d\r\n",file,line)*//*Infiniteloop*/while(1){}}#endif/*******************(C)COPYRIGHT2011STMicroelectronics*****ENDOFFILE****/ 
不错  学习中!
0
回复
SKY丶辉煌
LV.10
26
2014-04-18 11:45
@yueyunno1
不错 学习中!
嘿嘿,跟老师你学习~
0
回复
yueyunno1
LV.9
27
2014-04-18 17:13
@SKY丶辉煌
嘿嘿,跟老师你学习~
不错希望楼主早点把细节更新出来我们都学学!
0
回复
yueyunno1
LV.9
28
2014-04-18 17:15
@SKY丶辉煌
干货更新,由于在黑龙江,大部分电子元器件,比较优质的MOSFET,DIODE没有卖的,所以只能在网上买了MOSFET和DIODE,由于顺丰也不给力了,两天还没到(有可能是商家没发货),所以这两天抽出空来解决一下单片机显示问题,由于普通51单片机内部没有ADC功能,所以本次设计采用了STM8单片机,是STM32的前身,STM8内部自带ADC,不用外接ADC模块,比如ADC0832.Stm8内部有16个转换通道,10位的采样精度,所以基于此优点,本次选择此芯片。把进步向大家发出来:现在完成一路的采样,电压采样:[图片]
设备不错嘛  用的都是福禄克万用表
0
回复
SKY丶辉煌
LV.10
29
2014-04-18 17:58
@yueyunno1
不错希望楼主早点把细节更新出来我们都学学!
大师你太低调了,嘿嘿
0
回复
SKY丶辉煌
LV.10
30
2014-04-18 17:58
@yueyunno1
设备不错嘛 用的都是福禄克万用表
让你发现了
0
回复
SKY丶辉煌
LV.10
31
2014-04-19 19:59
@SKY丶辉煌
精度还可以,有1mV的误差,可以允许的。下面把程序发出来让大家审核,有什么完善的地方我一定做到,希望大家给出宝贵意见。 /*********************************************************************************@fileProject/main.c*@authorMCDApplicationTeam*@versionV2.0.0*@date25-February-2011*@briefMainprogrambody*******************************************************************************@attention**THEPRESENTFIRMWAREWHICHISFORGUIDANCEONLYAIMSATPROVIDINGCUSTOMERS*WITHCODINGINFORMATIONREGARDINGTHEIRPRODUCTSINORDERFORTHEMTOSAVE*TIME.ASARESULT,STMICROELECTRONICSSHALLNOTBEHELDLIABLEFORANY*DIRECT,INDIRECTORCONSEQUENTIALDAMAGESWITHRESPECTTOANYCLAIMSARISING*FROMTHECONTENTOFSUCHFIRMWAREAND/ORTHEUSEMADEBYCUSTOMERSOFTHE*CODINGINFORMATIONCONTAINEDHEREININCONNECTIONWITHTHEIRPRODUCTS.**©COPYRIGHT2011STMicroelectronics*******************************************************************************//*Includes------------------------------------------------------------------*/#include"stm8s.h"/*Privatedefines-----------------------------------------------------------*/unsignedcharconstshumaguan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//ADCValue数组存放A/D采样值,voltageADC为数字滤波后的结果unsignedintADCValue[20]={0},voltageADC=0;//voltage为电压计算结果,单位mVunsignedintvoltage=0;/*Privatefunctionprototypes-----------------------------------------------*/voidADConvert(void);voidDigitalFiltering(void);voidDisplay(void);voidDelay(unsignedintt);/*Privatefunctions---------------------------------------------------------*/voidmain(void){unsignedchari;//PG口数码管段选,PE口数码管位选GPIO_Init(GPIOG,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_HIGH_FAST);GPIO_Init(GPIOE,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_HIGH_FAST);/*ADC2配置为:-连续转换模式-通道0(PB0)-fADC=fmaster/2-触发模式为定时器-触发关-数据右对齐-选择通道0上的施密特触发器-施密特触发器关*/ADC2_Init(ADC2_CONVERSIONMODE_CONTINUOUS,ADC2_CHANNEL_0,ADC2_PRESSEL_FCPU_D2,ADC2_EXTTRIG_TIM,DISABLE,ADC2_ALIGN_RIGHT,ADC2_SCHMITTTRIG_CHANNEL0,DISABLE);/*Infiniteloop*/while(1){//连续转换20次ADConvert();//数字滤波DigitalFiltering();i=200;while(i--)Display();}}voidADConvert(void){unsignedcharcount=0;//连续转换ADC2->CR1|=0x02;ADC2_StartConversion();while(count<20){//等待转换结束while(ADC2_GetFlagStatus()==RESET);//清除转换结束标志位ADC2_ClearFlag();ADCValue[count]=ADC2_GetConversionValue();count++;}//关闭连续转换ADC2->CR1&=~0X02;}voidDigitalFiltering(void){unsignedchari,j;unsignedinttemp;//对数组排序for(i=20;i>=1;i--){for(j=0;jADCValue[j+1]){temp=ADCValue[j];ADCValue[j]=ADCValue[j+1];ADCValue[j+1]=temp;}}}//舍弃最大和最小的两个数,然后求平均值voltageADC=0;for(i=2;iODR=shumaguan[displayArray[i]];GPIOE->ODR=~(0X01ODR=0XFF;}}voidDelay(unsignedintt){while(t--);}#ifdefUSE_FULL_ASSERT/***@briefReportsthenameofthesourcefileandthesourcelinenumber*wheretheassert_paramerrorhasoccurred.*@paramfile:pointertothesourcefilename*@paramline:assert_paramerrorlinesourcenumber*@retval:None*/voidassert_failed(u8*file,u32line){/*Usercanaddhisownimplementationtoreportthefilenameandlinenumber,ex:printf("Wrongparametersvalue:file%sonline%d\r\n",file,line)*//*Infiniteloop*/while(1){}}#endif/*******************(C)COPYRIGHT2011STMicroelectronics*****ENDOFFILE****/ 
两路AD采样程序怎么写?求帮助,求指点
0
回复