開(kāi)關(guān)電源顧名思義,開(kāi)關(guān)電源便是使用半導(dǎo)體開(kāi)關(guān)器件(如晶體管、場(chǎng)效應(yīng)管、可控硅閘流管等),經(jīng)過(guò)控制電路,使半導(dǎo)體開(kāi)關(guān)器件不停地“導(dǎo)通”和“關(guān)閉”,讓半導(dǎo)體開(kāi)關(guān)器件對(duì)輸入的電壓進(jìn)行脈沖調(diào)制,從而完成直流到交流、直流到直流電壓變換,和輸出電壓可調(diào)和自動(dòng)穩(wěn)壓。
開(kāi)關(guān)電源一般有三種工作模式:頻率、脈沖寬度固定模式,頻率固定、脈沖寬度可變模式,頻率、脈沖寬度可變模式。前一種工作模式多用于直流交流逆變電源,或直流/直流電壓變換;后面兩種工作模式一般用在開(kāi)關(guān)穩(wěn)壓電源。另外,開(kāi)關(guān)電源輸出電壓也有三種工作式樣:直接輸出電壓的方式、平均值輸出電壓的方式、幅值輸出電壓的方式。同樣的,前一種工作方式經(jīng)常用在直流/交流逆變電源,或直流/直流電壓變換;后兩種工作模式經(jīng)常用于開(kāi)關(guān)穩(wěn)壓電源[1]。
近半個(gè)世紀(jì)以來(lái),國(guó)內(nèi)外學(xué)者對(duì)開(kāi)關(guān)電源進(jìn)行了很多的研究,取得了很多的成果。
上個(gè)世紀(jì)的50年代初,美國(guó)宇航局為了搭載火箭,開(kāi)關(guān)電源誕生了,這便是開(kāi)關(guān)電源誕生的起源,此開(kāi)關(guān)電源以小型化、輕巧化為目標(biāo)。在歷史進(jìn)程中進(jìn)行了近半個(gè)多世紀(jì)后,開(kāi)關(guān)電源技術(shù)越來(lái)越成熟,更因具備了性能穩(wěn)定、小、發(fā)熱較低、輕、轉(zhuǎn)換效率高等優(yōu)點(diǎn)慢慢的在取代了傳統(tǒng)電源技術(shù)下所制造的不間斷工作電源,并在電子設(shè)備等各領(lǐng)域有了廣泛的應(yīng)用。最終在80年代,率先完成了大部分電子產(chǎn)品的電源換代,同時(shí)也完成了全面開(kāi)關(guān)電源普及化。在到來(lái)的20世紀(jì)90年代,開(kāi)關(guān)電源更是進(jìn)入了快速發(fā)展的黃金時(shí)間,家電、電子設(shè)備都得到更廣泛的應(yīng)用。又經(jīng)歷了幾十年的努力下,現(xiàn)在的開(kāi)關(guān)電源技術(shù)都有了技術(shù)性的重大突破與發(fā)展。更多新技術(shù)的發(fā)現(xiàn)與開(kāi)發(fā)將當(dāng)代開(kāi)關(guān)電源又帶上了另一個(gè)全新的時(shí)期,在高新技術(shù)領(lǐng)域的應(yīng)用更是推動(dòng)了高新技術(shù)產(chǎn)品的發(fā)展,其中以其小型化、簡(jiǎn)便化的特征尤為突出。
伴跟著開(kāi)關(guān)電源的誕生,1960年代初期,我國(guó)開(kāi)始對(duì)開(kāi)關(guān)穩(wěn)壓電源進(jìn)行的設(shè)計(jì),研制并加以生產(chǎn)。直到60年代中期才開(kāi)始慢慢地進(jìn)入了實(shí)用的階段。在對(duì)開(kāi)關(guān)電源有了一定認(rèn)識(shí)后,我國(guó)在70年代初期便試著開(kāi)始對(duì)無(wú)工頻降壓變換器進(jìn)行深入研究應(yīng)用在開(kāi)關(guān)穩(wěn)壓電源上,繼而對(duì)其進(jìn)行設(shè)計(jì)、研制和生產(chǎn)。最終在1974年,我國(guó)第一臺(tái)工頻降壓變壓器式的開(kāi)關(guān)電源被研發(fā)出來(lái)了,輸出電流是5v,工作頻率是10KHz。跟著我國(guó)開(kāi)關(guān)電源的向前發(fā)展,我國(guó)許多研究所、工廠(chǎng)等在近十年發(fā)展中也紛紛研制出來(lái)了無(wú)工頻降壓變換器的開(kāi)關(guān)穩(wěn)壓電源,這種開(kāi)關(guān)電源的工作頻率大概在20K左右,輸出的功率在1000W以下,但是其型號(hào)與用途眾多,都投入電子設(shè)備、電視機(jī)、通信等領(lǐng)域進(jìn)行廣泛的使用。跟著時(shí)期的發(fā)展,因?yàn)槲覈?guó)半導(dǎo)體與工藝跟不上時(shí)期的潮流,導(dǎo)致了自己生產(chǎn)與研制的開(kāi)關(guān)穩(wěn)壓電源的關(guān)鍵元器件大部分仍要經(jīng)過(guò)國(guó)外進(jìn)口,導(dǎo)致當(dāng)代開(kāi)關(guān)電源技術(shù)與一些先進(jìn)國(guó)家相比仍存有巨大的差距。
為了設(shè)計(jì)一種更加智能化的開(kāi)關(guān)電源,必須進(jìn)行更深入的開(kāi)關(guān)電源機(jī)理研究,下文字闡述了具體的研究?jī)?nèi)容以及研究方法。
設(shè)計(jì)出一種基于STC系列51單片機(jī)的BUCK型直流降壓開(kāi)關(guān)電源是本課題所要研究的主要內(nèi)容。本系統(tǒng)需要達(dá)到的預(yù)期目標(biāo)是:在系統(tǒng)完成后,系統(tǒng)能預(yù)置電壓,其步進(jìn)的電壓為1V,輸出的電壓的限度為0V~10V,輸出電流為0~1A。同時(shí)液晶顯示屏上可以顯示出所預(yù)置的電壓,另有實(shí)時(shí)的輸入輸出電壓,實(shí)時(shí)的電流,來(lái)使得本系統(tǒng)可以讓調(diào)整速度加快、提升精準(zhǔn)度,同時(shí)也能使得電壓和負(fù)載的調(diào)整率降低,提升系統(tǒng)的效率,不在附加額外的電源板,最后還可以讓輸出的紋波變小等。
3. 系統(tǒng)的硬件設(shè)計(jì),包括輸出電路,直流斬波電路,PWM發(fā)生電路,顯示電路設(shè)計(jì)等。
4. 系統(tǒng)的軟件設(shè)計(jì),對(duì)應(yīng)用的編程軟件進(jìn)行流程圖講解,對(duì)所用方式進(jìn)行概述所。
5. 系統(tǒng)調(diào)試與測(cè)試,對(duì)做好的機(jī)開(kāi)關(guān)電源進(jìn)行調(diào)試與數(shù)據(jù)測(cè)試并對(duì)結(jié)果進(jìn)行分析。
直流/直流變換是將固有的直流電壓轉(zhuǎn)換成可調(diào)整的電壓,又叫做直流斬波。它有多種拓?fù)浣Y(jié)構(gòu),本系統(tǒng)應(yīng)用的是BUCK(降壓式變換電路)型直流/直流,其特征是輸出的電壓比輸出電壓低。如圖2-1所示。
圖2-1 BUCK電路拓?fù)?/div>
2.2 Buck工作原理當(dāng)Mos管或者三級(jí)管導(dǎo)通很長(zhǎng)很長(zhǎng)時(shí)間后,所有的元器件均處在一種理想狀態(tài)的情況下,此時(shí)電容的電壓會(huì)等于輸入的電壓。在這樣的條件下,我們使用BUCK變換器的充電和放電這兩個(gè)階段來(lái)對(duì)這個(gè)電路進(jìn)行說(shuō)明:
2.2.1在電感充電的情況下當(dāng)BUCK變壓器處于充電的過(guò)程時(shí),將開(kāi)關(guān)閉合,此時(shí)三級(jí)管處于導(dǎo)通的狀態(tài),可以用一條導(dǎo)線(xiàn)來(lái)替代,替代后的等效圖如下。當(dāng)輸入的電壓經(jīng)過(guò)電感這時(shí)刻,二級(jí)管因?yàn)榉唇樱詻](méi)起到作用,這里刪去。再加上輸入的是直流,因此電感發(fā)生的電感電流是成比率上升的,具體上升多少與電感的大小有關(guān)系,電感相當(dāng)于一個(gè)恒定電流源,起傳遞能量作用,電容等于恒定電壓源,在電路里起到濾波的作用。BUCK變換器充電階段等效圖如圖2-2所示。
圖2-2 BUCK變換器充電階段等效圖
2.2.2在電感放電的情況下當(dāng)BUCK變壓器處于放電的過(guò)程中,開(kāi)關(guān)管子已經(jīng)斷開(kāi),此時(shí)的三級(jí)管處于截止?fàn)顟B(tài),這里把它拿掉,等效電路圖如下。在開(kāi)關(guān)斷開(kāi)的時(shí)間里,因?yàn)殡姼械谋3蛛娏鞑蛔兲卣鳎姼猩系碾姼须娏鞑粫?huì)一下子下降到零,而是把充電完成后所累積的電流值慢慢下降到0。在這個(gè)過(guò)程中,因?yàn)樵瓉?lái)的電路已經(jīng)斷開(kāi)了,因此電感沿著之前的方向,經(jīng)過(guò)二極管D形成一個(gè)新的回路的,即流過(guò)電容對(duì)電容進(jìn)行充電,從而保證了負(fù)載端獲得連續(xù)的不間斷的電流。BUCK變換器放電階段等效圖如圖2-3所示。
圖2-3 BUCK變換器放電階段等效圖
綜上所述,BUCK變換器的升壓過(guò)程便是電感能量?jī)?chǔ)存和釋放的過(guò)程。在充電的過(guò)程時(shí)。電感通過(guò)流過(guò)它自身的電流不斷儲(chǔ)存能量,在放電的過(guò)程時(shí),假如電容容量足夠大,那電容的兩端就可以在放電的過(guò)程中保持一個(gè)持續(xù)不間斷的電流放電,假如這個(gè)通斷的過(guò)程不斷的被重復(fù),那么就可以夠讓電容兩端的電壓低輸出的電壓,從而完成降壓的目的。
2.3 Buck波形分析波形如下所示。

