性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

降壓DC/DC開關(guān)穩(wěn)壓電源的設(shè)計過程和感想

計一對降壓型直流開關(guān)穩(wěn)壓電源,額定輸入直流電壓36v ,額定輸出直流電壓10v的穩(wěn)壓電源。輸出電流最大3A,額定功率30W.要求具備穩(wěn)壓功能,輸出紋波電壓最大70mv,負(fù)載調(diào)整率<5%,電壓調(diào)整率<0.7%。有過流保護(hù)功能并且動作值3.2A左右??梢圆⒙?lián)運(yùn)行倆個穩(wěn)壓電源。

這次我和大家分享的是降壓DC/DC開關(guān)穩(wěn)壓電源的設(shè)計,這次資料全部開源,對,是全部開源。我會陸續(xù)更新把電路PCB、主要原理以及程序等全部開源。還有需要PCB的小伙伴,可以在評論區(qū)回復(fù)郵箱,我看到就會發(fā)送的。

先上主要的系統(tǒng)圖片:

開始步入主題啦,一開始用TL494做的簡易主控電路,方便雖然方便但是后期測試電路發(fā)現(xiàn)他在50Khz工作頻率時候芯片發(fā)燙嚴(yán)重,效率也跟不上最高也是75%,紋波和電壓調(diào)整率還可以,負(fù)載調(diào)整率下跌。

而TL494是一種固定頻率脈寬調(diào)制電路,它包含了開關(guān)電源控制所需的全部功能,廣泛應(yīng)用于單端正激雙管式、半橋式、全橋式開關(guān)電源,振蕩頻率可以通過外部的一個電阻和一個電容進(jìn)行調(diào)節(jié)。輸出電容的脈沖其實(shí)是通過電容上的正極性鋸齒波電壓與另外2個控制信號進(jìn)行比較來實(shí)現(xiàn)。功率輸出管Q1和Q2受控于或非門。當(dāng)雙穩(wěn)觸壓器的 時鐘信號為低電平時才會被通過,即只有在鋸齒波電壓大于控制信號期間才會被選通。當(dāng)控制信號增大,輸出脈沖的寬度將減小。

控制信號由集成電路外部輸入,一路送至?xí)r間死區(qū)時間比較器,一路送往誤差放大器的輸入端。死區(qū)時間比較器具有120mV的輸入補(bǔ)償電壓,它限制了最小輸出死區(qū)時間約等于鋸齒波的周期4%,當(dāng)輸出端接地,最大輸出占空比為96%,而輸出端接參考電平時,占空比為48%。當(dāng)把死區(qū)時間控制輸入端接上固定的電壓,即能在輸出脈沖上產(chǎn)生附加的死區(qū)時間。

脈沖寬度調(diào)制比較器為誤差放大器調(diào)節(jié)輸出脈寬提供了一個手段:當(dāng)反饋電壓從0.5V變化到3.5時,輸出的脈沖寬度從被死區(qū)確定的最大導(dǎo)通百分比時間中下降為零。2個誤差放大器具有從—0.3V到(vcc—2.0)的共模輸入范圍,這可能從電源的輸出電壓和電流察覺的到。誤差放大器的輸出端常處于高電平,它與脈沖寬度調(diào)智器的反相輸入端進(jìn)行“或”運(yùn)算,正是這種電路結(jié)構(gòu),放大器只需最小的輸出即可支配控制電路。

494外圍PCB電路如下:

這是系統(tǒng)全局的一張圖,純硬件電路打造。用起來有點(diǎn)不太靈活

現(xiàn)在的直流穩(wěn)壓電源大致有兩類,一類是線性直流穩(wěn)壓電源,另一類是開關(guān)直流穩(wěn)壓電源,又稱高頻直流穩(wěn)壓電源。因?yàn)殚_關(guān)直流穩(wěn)壓電源與一般的線性及可控硅電源相比體積更小,重量小,節(jié)能效果更好等顯著的特點(diǎn),愈來愈受到廣大用戶的酷愛。