導(dǎo)通時(shí)Q電流

閉合時(shí)C電流
L的電流和輸出電流的關(guān)系:
輸出電壓與輸入電壓的關(guān)系

:
2.4 Buck穩(wěn)壓分析本設(shè)計(jì)采用串連型開(kāi)關(guān)電源,其穩(wěn)壓原理框圖如圖2-4所示。在MOS管導(dǎo)通的時(shí)刻,電感L將流過(guò)的電流轉(zhuǎn)換成磁能進(jìn)行能量?jī)?chǔ)存,電容C將流過(guò)電感L的部分電流轉(zhuǎn)換成電荷儲(chǔ)存。在MOS管關(guān)斷的時(shí)刻,電感L發(fā)生反向電動(dòng)勢(shì),輸送給負(fù)載R并與續(xù)流二極管D組成回路,同時(shí)電容C將電荷轉(zhuǎn)換成電流向負(fù)載供電。
經(jīng)過(guò)不斷導(dǎo)通與關(guān)斷MOS管,使uo發(fā)生脈動(dòng)電壓,經(jīng)過(guò)LC濾波電路使脈動(dòng)電壓轉(zhuǎn)變成較穩(wěn)定的直流電壓Uo輸送給負(fù)載,輸出電壓Uo的電壓值與MOS管在一個(gè)周期內(nèi)導(dǎo)通的時(shí)間成正比。當(dāng)外部因素使輸出電壓或電流發(fā)生變化時(shí),經(jīng)過(guò)單片機(jī)自帶的10位ADC實(shí)時(shí)采集輸出的電壓和電流,實(shí)時(shí)調(diào)整開(kāi)關(guān)K導(dǎo)通的占空比,從而組成閉環(huán)電壓控制電路,使輸出電壓能達(dá)到穩(wěn)定。
圖2-4開(kāi)關(guān)電源模塊穩(wěn)壓原理
2.4.1 LC濾波電路參數(shù)推導(dǎo)采用輸入電壓25V,輸出電壓最大為10V,根據(jù)推導(dǎo)公式如式(2-1)所示:此中Ton為PWM一個(gè)周期內(nèi)導(dǎo)通時(shí)間、Ui為輸入電壓、Uo為輸出電壓、Ud為肖特基二極管的電壓降(約等于0.6V)、Io為一個(gè)直流/直流模塊的輸出電流。

(2-1)
PWM的占空比為D:

(2-2)
代入數(shù)據(jù)后得到

(2-3)
一般而言,開(kāi)關(guān)電源的頻率越高,電感的感量可以越小,效率也可以越高。此單片機(jī)能輸出的PWM最高頻率為47KHZ,所以本設(shè)計(jì)選擇讓單片機(jī)輸出47KHZ的PWM。那么f=47Khz導(dǎo)通時(shí)間Ton為

(2-4)
電感量L為:

(2-5)
因此將各參數(shù)代入式(2-5)得式(2-6):

(2-6)
計(jì)算得到32uH電感,這里采用5倍以上余量,采用150uH的電感,可降低電感溫度。另外本設(shè)計(jì)采用銅線(xiàn)和磁芯做成的電感以增大電感的儲(chǔ)能能量提升供電的效率。
按照串連型開(kāi)關(guān)電源的電容推導(dǎo)公式如式(2-7)所示,此中C為電容容量、Io為一個(gè)模塊個(gè)輸出電壓、△Up-p為輸出紋波電壓,T為PWM一個(gè)周期的時(shí)間。

(2-7)
輸出電壓最大為10V,我們?cè)O(shè)定紋波電壓為0.1V,將各參數(shù)代入式(2-7)得式(2-8)結(jié)果:

(2-8)
本設(shè)計(jì)采用2個(gè)1000

的電容,達(dá)到降低紋波電壓的目的。
2.5小結(jié)綜合以上的分析論證,本單片機(jī)的開(kāi)關(guān)電源設(shè)計(jì)采用BCUK拓?fù)洌?jīng)過(guò)原理分析和認(rèn)證,最終推導(dǎo)選擇了合適的電容和電感。
3硬件設(shè)計(jì)
3.1總統(tǒng)框架基于單片機(jī)的開(kāi)關(guān)電源設(shè)計(jì),由STC單片機(jī)、變壓器,整流濾波電路,BUCK主回路、降壓穩(wěn)壓電路、按鍵電路、液晶電路、電壓檢測(cè)電路、電流檢測(cè)電路等組成。總體設(shè)計(jì)框圖如3-1圖所示。下面分別論證這些方面的詳細(xì)方案選擇。
圖3-1總體設(shè)計(jì)構(gòu)架圖
3.2各部分電路的選擇
3.2.1 單片機(jī)STC12C5A60S2單片機(jī),在指令代碼的方面可以完全兼容傳統(tǒng)8051,同時(shí)它的速度比傳統(tǒng)的8051單片機(jī)要快8-12倍,體現(xiàn)了其高速度的一面。這系列單片機(jī)其里面有專(zhuān)用的集成復(fù)位電路,另有8路高速的10位ADC轉(zhuǎn)換,同時(shí)還兼有2路的PWM等,它的功能之強(qiáng)大遠(yuǎn)超傳統(tǒng)的8051系列。
圖3-2 STC12C5A60S2單片機(jī)實(shí)物圖
3.2.2 IR2104半橋驅(qū)動(dòng)電路
IR2104是一種高性能的半橋驅(qū)動(dòng)芯片,該芯片內(nèi)部是采用被動(dòng)式泵荷升壓原理。上電時(shí),電源流過(guò)快恢復(fù)二極管D向電容C充電,C上的端電壓很快升至接近Vcc,這時(shí)假如下管導(dǎo)通,C負(fù)級(jí)被拉低,形成充電回路,會(huì)很快充電至接近Vcc,當(dāng)PWM波形翻轉(zhuǎn)時(shí),芯片輸出反向電平,下管截止,上管導(dǎo)通,C負(fù)極電位被抬高到接近電源電壓,水漲船高,C正極電位這時(shí)已超過(guò)Vcc電源電壓。因有D的存在,該電壓不會(huì)向電源倒流,C此時(shí)開(kāi)始向芯片里面的高壓側(cè)懸浮驅(qū)動(dòng)電路供電,C上的端電壓被充至高于電源高壓的Vcc,只要上下管一直輪流導(dǎo)通和截止,C就會(huì)不斷向高壓側(cè)懸浮驅(qū)動(dòng)電路供電,使上管打開(kāi)的時(shí)刻,高壓側(cè)懸浮驅(qū)動(dòng)電路電壓一直大于上管的S極。采用該芯片降低了整體電路的設(shè)計(jì)難道,只要電容C選擇恰當(dāng),該電路運(yùn)行穩(wěn)定。IR2104應(yīng)用電路圖如3-3所示。
圖3-3 IR2104應(yīng)用電路圖
3.2.3 電路供電電源的選擇線(xiàn)性降壓芯片7805。這個(gè)穩(wěn)壓IC需要的外圍元件很少,IC內(nèi)部還有過(guò)流、過(guò)熱及調(diào)整管的保護(hù)措施,不但價(jià)廉且輸出電壓很穩(wěn)定。78系列的穩(wěn)壓集成塊要考慮輸出與輸入壓差帶來(lái)的功率損耗,所以一般輸入輸出之間壓差要大于2V。其應(yīng)用電路圖如圖3-4所示。