TL494也是大多DIY愛好者和初學(xué)者喜歡的一款可以說是萬能的芯片了,第一款產(chǎn)品在不懈努力之下終于完成了,只能說算是中規(guī)中矩把任務(wù)都完成了,顯然沒有達(dá)到預(yù)想的完美效果.整流之后輸出的直流電壓,雖然是直流電,但其中含有一部分的交流成分,所以還需要經(jīng)過濾波電路,將多余的交流部分過濾,得到成分較少的直流電。電感濾波適用于低電壓場合,Π型LC濾波電路由于電阻的存在,電源功率會有所損耗,降低功率,所以濾波電路選用電容濾波電路。整流電路通過電容濾波電路,相比前兩者濾波電路,其輸出電路更光滑,電壓的平均值也有所增加。

電容濾波電路如圖:

這個BUCK電路圖紙是

在萬用板搭建的基礎(chǔ)上又進(jìn)行了電路的pcb繪制,并打出來第一塊板子

這是用運(yùn)放做的負(fù)載識別功能電路,恒壓輸出與負(fù)載識別功能的切換即恒壓和恒流模式的切換,可以采用數(shù)控方法和OP07雙運(yùn)放放大電路。

通過兩個OP07組成雙運(yùn)放電路,第一個OP07運(yùn)放通過調(diào)整電壓放大倍數(shù)讓負(fù)載阻值以輸出電壓形式體現(xiàn),第二個OP07運(yùn)放調(diào)整輸出電壓方向,再將電壓反饋至TL494的2腳,從而實(shí)現(xiàn)負(fù)載識別功能。該方案具有很好的穩(wěn)定性,并且硬件電路不復(fù)雜。為了實(shí)現(xiàn)切換功能,我們選擇按鍵開關(guān)進(jìn)行手動切換,簡單實(shí)用。通過比較,我們選擇此方案。如圖所示。

電阻分壓檢測電路。經(jīng)過在輸出回路中串連采樣電阻,將經(jīng)過電阻的電流轉(zhuǎn)換成兩端的電壓,經(jīng)過檢測電壓值從而獲得電流值。

使用電阻采樣法,電阻與電位器串聯(lián),獲得中間電壓返回給單片機(jī),實(shí)現(xiàn)采集電壓的電流轉(zhuǎn)換成兩端的電壓,經(jīng)過檢測電壓值從而獲得電流值。

       過流保護(hù)采用TL494內(nèi)部實(shí)現(xiàn)過流保護(hù)需要在電路中加采樣電阻。利用采樣電阻的分壓進(jìn)入芯片內(nèi)部,實(shí)現(xiàn)過流保護(hù)。同時該芯片有多種過流保護(hù)模式,該方案電路非常簡單,但是在3.2A情況下,要實(shí)現(xiàn)過流保護(hù),需要加大采樣電阻,這會降低整個系統(tǒng)的效率?;蛘呖梢圆捎眠\(yùn)放放大電壓在進(jìn)行控制。

這對運(yùn)放線性要求較高。采樣電路如圖:

驅(qū)動電路由IR2104半橋驅(qū)動芯片驅(qū)動BUCK型同步整流電路實(shí)現(xiàn)系統(tǒng)降壓的操作,該芯片采用被動式泵荷升壓原理。上電時,電源流過快恢復(fù)二極管D向電容C充電,C上的端電壓很快升至接近Vcc,這時如果下管導(dǎo)通,C負(fù)級被拉低,形成充電回路,會很快充電至接近Vcc,當(dāng)PWM波形翻轉(zhuǎn)時,芯片輸出反向電平,下管截止,上管導(dǎo)通,C負(fù)極電位被抬高到接近電源電壓,水漲船高,C正極電位這時已超過Vcc電源電壓。因有D的存在,該電壓不會向電源倒流,C此時開始向芯片內(nèi)部的高壓側(cè)懸浮驅(qū)動電路供電,C上的端電壓被充至高于電源高壓的Vcc,只要上下管一直輪流導(dǎo)通和截止,C就會不斷向高壓側(cè)懸浮驅(qū)動電路供電,使上管打開的時候,高壓側(cè)懸浮驅(qū)動電路電壓一直大于上管的S極。采用該芯片降低了整體電路的設(shè)計難道,只要電容C選擇恰當(dāng),該電路運(yùn)行穩(wěn)定。