圖3-4 7805應(yīng)用電路
3.2.4 電流檢測(cè)電路方案一:霍爾電流傳感器。電流流過(guò)霍爾傳感器的線(xiàn)圈發(fā)生磁場(chǎng),磁場(chǎng)隨電流的大小變化而變化,磁場(chǎng)匯集在磁環(huán)內(nèi),霍爾元件輸出跟著磁場(chǎng)變化的電壓信號(hào)。經(jīng)過(guò)檢測(cè)電壓值,能得到電流的大小。
方案二:電阻分壓檢測(cè)電路。經(jīng)過(guò)在輸出回路中串連采樣電阻,將經(jīng)過(guò)電阻的電流轉(zhuǎn)換成兩端的電壓,經(jīng)過(guò)檢測(cè)電壓值從而獲得電流值。該檢測(cè)方式電路和程序控制都比較簡(jiǎn)潔。
要完成對(duì)輸出電壓和電流的閉環(huán)控制,務(wù)必對(duì)輸出電流和電壓進(jìn)行采樣反饋。本設(shè)計(jì)采用如下圖所示的電流電壓檢測(cè)電路。為了便于MCU采集,分壓電阻發(fā)生的電壓經(jīng)過(guò)由LM358組成的同相比例放大器放大后,輸入到MCU的ADC端口。
LM358內(nèi)部集成的是雙運(yùn)放,單電源和雙電源都能使其工作。
圖3-5 Lm358引腳圖及引腳功能
要完成對(duì)輸出電壓和電流的閉環(huán)控制,務(wù)必對(duì)輸出電流經(jīng)過(guò)運(yùn)放放大后進(jìn)行采樣反饋。本設(shè)計(jì)采用如圖3-6所示的電流檢測(cè)電路。
圖3-6 電流檢測(cè)電路
輸出最大電流為2A。本設(shè)計(jì)采用電阻分壓的式樣對(duì)輸出的電壓進(jìn)行實(shí)時(shí)檢測(cè),因?yàn)椴蓸与妷褐苯虞斔徒o單片機(jī)10位ADC進(jìn)行檢測(cè),單片機(jī)供電電源為5V,所以其內(nèi)部自帶的檢測(cè)的最高電壓也為5V, 這個(gè)電路中,LM358由5V電壓供電,最大輸出電壓和供電電源電壓之前有1.2V壓差,所以能輸出最大電壓為:

(3-1)
2A電流經(jīng)過(guò)0.02Ω電阻得到的電壓為

(3-2)
該電壓要經(jīng)過(guò)放大后才能更容易被單片機(jī)檢測(cè)到,在這個(gè)應(yīng)用中運(yùn)放的放大倍數(shù)應(yīng)該小于

(3-3)
這里選擇R12和R10為33K和1K,放大倍數(shù)為

(3-4)
因?yàn)?img id="aimg_MSCs2" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" width="16" height="20" src="http://c.51hei.com/a/huq/a/a/b/252/252.032.jpg" border="0" alt="" />>

, 符合設(shè)計(jì)要求。
即當(dāng)電流為2A時(shí),運(yùn)放輸出電壓為:

(3-5)
3.2.5 電壓檢測(cè)電路輸入電壓最大為10V,而單片機(jī)的采樣電壓最高位5V,故電壓采樣電阻比例應(yīng)該小于

(3-6)
這里取R1和R5是47K 和10K,

(3-7)
因?yàn)?img id="aimg_U2E32" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" width="20" height="18" src="http://c.51hei.com/a/huq/a/a/b/252/252.037.jpg" border="0" alt="" />1<

2,所以滿(mǎn)足條件。
當(dāng)10V輸出時(shí),單片機(jī)檢測(cè)到的電壓是,

(3-8)
電壓分壓檢測(cè)電路如圖3-7所示。
圖3-7 電壓檢測(cè)電路
3.2.6 按鍵電路目前單按鍵這種模式的鍵盤(pán)使用方便,響應(yīng)的快并且接口還簡(jiǎn)潔。綜合以上本系統(tǒng)采用的是非編碼式鍵盤(pán)。本系統(tǒng)設(shè)計(jì)應(yīng)用了3 個(gè)按鍵,按照軟件來(lái)定義它的功能,鍵盤(pán)與單片機(jī)的P2.3、P2.2、P2.1鍵盤(pán)是若干按鍵的集合,是向系統(tǒng)提供操作人員干預(yù)命令的接口設(shè)備。
S1為開(kāi)關(guān)按鍵,按一下即有輸出,按第二下即輸出停止,如此循環(huán)
S2為輸出電流增加。
S3為輸出電壓減少。
如圖3-8所示
圖3-8 按鍵電路
3.2.7 液晶顯示模塊系統(tǒng)采樣1602液晶顯示。液晶驅(qū)動(dòng)電流較小,能顯示較大信息量,無(wú)需增外設(shè)電路。
能顯示多行數(shù)據(jù),方便用戶(hù)進(jìn)行更多的操作。
能顯示輸入輸出的實(shí)時(shí)電壓,輸出的實(shí)時(shí)電流,預(yù)設(shè)的輸出電壓。如圖3-9所示

圖3-9 1602液晶顯示
3.3小結(jié)綜上所述,本開(kāi)關(guān)電源設(shè)計(jì)采用STC12C5A60S2單片機(jī)發(fā)生47KHZ的PWM脈沖信號(hào),經(jīng)過(guò)IR2104控制MOS,從而控制整個(gè)BUCK(降壓式變換)電路。單片機(jī)內(nèi)部自帶的10位ADC能通過(guò)電壓電流檢測(cè)電流實(shí)時(shí)反饋電流和電壓數(shù)值,并由此調(diào)整輸出的PWM的占空比,形成電流電壓閉環(huán)控制系統(tǒng)。按鍵能設(shè)置輸出電流從0.2A到2A,以0.01A遞增,輸出最大10V,液晶能顯示實(shí)時(shí)輸出電流與電壓。總體電路圖如3-10所示。

圖3-10 總體電路圖
4軟件設(shè)計(jì)51的語(yǔ)言主要有匯編和C兩種。匯編雖然運(yùn)行快,但是編程繁瑣,移植性差;C具備良好的可讀性和移植性。本系統(tǒng)采用C語(yǔ)言編寫(xiě)程序,Keil C51作為集成開(kāi)發(fā)環(huán)境。
4.1電壓電流雙閉環(huán)控制算法設(shè)計(jì) 由于題目要求輸出電壓在10V以?xún)?nèi),輸出電流應(yīng)該在0.2~2A以?xún)?nèi),所以應(yīng)該具有如下C-V曲線(xiàn)特性,在電流和電壓的雙閉環(huán)控制中。
使得輸出電流在2A范圍內(nèi),電壓在10V范圍內(nèi);
控制模式如下:
軟件設(shè)計(jì)包括:主程序設(shè)計(jì),按鍵子程序設(shè)計(jì),ADC中斷程序設(shè)計(jì)
4.2主程序程序設(shè)計(jì)主程序主要處理對(duì)時(shí)間要求不敏感的數(shù)據(jù),例如按鍵檢測(cè),和顯示電壓電流狀況,
此中顯示這些數(shù)據(jù)時(shí)刻采用數(shù)字平均濾波算法,采集50個(gè)數(shù)據(jù),繼而取平均值,使得到的數(shù)據(jù)更加接近真實(shí)狀況,使得顯示出來(lái)的電壓和電流不會(huì)亂跳,抗干擾能量得很大的提升。

4.3按鍵子程序設(shè)計(jì)按鍵子程序中,按加鍵的話(huà),增加輸出電壓預(yù)設(shè);按減鍵的話(huà),降低輸出電壓預(yù)設(shè);按開(kāi)關(guān)鍵的話(huà),能控制IR2104的工作與否,從而控制整個(gè)BUCK的工作與否。

4.4 ADC中斷程序ADC中斷程序中,因?yàn)橛休斎腚妷海敵鲭妷海敵鲭娏鬟@3個(gè)數(shù)據(jù)要監(jiān)測(cè),所以采用通道輪流詢(xún)問(wèn)的辦法完成。
于此同時(shí),要完成電流電壓檢測(cè)的雙閉環(huán)的話(huà),要在ADC程序中加入PWM處理程序,使得當(dāng)輸出負(fù)載變動(dòng),引起檢測(cè)到的輸出電壓ADC值變動(dòng),PWM需要實(shí)時(shí)響應(yīng)這個(gè)變化,所以在ADC程序中,要加入PWM的重裝數(shù)據(jù)的語(yǔ)句。
4.5 關(guān)鍵程序void ADC_interrupt()interrupt 5 //ADC轉(zhuǎn)換完后ADC_FLAG由硬件自動(dòng)置位,
{
uint ADC_value; //ADC轉(zhuǎn)換結(jié)果 10位
ADC_CONTR&=!ADC_FLAG; //clear ADCflag
ADC_value=(ADC_RES<<2)+ADC_RESL; // ADC_value=(ADC_RES<<2)+ADC_RESL;
switch(channel)
{
case 0: Battery_voltage=ADC_value;
channel=1;
break;
case 1: Boost_Buck_current=ADC_value;
if(!lock)
{
if((Boost_voltage<370)&&(Boost_Buck_current<(OUT_Current<<1))) //((Boost_voltage<Boost_temp)&&
{
PWM_temp--;
if(PWM_temp<10) PWM_temp=10;
}
else
{
PWM_temp++;
if(PWM_temp>250) PWM_temp=250;
}
CCAP1H = CCAP1L =PWM_temp;
}
channel=2;
break;
case 2:Boost_voltage=ADC_value;
channel=0;
break;
default:break;
}
ADC_CONTR=0xE8|channel;
ADC_ready=1;
}
STC12C5A60S2單片機(jī)內(nèi)部自帶的10位ADC能通過(guò)電壓電流檢測(cè)電流實(shí)時(shí)反饋電流和電壓數(shù)值,并由此調(diào)整輸出的PWM的占空比,形成電流電壓雙閉環(huán)控制系統(tǒng)。按鍵能設(shè)置輸出電流從0.2A到2A,以0.01A遞增,輸出最大10V,液晶能顯示實(shí)時(shí)輸出電流與電壓。
5系統(tǒng)測(cè)試5.1實(shí)物圖片實(shí)物由萬(wàn)用板手工焊接,板子的正面(a)和背面(b)如圖5-1所示。
(a)板子正面 (b)板子背面
圖5-1 總體電路圖
5.2電壓調(diào)整率測(cè)試電壓調(diào)整率,來(lái)源于電源在滿(mǎn)載時(shí),其輸出電壓因該電源的供電電壓波動(dòng)引起的變化,是穩(wěn)壓性能優(yōu)劣的重要指標(biāo)。
5.2.1 測(cè)試儀器需要測(cè)試電源的電壓調(diào)整率,需要直流可調(diào)壓供電電源,要萬(wàn)用表和負(fù)載。
可調(diào)壓電源:本實(shí)驗(yàn)采用兆信30/5A數(shù)顯線(xiàn)性電源。如圖5-1所示。
萬(wàn)用表:深圳勝利VC980+數(shù)字萬(wàn)用表,數(shù)量為4個(gè)。
負(fù)載:負(fù)載為100W 50Ω的環(huán)形滑動(dòng)變阻器。
圖5-2 可調(diào)壓電源
5.2.2 測(cè)試方式測(cè)試示意圖:
測(cè)量電路點(diǎn)如圖5-3所示(3、4、5、6、7為測(cè)量點(diǎn)):

圖5-3測(cè)量電路
測(cè)試步驟:
第一步:在3、4點(diǎn)間用電壓表測(cè)輸出電壓,在3、4點(diǎn)串入電流表在5、6點(diǎn)間用電壓表測(cè)輸出電壓,在5、7點(diǎn)串入電流表;
第二步:在1、2點(diǎn)源接入市電;
第三步:調(diào)整可調(diào)變壓器電阻,使電源滿(mǎn)載輸出;
第四步:調(diào)整穩(wěn)壓電源電壓,使電壓為12V,記錄輸入與輸出電壓;
第五步:逐步增大電源電壓,每隔一段做一次的記錄,直到輸出電壓的上限19V。
5.2.3 測(cè)試結(jié)果輸出輸入電壓測(cè)試結(jié)果如下表所示:
表5-1 輸出輸入電壓記錄表
(測(cè)試條件為輸出電壓10V,輸出電流為1.00A)
電壓調(diào)整率推導(dǎo):
(5-1)
5.3 負(fù)載調(diào)整率測(cè)試負(fù)載調(diào)整率:電源負(fù)載的變化會(huì)引起電源輸出的變化,負(fù)載增加,輸出降低,相反負(fù)載減少,輸出升高。好的電源負(fù)載變化引起的輸出變化較小,通常指標(biāo)為3%--5%。
負(fù)載調(diào)整率是衡量電源好壞的指標(biāo)。好的電源輸出接負(fù)載時(shí)電壓降較小。
5.3.1 測(cè)試儀器需要測(cè)試電源的負(fù)載調(diào)整率,需要帶隔離低壓電源、