BUCK型同步整流電路如下:

之前測試在輸出端采用Π型濾波大大降低了紋波,但是由于濾波使得公共端地的不穩(wěn)定造成電路有時的故障不能工作一開始以為是基準(zhǔn)電壓的浮動就用另一片494的基準(zhǔn)作為控制端2腳的基準(zhǔn)電壓。濾波電路帶來的損耗也比較大,而該電路只能實(shí)現(xiàn)對系統(tǒng)穩(wěn)壓降壓以及帶載功能過流和負(fù)載識別尚沒使用。在經(jīng)過一系列調(diào)試測試參數(shù),發(fā)現(xiàn)利用494做的純硬件的穩(wěn)壓電源可以實(shí)現(xiàn)過流保護(hù)功能、負(fù)載識別功能。并且再通過濾波電路的調(diào)整會得到一個滿足的紋波值。但是這種電路效率最高只能達(dá)到75%,離要求還有很多距離而且負(fù)載調(diào)整率嚴(yán)重不行,重量也嚴(yán)重超標(biāo),因此決定換用覆銅板,利用頻率和電路PCB布局走線來降低紋波。

在用TL494主控調(diào)試中發(fā)現(xiàn),494雖然設(shè)計利用起來簡便,但在需要高頻環(huán)境下以及高效率低紋波都滿足不了設(shè)計要求。而且負(fù)載調(diào)整的采樣電阻分壓補(bǔ)償,硬件做起來難度大精度不高,過流精度也稍微低一點(diǎn)。因此對電路主控進(jìn)行重新選擇,用stc12單片機(jī)作為系統(tǒng)主控通過軟件實(shí)現(xiàn)過流精度以及負(fù)載調(diào)整的采樣電阻分壓補(bǔ)償,stc12單片機(jī)可以提供50khz的工作頻率進(jìn)一步降低紋波電壓。第一代覆銅板產(chǎn)品乍一看又丑又大,主要是自己對ADPCB繪制的不熟悉造成的,但是電路實(shí)用而且紋波降低的效果明顯。

測試調(diào)試數(shù)控穩(wěn)壓電源時的寫照

經(jīng)過一系列調(diào)整這是二代PCB電路,在原有基礎(chǔ)上對電路的主控布置進(jìn)行了大范圍調(diào)整

測試PWM輸出如下:

在二代基礎(chǔ)上把控制電路移到了中間在四周通過主回路。更一步集成

當(dāng)時做的雙層板,下層主回路上層控制回路,為了增加濾波的效果延長了輸出回路并通過差分走線進(jìn)一步改善濾波效果。

最終的成品電路如下:

對系統(tǒng)進(jìn)行全面的調(diào)試后,進(jìn)行了對系統(tǒng)參數(shù)的測量,此次的系統(tǒng)全部符合題目要求

電壓調(diào)整0.1%

負(fù)載調(diào)整1.1%

效率95%

紋波10%

對系統(tǒng)進(jìn)行并聯(lián)測試未發(fā)現(xiàn)有環(huán)流

測試結(jié)果分析如下:

根據(jù)上述測試數(shù)據(jù),由此可以得出結(jié)論:

(1) 額定輸出電壓下,輸出電壓偏差為:5.5mV,遠(yuǎn)小于100mV。說明電路的輸出準(zhǔn)確。

(2) 額定輸入電壓下,已測最大輸出電流為3.102A,大于3A。說明電路能承受大電流。

(3) 輸出噪聲紋波電壓峰峰值為20.5mV,小于50mV。滿足題目要求。

(4) 負(fù)載調(diào)整率為1.02%,小于5%;以及電壓調(diào)整率為0.01%,小于0.5%。說明整個電路穩(wěn)定性好,不易受到外部的干擾。