萬(wàn)用表、負(fù)載和示波器。
可調(diào)壓電源:本實(shí)驗(yàn)采用兆信30/5A數(shù)顯線(xiàn)性電源。
萬(wàn)用表:深圳勝利VC980+數(shù)字萬(wàn)用表,數(shù)量為4個(gè)。
負(fù)載:負(fù)載為100W 50Ω的環(huán)形滑動(dòng)變阻器。
示波器:?jiǎn)纹瑱C(jī)輸出的載波頻率為40KHZ,實(shí)
驗(yàn)采用Siglent雙通道200M示波器,如圖5-4所示。 圖5-4 Siglent雙通示波器
5.3.2 測(cè)試方式測(cè)試示意圖:
測(cè)量電路如圖5-3所示。
測(cè)試步驟:
第一步:在3、4點(diǎn)間用電壓表測(cè)輸出電壓,在3、4點(diǎn)串入電流表在5、6點(diǎn)間用電壓表測(cè)輸出電壓,在5、7點(diǎn)串入電流表;
第二步:在1、2點(diǎn)間接上市電;
第三步:測(cè)試單片機(jī)輸出的PWM波形、mos管腳的驅(qū)動(dòng)波形。
第四步:輸入電壓為額定值10V,輸出電流取最小值,記錄最小負(fù)載量的輸出電壓;
第五步:調(diào)整負(fù)載為50%滿(mǎn)載,記錄對(duì)應(yīng)的輸出電壓;
第六步:調(diào)整負(fù)載為滿(mǎn)載,記錄對(duì)應(yīng)的輸出電壓;
測(cè)試數(shù)據(jù)記錄如表5-2。
表5-2 不同負(fù)載下輸出電壓記錄表
負(fù)載調(diào)整率推導(dǎo):
5.3.3 測(cè)試結(jié)果把示波器的其中一個(gè)探針接到單片機(jī)的PWM輸出口,地接到另外一個(gè)端口,得到的測(cè)試波形如5-5、 把探針?lè)旁谏舷耺os管腳G極的驅(qū)動(dòng)波形波形如圖5-6所示。

圖5-5 單片機(jī)輸出的PWM波形 圖5-6 上下mos管腳G極的驅(qū)動(dòng)波形
5.4 電路效率測(cè)試
5.4.1 測(cè)試儀器需要測(cè)試電源的帶載性能及效率,需要萬(wàn)用表和負(fù)載。
可調(diào)壓電源:本實(shí)驗(yàn)采用兆信30/5A數(shù)顯線(xiàn)性電源。
萬(wàn)用表:數(shù)字萬(wàn)用表。
負(fù)載:負(fù)載為30W 50Ω的環(huán)形滑動(dòng)變阻器。
示波器:?jiǎn)纹瑱C(jī)輸出的載波頻率為47KHZ。
5.4.2 測(cè)試方式:測(cè)試示意圖:
測(cè)量電路如圖5-3所示。
測(cè)試步驟:
第一步:在3、4點(diǎn)間用電壓表測(cè)輸出電壓,在3、4點(diǎn)串入電流表在5、6點(diǎn)間用電壓表測(cè)輸出電壓,在5、7點(diǎn)串入電流表;
第二步:在1、2點(diǎn)間接入市電;
第三步:輸入電壓為額定值18V,
第四步:調(diào)整負(fù)載由大至小記錄對(duì)應(yīng)的輸出電壓、輸入電流、輸出電壓、輸出電流;
第五步:返回第四步,直到輸出電流達(dá)到自保護(hù)的狀態(tài)。
5.4.3 測(cè)試結(jié)果測(cè)試額定功率下的供電效率,測(cè)試結(jié)果如表3所示。
表5-3供電效率測(cè)試數(shù)據(jù) |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
由以上數(shù)據(jù)得到:滿(mǎn)載輸出情況下,供電效率為81%。
輸出噪聲紋波電壓峰-峰值的測(cè)試,把示波器的測(cè)試輸出電壓波形如圖5-6所示。

圖5-6 輸出電壓波形
由以上數(shù)據(jù)得到:該電源的電壓調(diào)整率為0.069%,負(fù)載調(diào)整率為3.164%,滿(mǎn)載輸出情況下,供電效率為81%,當(dāng)輸出電流大于2A時(shí),保護(hù)電路啟動(dòng)。輸出電壓為0。輸出紋波峰峰值為290Mv。實(shí)際電路的調(diào)試圖如圖5-7所示。

圖5-7實(shí)際電路的調(diào)試圖
6 總結(jié)
6.1結(jié)論經(jīng)過(guò)研究國(guó)內(nèi)外關(guān)于開(kāi)關(guān)電源的方式,本開(kāi)關(guān)電源設(shè)計(jì)采用STC12C5A60S2單片機(jī)發(fā)生47KHZ的PWM脈沖信號(hào),經(jīng)過(guò)IR2104控制MOS,從而控制整個(gè)BUCK(降壓式變換)電路。單片機(jī)內(nèi)部自帶的10位ADC能通過(guò)電壓電流檢測(cè)電流實(shí)時(shí)反饋電流和電壓數(shù)值,并由此調(diào)整輸出的PWM的占空比,形成電流電壓閉環(huán)控制系統(tǒng)。按鍵能設(shè)置輸出電流從0.2A到2A,以0.01A遞增,輸出最大10V,液晶能顯示實(shí)時(shí)輸出電流與電壓。根據(jù)測(cè)試,滿(mǎn)載的供電效率為88%。按鍵設(shè)置的輸出電流的誤差小于0.01A。
因此,本文所研究的基于單片機(jī)的開(kāi)關(guān)電源設(shè)計(jì)滿(mǎn)足了當(dāng)初的設(shè)計(jì)預(yù)想,達(dá)到了較好的效果。
6.2創(chuàng)新點(diǎn)論文主要的創(chuàng)新點(diǎn)有以下三點(diǎn):
1)使得開(kāi)關(guān)電源硬件更加智能化,直接用單片機(jī)控制;
2)能顯示輸入和輸出的電流電壓狀況,實(shí)時(shí)監(jiān)測(cè)電源的運(yùn)作;
3)能經(jīng)過(guò)按鍵數(shù)字化地設(shè)置預(yù)設(shè)輸出電壓,能得到精確的設(shè)定電壓。
6.3存在問(wèn)題因?yàn)闀r(shí)間與能量有限,本文所設(shè)計(jì)的控制系統(tǒng)另有待于進(jìn)一步的改進(jìn):
比如,
- 比如可以加大電感L,使得輸出紋波進(jìn)一步降低;
- 采用PCB板制作實(shí)物,使得其穩(wěn)定性進(jìn)一步提升,等等
致謝本論文的全部工作得到了指導(dǎo)老師的悉心指導(dǎo)和親切關(guān)懷,同時(shí)也衷心感謝學(xué)校的所有老師在這四年來(lái)對(duì)我的學(xué)習(xí)、工作、生活上給予的無(wú)私幫助和無(wú)微不至的關(guān)懷。我的論文選題和論文寫(xiě)作都是在導(dǎo)師的指導(dǎo)下完成的,他崇高的師德和高深的學(xué)術(shù)造詣給我在我身上留下了深深的烙印,對(duì)我的學(xué)術(shù)訓(xùn)練和研究能量的培養(yǎng)會(huì)讓我受用終身。
在我大學(xué)生涯中,得到了專(zhuān)業(yè)課老師在電子技術(shù)上給予的悉心指導(dǎo),特此感謝。
在完成該課題的時(shí)刻,得到舍友們,同班同學(xué)們和學(xué)長(zhǎng)們的幫助,在此深表感謝。
感謝惠州學(xué)院的老師們同學(xué)們,在學(xué)習(xí)工作的時(shí),從他們身上我學(xué)習(xí)到了不少開(kāi)發(fā)項(xiàng)目的方式和新的開(kāi)發(fā)技術(shù)。
謝謝所有幫助和關(guān)心我的老師和同學(xué)。
單片機(jī)源程序如下:
- /*************手工焊板BUCK-BOOST******/
- #include <STC12C5A60S2.H>
- #include <intrins.h> /*use _nop_() function*/
- #define uchar unsigned char
- #define uint unsigned int
- #define ADC_FLAG 0X10
- /*****************************************
- 端口功能設(shè)定
- *****************************************/
- sbit PWM_1 = P1^4; //PWM1_Boost/Buck
- sbit SD_1 = P1^3; //SD1_Boost_Buck
- sbit Key_1 = P2^1; //Key_1
- sbit Key_2 = P2^2; //Key_2
- sbit Key_3 = P2^3; //Key_3
- uint ADC_value;
- uchar PWM_temp=2;
- uchar last_key; //按鍵變量
- uchar channel=0; //第一通道
- uchar Caes=0; //菜單
- uint OUT_Current=300;
- uint Battery_voltage; //輸入電壓
- uint Boost_voltage; //Boost電壓
- uint Boost_Buck_current; //Buck_Boost電流8位
- uint O_current;//輸出電流
- uint A_value=90;
- bit lock=0; //PWM輸出鎖定
- bit ADC_ready=0; //ADC完畢
- bit K=0;
- bit Charge=0;
- void delay();
- void Key_0_();
- void Key_1_();
- void Key_2_();
- void Key_3_();
- void init_pca();
- void init_timer();
- /**********************************************************
- 函數(shù)說(shuō)明: 延時(shí)程序
- **********************************************************/
- void delay(uchar t)
- {
- uint j;
- uchar i;
- for(i=0;i<t;i++)
- for(j=0;j<1000;j++);
- }
- /**********************************************************
- 函數(shù)說(shuō)明: PWM初始化
- **********************************************************/
- void init_pwm()
- {
- CCON = 0;
- CL = 0;
- CH = 0;
- CMOD = 0X08; //0X08:43KHZ // 0X02,22KHZ // 0X0A,10KHZ //
- CCAPM1 =0x42;//8位PWM輸出,無(wú)中斷
- CCAP1L =CCAP1H =250;//初始化spwm輸出的占空比
- CR=1;
- }
- /**********************************************************
- 函數(shù)說(shuō)明: 中斷 始化函數(shù)
- **********************************************************/
- void InitADC()
- {
- P1M1=0x47;
- P1M0=0x00;
- P1ASF=0X47; //選擇ADC通道0126
- ADC_RES=0;
- ADC_CONTR=0X88; //1110 0000 E8 開(kāi)電源,最高速
- EA=1;
- EADC=1;
- }
- /**************************************
- 1602液晶
- **************************************/
- sbit RS = P2^5;
- sbit RW = P2^6;
- sbit E = P2^7;
- /**************************************
- 短延時(shí)
- **************************************/
- void delay5ms()
- {
- uchar i,v,k;
- for(i=1;i>0;i--)
- for(v=168;v>0;v--)
- for(k=22;k>0;k--);
- }
- /**************************************
- 寫(xiě)指令
- **************************************/
- void lcd_Write_com(uchar com)
- {
- RS=0; //定義指令寄存器
- RW=0; //寫(xiě)允許
- P0=com; //寫(xiě)指令
- delay5ms(); E=1; //片選端上拉
- delay5ms(); E=0; //下降沿鎖存
- }
- /**************************************
- 寫(xiě)數(shù)據(jù)
- **************************************/
- void lcd_write_date(uchar date)
- {
- RS=1; //定義數(shù)據(jù)寄存器
- RW=0; //寫(xiě)允許
- P0=date; //寫(xiě)數(shù)據(jù)
- delay5ms(); E=1; //片選端上拉
- delay5ms(); E=0; //下降沿鎖存
- }
- /**************************************
- 顯示程序
- **************************************/
- void dis_lcd1602(uchar x,uchar y,uchar dat)
- {
- uchar add;
- if(y==1) add=(0x80+x);
- if(y==2) add=(0xc0+x);
- lcd_Write_com(add); //寫(xiě)指令
- lcd_write_date(dat); //寫(xiě)數(shù)據(jù)
- }
- /**************************************
- 液晶初始化
- **************************************/
- void lcd1602_init()
- {
- lcd_Write_com(0x38); //設(shè)置8位格式,2行,5*7
- lcd_Write_com(0x01); //清屏
- lcd_Write_com(0x0c); //整體顯示,關(guān)光標(biāo),不閃爍
- lcd_Write_com(0x06); //設(shè)定輸入方式,增量不移位
- lcd_Write_com(0x80); //初始坐標(biāo)
- }
- /**************************************
- 液晶顯示漢字程序
- **************************************/
- void hz_lcdDis(uchar x,uchar y,uchar *p) //漢字顯示
- {
- uchar i=0,temp;
- if(x)temp = 0x40; else temp = 0;
- for(i=y;*p!='\0';i++,p++)
- {
- lcd_Write_com(i|0x80+temp);
- lcd_write_date(*p);
- delay5ms();
- }
- }
- /**************************************
- 液晶顯示數(shù)字程序
- **************************************/
- void num_lcdDis(uchar X,uchar Y,uint num,uchar n)
- {
- uint i=0,temp,hang;
- n +=1;
- if(X)hang = 0x40;else hang = 0;
- for(i=(n-1);i>0;i--)
- {
- lcd_Write_com((i+Y-1)|0x80+hang); //從個(gè)位開(kāi)始顯示
- temp = num%10+0x30;
- lcd_write_date(temp);
- delay5ms();
- num/=10;
- }
- }
- /**********************************************************
- 函數(shù)說(shuō)明: 平均濾波函數(shù)
- **********************************************************/
- #define N 50
- uint Filter(uint adc_data)
- {
- uint value=0;
- uchar count,count_ADC;
- for(count=0;count<N;count++)
- {
- for(count_ADC=0;count_ADC<3;count_ADC++)
- {
- while(!ADC_ready){}
- ADC_ready=0;
- }
- value+=adc_data;
- }
- return (value);
- }
- /**********************************************************
- 函數(shù)說(shuō)明:按鍵延時(shí)防抖動(dòng)
- P3^5 Key_1
- P3^6 Key_2
- P3^7 Key_3
- **********************************************************/
- void key_scan()
- {
- uchar temp;
- temp = P2&0x0F;
- if(temp != 0x0F)
- {
- delay(10);
- temp = P2&0x0F;
- if(temp!= 0x0F)
- {
- switch(temp)
- {
- case 0x0E: Key_0_(); break; //20
- case 0x0D: Key_1_(); break; //21
- case 0x0B: Key_2_(); break; //22
- case 0x07: Key_3_(); break; //23
- default:break;
- }
- }
- }
- // last_key = temp;
- }
- /**********************************************************
- 函數(shù)說(shuō)明: 按鍵程序
- **********************************************************/
- void Key_0_()
- {
- Charge=~Charge;
- if(Charge) {SD_1=1; hz_lcdDis(0,8,"d");}
- else {SD_1=0; hz_lcdDis(0,8,"c");}
- }
- void Key_1_()
- {
- if(K) {SD_1=0; lock=1; CCAP1L =CCAP1H =128; hz_lcdDis(0,8,"g"); }
- else {SD_1=1; lock=0; hz_lcdDis(0,8,"k"); }
- K=~K;
- }
- void Key_2_()
- {
- OUT_Current=OUT_Current+15;
- if(OUT_Current>600)OUT_Current=600;
- }
- void Key_3_()
- {
- OUT_Current=OUT_Current-15;
- if(OUT_Current<150)OUT_Current=150;
- }
- /**********************************************************
- 函數(shù)說(shuō)明: 主函數(shù)
- **********************************************************/
- void main(void)
- {
- uint U1,U2,I1,S;
- SD_1=0;
- lcd1602_init();
- hz_lcdDis(0,4,"Welcome!");
- init_pwm();
- InitADC();
- delay(250);
- // delay(250);
- EA=1;//開(kāi)總中斷
- lcd_Write_com(0x01); //清屏
- // SD_1=1;
- hz_lcdDis(0,0,"IN= . V S= . A");
- hz_lcdDis(1,0,"OU= . V I= . A");
- while(1)//主循環(huán)
- {
- U1=Filter(Boost_voltage)/92; //輸入電壓 1:10采樣電阻 93,
- U2=Filter(Battery_voltage)/92; //輸出電壓 1:10采樣電阻 93
- I1=Filter(O_current)/150; //輸出電流
- // if(I1>1) I1=I1-1;//輸出電流顯示校準(zhǔn)
- if(U2>242)
- {SD_1=0; lock=1; CCAP1L =CCAP1H =128; hz_lcdDis(0,8,"P"); }
- num_lcdDis(0,3,U1/10,2);
- num_lcdDis(0,6,U1%10,1);
- num_lcdDis(1,3,U2/10,2);
- num_lcdDis(1,6,U2%10,1);
- S=OUT_Current/3;
- num_lcdDis(0,11,S/100,1);
- num_lcdDis(0,13,S%100,2);
- num_lcdDis(1,11,I1/100,1);
- num_lcdDis(1,13,I1%100,2);
- // if((u2-u1)<40) hz_lcdDis(0,10,"Error!");
- // else hz_lcdDis(0,10,"OK ");
- key_scan();
- }
- }
- /****************************************************************
- 函數(shù)說(shuō)明: ADC中斷
- 實(shí)現(xiàn)功能:執(zhí)行ADC采集并做電壓和電流的調(diào)整。
- ****************************************************************/
- void ADC_interrupt()interrupt 5 //ADC轉(zhuǎn)換完后ADC_FLAG由硬件自動(dòng)置位,須由軟件清零
- {
- uint ADC_value; //ADC轉(zhuǎn)換結(jié)果 10位
- ADC_CONTR&=!ADC_FLAG; //clear ADCflag
- ADC_value=(ADC_RES<<2)+ADC_RESL; // ADC_value=(ADC_RES<<2)+ADC_RESL;
- switch(channel)
- {
- case 0: Boost_voltage=ADC_value;
- channel=1;
- break;
- case 1: Boost_Buck_current=ADC_value;
- if(!Charge)
- {
- if(!lock)
- {
- if((Battery_voltage<480)&&(Boost_Buck_current<OUT_Current)) //442
- {
- PWM_temp--;
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
c.png (61.84 KB, 下載次數(shù): 162)
下載附件
2018-12-11 21:32 上傳
0.png (47.04 KB, 下載次數(shù): 148)
下載附件
2018-12-11 21:55 上傳
所有資料51hei提供下載:
雙向DC-DC.rar
(4.9 MB, 下載次數(shù): 855)
2018-12-11 21:33 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5