(5) 滿載時效率為90.4%。說明該電路效率極高。

(6) 具備3.2A過流保護(hù)。

(7) 整體重量為0.17kg說明該電路具有小體積小重量的優(yōu)勢。

附部分源程序:

#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;

sbit LED3 = P1^7;

sbit LED4 = P3^4;

sbit key1 = P0^0;   //ok

sbit key2 = P2^0;    //+

sfr P_SW1 = 0xA2; //外設(shè)功能切換寄存器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); /

**********************************************************

函數(shù)說明: 延時程序

**********************************************************/

void delay(uchar t)

{

uint j;

uchar i;

for(i=0;

i<t;

i++) for(j=0;

j<1000;

j++);

}

/**********************************************************

函數(shù)說明: pca計數(shù)器初始化函數(shù)

**********************************************************/

void init_pca(void)

{

CMOD=0x08;//計數(shù)器0的溢出為PCA計數(shù)器的時鐘源,允許pca中斷使能,PDF資料上錯誤

CCON=0x00;

CCAPM0=0x42;//8位PWM輸出,無中斷

CCAPM1=0x42;//8位PWM輸出,無中斷

CL=0x00;//清零pca計數(shù)器

CH=0x00;

CCAP0L=0; //初始化spwm輸出的占空比

CCAP0H=0;

CCAP1L=0; //初始化spwm輸出的占空比

CCAP1H=0; CR=1;//運(yùn)行pca計數(shù)器

}

/**********************************************************

函數(shù)說明: 讀ADC數(shù)值

**********************************************************/

uchar GetADC(uchar ch)

{

uint laji;

uint result=0;

ADC_CONTR=0x88|ch; //選擇通道 開始AD轉(zhuǎn)換

_nop_();

_nop_();

_nop_();

_nop_();

while(!ADC_FLAG); //查詢ADC_FLOG是否置位1 轉(zhuǎn)換結(jié)束

~ADC_FLAG; //Clear ADC interrupt flag//1111 0111 結(jié)束AD轉(zhuǎn)換

laji=ADC_RESL;

result=ADC_RES;

return(result);

}

/**********************************************************

函數(shù)說明: ADC查詢法 始化函數(shù)

**********************************************************/

void InitADC()

{

uchar a;

P1M1=0x07;

P1M0=0x00;

P1ASF=0X07;

//相應(yīng)端口當(dāng)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--);

}

/**********************************************************

函數(shù)說明: 過流保護(hù)開啟按鍵

**********************************************************/

void Key_1_()

{

if(key1==0)

{

delay(100);

if(key1==0)

 {

SD1 = 1;

LED4 = 1;

delay(200);

LED4 = 0;

}

delay(100);

}

}

/**********************************************************

函數(shù)說明: 模式選擇按鍵

**********************************************************/

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);

}

}

/**********************************************************

函數(shù)說明: 調(diào)整電壓

**********************************************************/

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;

}

}

/**********************************************************

函數(shù)說明: 過流保護(hù)

**********************************************************/

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;

}

}

/**********************************************************

函數(shù)說明: 負(fù)載識別

**********************************************************/

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; }

}

/**********************************************************

函數(shù)說明: 主函數(shù)

**********************************************************/

void main(void)

{ LED1 = LED2 =LED3 =LED4 =0;

delay(255);delay(255);delay(255);

InitADC();

init_pca();

init_timer();

EA=1;//開總中斷

while(1)//主循環(huán)

{

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;

}

}

}

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯的朋友,別忘了一鍵三連哦!
贊 1
收藏 9
關(guān)注 7
成為作者 賺取收益
全部留言
0/200
  • ?゛Yuvin_Shan。 2022-03-17 20:32
    老師發(fā)給我18626134488@163.com
    回復(fù)
  • 陽光帝國 2020-10-29 09:51
    大開眼界,真是好文
    回復(fù)
  • 好學(xué)2019 2020-10-10 19:32
    學(xué)習(xí)學(xué)習(xí)1240516555@qq.com
    回復(fù)