久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 27336|回復(fù): 14
打印 上一主題 下一主題
收起左側(cè)

基于單片機(jī)的恒流開關(guān)電源 BUCK電路設(shè)計(jì)論文

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
中文題目:基于單片機(jī)的恒流開關(guān)電源
英文題目:MCU-based switching power supply design

學(xué)號(hào)
專業(yè)班級(jí)
指導(dǎo)教師
提交日期

基于單片機(jī)的恒流開關(guān)電源
摘要

本開關(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è)試,滿載的供電效率為88%。按鍵設(shè)置的輸出電流的誤差小于0.01A。

關(guān)鍵詞:開關(guān)電源,BUCK,STC單片機(jī),IR2104,恒流源


          MCU-based switching power supply design
Abstract

The switching power supply design uses STC12C5A60S2 microcontroller PWM pulse signal 47KHZ happen, after MOS driver IC IR2104 control the whole BUCK circuit. MCU comes with 10 internal ADC voltage detection current by real-time feedback current and voltage values, and thereby adjust the output PWM duty cycle, forming a voltage closed-loop control system. Button can set the output voltage from 0V to 10V limit of, 1V steps, the LCD can display real-time output voltage and current. 10W at the rated power output, full load power efficiency of 81%. Buttons to set the output voltage error is less than 0.1V..

Key words: Switching power supply  BUCK  STC microcontroller  IR2104 Adjustable output
目錄
1 前言
1.1課題研究意義
1.2研究現(xiàn)狀及存在問(wèn)題
1.3研究?jī)?nèi)容和方式
2系統(tǒng)分析
2.1 系統(tǒng)論述
2.2 Buck工作原理
2.3 Buck波形分析
2.4 Buck穩(wěn)壓分析
2.5小結(jié)
3硬件設(shè)計(jì)
3.1總統(tǒng)框架
3.2各部分電路的選擇
3.3小結(jié)
4軟件設(shè)計(jì)
4.1電壓電流雙閉環(huán)控制算法設(shè)計(jì)
4.2主程序程序設(shè)計(jì)
4.3按鍵子程序設(shè)計(jì)
4.4  ADC中斷程序
4.5  關(guān)鍵程序
5系統(tǒng)測(cè)試
5.1實(shí)物圖片
5.2電壓調(diào)整率測(cè)試
5.3  負(fù)載調(diào)整率測(cè)試
5.4  電路效率測(cè)試
6 總結(jié)
6.1結(jié)論
6.2創(chuàng)新點(diǎn)
6.3存在問(wèn)題
致謝
參考文獻(xiàn)
附錄
附  C語(yǔ)言程序源代碼


1 前言

1.1課題研究意義

開關(guān)電源顧名思義,開關(guān)電源便是使用半導(dǎo)體開關(guān)器件(如晶體管、場(chǎng)效應(yīng)管、可控硅閘流管等),經(jīng)過(guò)控制電路,使半導(dǎo)體開關(guān)器件不停地“導(dǎo)通”和“關(guān)閉”,讓半導(dǎo)體開關(guān)器件對(duì)輸入的電壓進(jìn)行脈沖調(diào)制,從而完成直流到交流、直流到直流電壓變換,和輸出電壓可調(diào)和自動(dòng)穩(wěn)壓。

開關(guān)電源一般有三種工作模式:頻率、脈沖寬度固定模式,頻率固定、脈沖寬度可變模式,頻率、脈沖寬度可變模式。前一種工作模式多用于直流交流逆變電源,或直流/直流電壓變換;后面兩種工作模式一般用在開關(guān)穩(wěn)壓電源。另外,開關(guān)電源輸出電壓也有三種工作式樣:直接輸出電壓的方式、平均值輸出電壓的方式、幅值輸出電壓的方式。同樣的,前一種工作方式經(jīng)常用在直流/交流逆變電源,或直流/直流電壓變換;后兩種工作模式經(jīng)常用于開關(guān)穩(wěn)壓電源[1]。

1.2研究現(xiàn)狀及存在問(wèn)題

近半個(gè)世紀(jì)以來(lái),國(guó)內(nèi)外學(xué)者對(duì)開關(guān)電源進(jìn)行了很多的研究,取得了很多的成果。

1.2.1國(guó)外研究現(xiàn)狀

上個(gè)世紀(jì)的50年代初,美國(guó)宇航局為了搭載火箭,開關(guān)電源誕生了,這便是開關(guān)電源誕生的起源,此開關(guān)電源以小型化、輕巧化為目標(biāo)。在歷史進(jìn)程中進(jìn)行了近半個(gè)多世紀(jì)后,開關(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í)也完成了全面開關(guān)電源普及化。在到來(lái)的20世紀(jì)90年代,開關(guān)電源更是進(jìn)入了快速發(fā)展的黃金時(shí)間,家電、電子設(shè)備都得到更廣泛的應(yīng)用。又經(jīng)歷了幾十年的努力下,現(xiàn)在的開關(guān)電源技術(shù)都有了技術(shù)性的重大突破與發(fā)展。更多新技術(shù)的發(fā)現(xiàn)與開發(fā)將當(dāng)代開關(guān)電源又帶上了另一個(gè)全新的時(shí)期,在高新技術(shù)領(lǐng)域的應(yīng)用更是推動(dòng)了高新技術(shù)產(chǎn)品的發(fā)展,其中以其小型化、簡(jiǎn)便化的特征尤為突出。

1.2.2國(guó)內(nèi)研究現(xiàn)狀

國(guó)內(nèi)學(xué)者有關(guān)開關(guān)電源的研究,有以下研究狀況:

伴跟著開關(guān)電源的誕生,1960年代初期,我國(guó)開始對(duì)開關(guān)穩(wěn)壓電源進(jìn)行的設(shè)計(jì),研制并加以生產(chǎn)。直到60年代中期才開始慢慢地進(jìn)入了實(shí)用的階段。在對(duì)開關(guān)電源有了一定認(rèn)識(shí)后,我國(guó)在70年代初期便試著開始對(duì)無(wú)工頻降壓變換器進(jìn)行深入研究應(yīng)用在開關(guān)穩(wěn)壓電源上,繼而對(duì)其進(jìn)行設(shè)計(jì)、研制和生產(chǎn)。最終在1974年,我國(guó)第一臺(tái)工頻降壓變壓器式的開關(guān)電源被研發(fā)出來(lái)了,輸出電流是5v,工作頻率是10KHz。跟著我國(guó)開關(guān)電源的向前發(fā)展,我國(guó)許多研究所、工廠等在近十年發(fā)展中也紛紛研制出來(lái)了無(wú)工頻降壓變換器的開關(guān)穩(wěn)壓電源,這種開關(guān)電源的工作頻率大概在20K左右,輸出的功率在1000W以下,但是其型號(hào)與用途眾多,都投入電子設(shè)備、電視機(jī)、通信等領(lǐng)域進(jìn)行廣泛的使用。跟著時(shí)期的發(fā)展,因?yàn)槲覈?guó)半導(dǎo)體與工藝跟不上時(shí)期的潮流,導(dǎo)致了自己生產(chǎn)與研制的開關(guān)穩(wěn)壓電源的關(guān)鍵元器件大部分仍要經(jīng)過(guò)國(guó)外進(jìn)口,導(dǎo)致當(dāng)代開關(guān)電源技術(shù)與一些先進(jìn)國(guó)家相比仍存有巨大的差距。

1.2.3目前存在的問(wèn)題

綜上所述,目前國(guó)內(nèi)外學(xué)者研究的開關(guān)電源普遍存在以下四大方面的問(wèn)題:

1)多數(shù)使用模擬IC控制,控制式樣不夠智能化;

2)不能顯示輸入和輸出的電流電壓狀況;

3)多數(shù)開關(guān)電源為固定輸出;

4)可調(diào)的開關(guān)電源只能通過(guò)電位器模擬調(diào)整,不能直接得到準(zhǔn)確的預(yù)設(shè)電壓。

1.3研究?jī)?nèi)容和方式

為了設(shè)計(jì)一種更加智能化的開關(guān)電源,必須進(jìn)行更深入的開關(guān)電源機(jī)理研究,下文字闡述了具體的研究?jī)?nèi)容以及研究方法。

1.3.1研究方案

設(shè)計(jì)出一種基于STC系列51單片機(jī)的BUCK型直流降壓開關(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)的效率,不在附加額外的電源板,最后還可以讓輸出的紋波變小等。

1.3.2內(nèi)容安排

1.              首先了解課題研究的意義,和國(guó)內(nèi)國(guó)外相關(guān)發(fā)展動(dòng)態(tài)。

2.              大致的概述設(shè)計(jì)的開關(guān)電源的系統(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ī)開關(guān)電源進(jìn)行調(diào)試與數(shù)據(jù)測(cè)試并對(duì)結(jié)果進(jìn)行分析。

6.              最后簡(jiǎn)要的總結(jié)本系統(tǒng)設(shè)計(jì)的工作要點(diǎn)和所得收獲。


2系統(tǒng)分析

2.1 系統(tǒng)論述

直流/直流變換是將固有的直流電壓轉(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í),將開關(guān)閉合,此時(shí)三級(jí)管處于導(dǎo)通的狀態(tài),可以用一條導(dǎo)線來(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ò)程中,開關(guān)管子已經(jīng)斷開,此時(shí)的三級(jí)管處于截止?fàn)顟B(tài),這里把它拿掉,等效電路圖如下。在開關(guān)斷開的時(shí)間里,因?yàn)殡姼械谋3蛛娏鞑蛔兲卣鳎姼猩系碾姼须娏鞑粫?huì)一下子下降到零,而是把充電完成后所累積的電流值慢慢下降到0。在這個(gè)過(guò)程中,因?yàn)樵瓉?lái)的電路已經(jīng)斷開了,因此電感沿著之前的方向,經(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ì)采用串連型開關(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)整開關(guān)K導(dǎo)通的占空比,從而組成閉環(huán)電壓控制電路,使輸出電壓能達(dá)到穩(wěn)定。

圖2-4開關(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)
              一般而言,開關(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ì)采用銅線和磁芯做成的電感以增大電感的儲(chǔ)能能量提升供電的效率。
              按照串連型開關(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ī)的開關(guān)電源設(shè)計(jì)采用BCUK拓?fù)洌?jīng)過(guò)原理分析和認(rèn)證,最終推導(dǎo)選擇了合適的電容和電感。


3硬件設(shè)計(jì)
31總統(tǒng)框架

基于單片機(jī)的開關(guān)電源設(shè)計(jì),由STC單片機(jī)、變壓器,整流濾波電路,BUCK主回路、降壓穩(wěn)壓電路、按鍵電路、液晶電路、電壓檢測(cè)電路、電流檢測(cè)電路等組成。總體設(shè)計(jì)框圖如3-1圖所示。下面分別論證這些方面的詳細(xì)方案選擇。

圖3-1總體設(shè)計(jì)構(gòu)架圖
32各部分電路的選擇3.2.1  單片機(jī)

STC12C5A60S2單片機(jī),在指令代碼的方面可以完全兼容傳統(tǒng)8051,同時(shí)它的速度比傳統(tǒng)的8051單片機(jī)要快8-12倍,體現(xiàn)了其高速度的一面。這系列單片機(jī)其里面有專用的集成復(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í)開始向芯片里面的高壓側(cè)懸浮驅(qū)動(dòng)電路供電,C上的端電壓被充至高于電源高壓的Vcc,只要上下管一直輪流導(dǎo)通和截止,C就會(huì)不斷向高壓側(cè)懸浮驅(qū)動(dòng)電路供電,使上管打開的時(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  電路供電電源的選擇

線性降壓芯片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ò)霍爾傳感器的線圈發(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)? > , 符合設(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)? 1< 2,所以滿足條件。
當(dāng)10V輸出時(shí),單片機(jī)檢測(cè)到的電壓是,
                    (3-8)
電壓分壓檢測(cè)電路如圖3-7所示。
圖3-7 電壓檢測(cè)電路
3.2.6  按鍵電路

目前單按鍵這種模式的鍵盤使用方便,響應(yīng)的快并且接口還簡(jiǎn)潔。綜合以上本系統(tǒng)采用的是非編碼式鍵盤。本系統(tǒng)設(shè)計(jì)應(yīng)用了3 個(gè)按鍵,按照軟件來(lái)定義它的功能,鍵盤與單片機(jī)的P2.3、P2.2、P2.1鍵盤是若干按鍵的集合,是向系統(tǒng)提供操作人員干預(yù)命令的接口設(shè)備。

S1為開關(guān)按鍵,按一下即有輸出,按第二下即輸出停止,如此循環(huán)

S2為輸出電流增加。

S3為輸出電壓減少。

如圖3-8所示

                       
圖3-8 按鍵電路
3.2.7  液晶顯示模塊

系統(tǒng)采樣1602液晶顯示。液晶驅(qū)動(dòng)電流較小,能顯示較大信息量,無(wú)需增外設(shè)電路。

能顯示多行數(shù)據(jù),方便用戶進(jìn)行更多的操作。

能顯示輸入輸出的實(shí)時(shí)電壓,輸出的實(shí)時(shí)電流,預(yù)設(shè)的輸出電壓。如圖3-9所示

圖3-9 1602液晶顯示
33小結(jié)

綜上所述,本開關(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ǔ)言編寫程序,Keil C51作為集成開發(fā)環(huán)境。

41電壓電流雙閉環(huán)控制算法設(shè)計(jì)
              由于題目要求輸出電壓在10V以內(nèi),輸出電流應(yīng)該在0.2~2A以內(nèi),所以應(yīng)該具有如下C-V曲線特性,在電流和電壓的雙閉環(huán)控制中。
使得輸出電流在2A范圍內(nèi),電壓在10V范圍內(nèi);
控制模式如下:

電流
電壓
PWM
條件
>2A
>10V
++
<=10V
--
<=2A
>10V
--
<=10V
--

軟件設(shè)計(jì)包括:主程序設(shè)計(jì),按鍵子程序設(shè)計(jì),ADC中斷程序設(shè)計(jì)

42主程序程序設(shè)計(jì)

主程序主要處理對(duì)時(shí)間要求不敏感的數(shù)據(jù),例如按鍵檢測(cè),和顯示電壓電流狀況,

此中顯示這些數(shù)據(jù)時(shí)刻采用數(shù)字平均濾波算法,采集50個(gè)數(shù)據(jù),繼而取平均值,使得到的數(shù)據(jù)更加接近真實(shí)狀況,使得顯示出來(lái)的電壓和電流不會(huì)亂跳,抗干擾能量得很大的提升。

43按鍵子程序設(shè)計(jì)

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

44  ADC中斷程序

ADC中斷程序中,因?yàn)橛休斎腚妷海敵鲭妷海敵鲭娏鬟@3個(gè)數(shù)據(jù)要監(jiān)測(cè),所以采用通道輪流詢問(wèn)的辦法完成。

于此同時(shí),要完成電流電壓檢測(cè)的雙閉環(huán)的話,要在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)&&[ size][="" p][p="20," null,="" left][size="12pt]" {[="" pwm_temp--;[="" if(pwm_temp250)  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è)試51實(shí)物圖片

實(shí)物由萬(wàn)用板手工焊接,板子的正面(a)和背面(b)如圖5-1所示。


  (a)板子正面                         (b)板子背面
圖5-1 總體電路圖
52電壓調(diào)整率測(cè)試
電壓調(diào)整率,來(lái)源于電源在滿載時(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ù)顯線性電源。如圖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)變壓器電阻,使電源滿載輸出;

第四步:調(diào)整穩(wěn)壓電源電壓,使電壓為12V,記錄輸入與輸出電壓;

第五步:逐步增大電源電壓,每隔一段做一次的記錄,直到輸出電壓的上限19V。

5.2.3  測(cè)試結(jié)果
輸出輸入電壓測(cè)試結(jié)果如下表所示:

表5-1 輸出輸入電壓記錄表

U2(V)

12.96

13.01

14.04

15.05

16.04

17.01

18.01

19.01

Uo(V)

10.01

9.98

10.06

9.94

10.02
10.06
10.03
10.07

(測(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ù)顯線性電源。
萬(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%滿載,記錄對(duì)應(yīng)的輸出電壓;

第六步:調(diào)整負(fù)載為滿載,記錄對(duì)應(yīng)的輸出電壓;

測(cè)試數(shù)據(jù)記錄如表5-2。

表5-2 不同負(fù)載下輸出電壓記錄表

輸出電流(A)

1.00

0.53

0.04

輸出電壓(V)

9.995

10.001

9.959

負(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ù)顯線性電源。
萬(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ù)
供電電壓/V
供電電流/A
總輸出電壓/V
總輸出電流/A
實(shí)際效率
12.2
1.01
10.02
1.00
0.81
12.2
0.95
9.01
1.03
0.80
12.2
0.85
8.05
1.02
0.79
12.2
0.78
7.07
1.04
0.77
12.2
0.67
6.02
1.02
0.75
12.2
0.56
4.98
1.01
0.74
12.2
0.48
3.97
1.00
0.68
12.2
0.38
3.00
1.04
0.67
12.2
0.25
2.01
1.02
0.66
12.2
0.13
1.02
1.00
0.63
12.2
0.01
0.04
1.01
0.64

由以上數(shù)據(jù)得到:滿載輸出情況下,供電效率為81%。

輸出噪聲紋波電壓峰-峰值的測(cè)試,把示波器的測(cè)試輸出電壓波形如圖5-6所示。

                                                                                                    圖5-6 輸出電壓波形

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

圖5-7實(shí)際電路的調(diào)試圖


   6 總結(jié)61結(jié)論

經(jīng)過(guò)研究國(guó)內(nèi)外關(guān)于開關(guān)電源的方式,本開關(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è)試,滿載的供電效率為88%。按鍵設(shè)置的輸出電流的誤差小于0.01A。

因此,本文所研究的基于單片機(jī)的開關(guān)電源設(shè)計(jì)滿足了當(dāng)初的設(shè)計(jì)預(yù)想,達(dá)到了較好的效果。

62創(chuàng)新點(diǎn)

論文主要的創(chuàng)新點(diǎn)有以下三點(diǎn):

1)使得開關(guān)電源硬件更加智能化,直接用單片機(jī)控制;

2)能顯示輸入和輸出的電流電壓狀況,實(shí)時(shí)監(jiān)測(cè)電源的運(yùn)作;

3)能經(jīng)過(guò)按鍵數(shù)字化地設(shè)置預(yù)設(shè)輸出電壓,能得到精確的設(shè)定電壓。

63存在問(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)懷。我的論文選題和論文寫作都是在導(dǎo)師的指導(dǎo)下完成的,他崇高的師德和高深的學(xué)術(shù)造詣給我在我身上留下了深深的烙印,對(duì)我的學(xué)術(shù)訓(xùn)練和研究能量的培養(yǎng)會(huì)讓我受用終身。

在我大學(xué)生涯中,得到了專業(yè)課老師在電子技術(shù)上給予的悉心指導(dǎo),特此感謝。

在完成該課題的時(shí)刻,得到舍友們,同班同學(xué)們和學(xué)長(zhǎng)們的幫助,在此深表感謝。

感謝惠州學(xué)院的老師們同學(xué)們,在學(xué)習(xí)工作的時(shí),從他們身上我學(xué)習(xí)到了不少開發(fā)項(xiàng)目的方式和新的開發(fā)技術(shù)。

謝謝所有幫助和關(guān)心我的老師和同學(xué)。

參考文獻(xiàn)

[1]陳永真,孟麗囡.高效率開關(guān)電源設(shè)計(jì)與制作[M].北京:中國(guó)電力出版社,

2008:4-150.

[2]劉勝利.當(dāng)代高頻開關(guān)電源實(shí)用技術(shù).北京:電子工業(yè)出版社,2001:151-154.

[3]趙同賀.新型開關(guān)電源典型電路設(shè)計(jì)與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,

2010:50-80.

[4]王水平,賈靜,方海燕等.開關(guān)穩(wěn)壓電源原理及設(shè)計(jì)[M].北京:人民郵電出版社,

2008:1-170

[5]張占松,蔡宣二等.開關(guān)電源的原理與設(shè)計(jì).北京:電子工業(yè)出版社, 2004:1-3.

[6]劉勝利,李龍文.高頻開關(guān)電源新技術(shù)應(yīng)用[M].北京:中國(guó)電力出版社,2008:2-69.

[7]王有緒,許杰等. PIC系列單片機(jī)接口技術(shù)及應(yīng)用系統(tǒng)設(shè)計(jì).北京:北京航空航天大學(xué)出版社,2000:5-8.

[8]田界容.開關(guān)電源電磁干擾的抑制.當(dāng)代電子技術(shù),2005,(8):112-113.

[9]全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽組委會(huì).全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽獲獎(jiǎng)作品選編(2007)[M].北京:北京理工大學(xué)出版社,2008

[10]余孟嘗.數(shù)字電子技術(shù)[M].北京:高等教育出版社,2007:31-62.

    [11]電子技術(shù)基礎(chǔ)模擬部分(第五版).北京:高等教育出版社,2006


  C語(yǔ)言程序源代碼


  1. /*************手工焊板BUCK-BOOST******/
  2. #include <STC12C5A60S2.H>
  3. #include <intrins.h>                    /*use _nop_() function*/
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. #define ADC_FLAG      0X10

  7. /*****************************************
  8. 端口功能設(shè)定
  9. *****************************************/
  10. sbit PWM_1                            =              P1^4;       //PWM1_Boost/Buck
  11. sbit SD_1                              =              P1^3;       //SD1_Boost_Buck
  12. sbit Key_1                            =              P2^1;       //Key_1
  13. sbit Key_2                            =              P2^2;       //Key_2
  14. sbit Key_3                            =              P2^3;       //Key_3

  15. uint ADC_value;
  16. uchar PWM_temp=2;
  17. uchar last_key;                                                        //按鍵變量
  18. uchar channel=0;                                          //第一通道
  19. uchar Caes=0;                                                                      //菜單
  20. uchar  OUT_Current=100;
  21. uint  Battery_voltage;                            //輸入電壓            
  22. uint  Boost_voltage;                            //Boost電壓                           
  23. uint  Boost_Buck_current;              //Buck_Boost電流8位
  24. uint  A_value=90;
  25. bit lock=1;                                       //PWM輸出鎖定
  26. bit ADC_ready=0;                         //ADC完畢
  27. bit K;
  28. void delay();
  29. void Key_1_();
  30. void Key_2_();
  31. void Key_3_();
  32. void init_pca();
  33. void init_timer();
  34. /**********************************************************
  35. 函數(shù)說(shuō)明: 延時(shí)程序
  36. **********************************************************/
  37. void delay(uchar t)
  38. {
  39.               uint j;
  40.               uchar i;
  41.               for(i=0;i<t;i++)
  42.                             for(j=0;j<1000;j++);
  43. }
  44. /**********************************************************
  45. 函數(shù)說(shuō)明: PWM初始化
  46. **********************************************************/
  47. void init_pwm()
  48. {
  49.   CCON = 0;
  50.               CL = 0;
  51.               CH = 0;
  52.               CMOD = 0X08; //0X08:43KHZ // 0X02,22KHZ // 0X0A,10KHZ //
  53.               CCAPM1              =0x42;//8位PWM輸出,無(wú)中斷
  54.               CCAP1L               =CCAP1H =250;//初始化spwm輸出的占空比
  55.               CR=1;
  56. }
  57. /**********************************************************
  58. 函數(shù)說(shuō)明: 中斷 始化函數(shù)
  59. **********************************************************/
  60. void InitADC()
  61. {
  62.               P1M1=0x83;
  63.               P1M0=0x00;
  64.               P1ASF=0X07;                                //選擇ADC通道012
  65.               ADC_RES=0;
  66.               ADC_CONTR=0X88;                               //1110 0000                 E8 開電源,最高速
  67.               EA=1;
  68.               EADC=1;
  69. }
  70. /**************************************
  71. 1602液晶
  72. **************************************/
  73. sbit RS = P2^5;                           
  74. sbit RW = P2^6;
  75. sbit E  = P2^7;
  76. /**************************************
  77. 短延時(shí)
  78. **************************************/
  79. void delay5ms()  
  80. {
  81.     uchar i,v,k;
  82.     for(i=1;i>0;i--)
  83.         for(v=168;v>0;v--)
  84.             for(k=22;k>0;k--);
  85. }
  86. /**************************************
  87. 寫指令
  88. **************************************/
  89. void lcd_Write_com(uchar com)               
  90. {
  91.               RS=0;                              //定義指令寄存器
  92.               RW=0;                                                    //寫允許
  93.               P0=com;                                                                        //寫指令
  94.               delay5ms();              E=1;                            //片選端上拉
  95.               delay5ms();              E=0;                            //下降沿鎖存
  96. }
  97. /**************************************
  98. 寫數(shù)據(jù)
  99. **************************************/
  100. void lcd_write_date(uchar date)            
  101. {
  102.               RS=1;                                                                      //定義數(shù)據(jù)寄存器
  103.               RW=0;                                                                      //寫允許
  104.               P0=date;                                                        //寫數(shù)據(jù)
  105.               delay5ms();              E=1;                            //片選端上拉
  106.               delay5ms();              E=0;                            //下降沿鎖存
  107. }
  108. /**************************************
  109. 顯示程序
  110. **************************************/
  111. void dis_lcd1602(uchar x,uchar y,uchar dat)
  112. {
  113.               uchar add;
  114.               if(y==1)               add=(0x80+x);
  115.               if(y==2)               add=(0xc0+x);
  116.               lcd_Write_com(add);                            //寫指令
  117.               lcd_write_date(dat);              //寫數(shù)據(jù)
  118. }
  119. /**************************************
  120. 液晶初始化
  121. **************************************/
  122. void lcd1602_init()
  123. {
  124.               lcd_Write_com(0x38);              //設(shè)置8位格式,2行,5*7
  125.               lcd_Write_com(0x01);              //清屏
  126.               lcd_Write_com(0x0c);              //整體顯示,關(guān)光標(biāo),不閃爍
  127.               lcd_Write_com(0x06);              //設(shè)定輸入方式,增量不移位
  128.               lcd_Write_com(0x80);              //初始坐標(biāo)
  129. }
  130. /**************************************
  131. 液晶顯示漢字程序
  132. **************************************/
  133. void hz_lcdDis(uchar x,uchar y,uchar *p) //漢字顯示
  134. {
  135.    uchar i=0,temp;
  136.    if(x)temp = 0x40;   else temp = 0;
  137.    for(i=y;*p!='\0';i++,p++)
  138.    {
  139.                             lcd_Write_com(i|0x80+temp);
  140.                             lcd_write_date(*p);
  141.                             delay5ms();                                          
  142.    }
  143. }
  144. /**************************************
  145. 液晶顯示數(shù)字程序
  146. **************************************/
  147. void  num_lcdDis(uchar X,uchar Y,uint num,uchar n)            
  148. {
  149.               uint i=0,temp,hang;   
  150.               n +=1;
  151.                  if(X)hang = 0x40;else hang = 0;
  152.                  for(i=(n-1);i>0;i--)
  153.     {               
  154.                               lcd_Write_com((i+Y-1)|0x80+hang);                //從個(gè)位開始顯示
  155.                               temp = num%10+0x30;
  156.                               lcd_write_date(temp);            
  157.                             delay5ms();
  158.                               num/=10;                                                                     
  159.               }            
  160. }
  161. /**********************************************************
  162. 函數(shù)說(shuō)明: 平均濾波函數(shù)
  163. **********************************************************/
  164. #define N 50
  165. uint Filter(uint adc_data)
  166. {
  167.               uint value=0;
  168.               uchar count,count_ADC;
  169.               for(count=0;count<N;count++)
  170.               {
  171.                             for(count_ADC=0;count_ADC<2;count_ADC++)
  172.                             {
  173.                                           while(!ADC_ready){}
  174.                                           ADC_ready=0;
  175.                             }
  176.                             value+=adc_data;               
  177.               }
  178.               return (value);
  179. }
  180. /**********************************************************
  181. 函數(shù)說(shuō)明:按鍵延時(shí)防抖動(dòng)
  182. P3^5       Key_1
  183. P3^6       Key_2
  184. P3^7       Key_3

  185. **********************************************************/
  186. void key_scan()
  187. {
  188.               uchar temp;
  189.               temp = P2&0x0F;
  190.               if(temp != 0x0F)
  191.               {
  192.                             delay(10);
  193.                             temp = P2&0x0F;
  194.                             if(temp!= 0x0F)
  195.                             {
  196.                                           switch(temp)
  197.                                           {
  198.                                                         case 0x0D: Key_1_();              break;              //21
  199.                                                         case 0x0B: Key_2_();              break;              //22
  200.                                                         case 0x07: Key_3_();              break;              //23
  201.                                                         default:break;
  202.                                           }
  203.                             }
  204.               }
  205. //              last_key = temp;
  206. }

  207. /**********************************************************
  208. 函數(shù)說(shuō)明: +按鍵程序
  209. **********************************************************/
  210. void Key_1_()
  211. {
  212.               if(K)              {SD_1=0;              lock=1;                            CCAP1L               =CCAP1H =128;              hz_lcdDis(0,11,"Stop!");}
  213.               else               {SD_1=1;              lock=0;              hz_lcdDis(0,11,"Start");}
  214.               K=~K;            
  215. }
  216. void Key_2_()
  217. {
  218.               OUT_Current=OUT_Current+1;
  219.               if(OUT_Current>200)OUT_Current=200;            
  220. }
  221. void Key_3_()
  222. {
  223.               OUT_Current=OUT_Current-1;
  224.               if(OUT_Current<20)OUT_Current=20;                           
  225. }
  226. /**********************************************************
  227. 函數(shù)說(shuō)明: 主函數(shù)
  228. **********************************************************/
  229. void main(void)
  230. {
  231.               uint U1,U2,u1,u2,u3,i1;
  232.               SD_1=0;
  233.               lcd1602_init();
  234.               hz_lcdDis(0,4,"Welcome!");
  235.               init_pwm();
  236.               InitADC();
  237.               delay(250);            
  238. //              delay(250);
  239.               EA=1;//開總中斷
  240.               lcd_Write_com(0x01);              //清屏
  241. //              SD_1=1;
  242.               hz_lcdDis(0,0,"IN=  . V   Stop!");
  243.               hz_lcdDis(1,0,"OU=  . V I= .  A");
  244.               while(1)//主循環(huán)
  245.               {                           
  246.                             U1=Filter(Battery_voltage);            
  247.                             U2=Filter(Boost_voltage);
  248. //                            I1=Filter(Boost_Buck_current);              //檢測(cè)Boost_Buck電流
  249. //                            num_lcdDis(0,11,OUT_Current,3);
  250. //                            num_lcdDis(0,3,U1,5);
  251. //                            num_lcdDis(1,3,U2,5);
  252. //                            num_lcdDis(1,11,I1,5);
  253.                             u1=U1/91;              //檢測(cè)電池電壓  1:2采樣電阻                                                                                   
  254.                             num_lcdDis(0,3,u1/10,2);
  255.                             num_lcdDis(0,6,u1%10,1);            
  256.                             u2=U2/172;
  257.                             num_lcdDis(1,3,u2/10,2);
  258.                             num_lcdDis(1,6,u2%10,1);
  259.                             num_lcdDis(1,11,OUT_Current/100,1);
  260.                             num_lcdDis(1,13,OUT_Current%100,2);
  261. //                            if((u2-u1)<40)               hz_lcdDis(0,10,"Error!");
  262. //                            else                                            hz_lcdDis(0,10,"OK    ");
  263.                             key_scan();
  264.               }
  265. }
  266. /****************************************************************
  267. 函數(shù)說(shuō)明: ADC中斷
  268. 實(shí)現(xiàn)功能:執(zhí)行ADC采集并做電壓和電流的調(diào)整。
  269. ****************************************************************/
  270. void ADC_interrupt()interrupt 5                            //ADC轉(zhuǎn)換完后ADC_FLAG由硬件自動(dòng)置位,須由軟件清零
  271. ……………………

  272. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

完整論文下載(word格式 可編輯):
基于單片機(jī)的恒流開關(guān)電源.docx (3.83 MB, 下載次數(shù): 304)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏17 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:194774 發(fā)表于 2017-7-18 16:04 | 只看該作者
NICE,居然有論文
回復(fù)

使用道具 舉報(bào)

板凳
ID:194774 發(fā)表于 2017-7-18 18:52 | 只看該作者
最近一直找15年國(guó)賽的相關(guān)論文,沒(méi)想到在這里找到了,開心,受教了
回復(fù)

使用道具 舉報(bào)

地板
ID:216892 發(fā)表于 2017-12-13 16:03 | 只看該作者
樓主 有沒(méi)有這個(gè)的仿真?求
回復(fù)

使用道具 舉報(bào)

5#
ID:254630 發(fā)表于 2017-12-14 08:37 | 只看該作者
本帖最后由 秘密方法 于 2017-12-14 09:20 編輯

相當(dāng)有水平. 個(gè)人感覺(jué)圖紙中電流采樣(0.02歐姆得到的電壓)電路 圖3-6 中與 LOAD(負(fù)載)相接的網(wǎng)絡(luò)應(yīng)該為 電源的功率電壓輸出端,不應(yīng)該為"VCC". 這個(gè)估計(jì)是筆誤.   
回復(fù)

使用道具 舉報(bào)

6#
ID:56696 發(fā)表于 2018-10-8 16:36 | 只看該作者
挺不錯(cuò)的,贊一個(gè)。
回復(fù)

使用道具 舉報(bào)

7#
ID:671962 發(fā)表于 2020-1-8 20:51 | 只看該作者
演技派 發(fā)表于 2017-12-13 16:03
樓主 有沒(méi)有這個(gè)的仿真?求

你好我也想要這個(gè)仿真,你有嗎
回復(fù)

使用道具 舉報(bào)

8#
ID:648281 發(fā)表于 2020-1-8 22:53 | 只看該作者
ssssmmyy 發(fā)表于 2020-1-8 20:51
你好我也想要這個(gè)仿真,你有嗎

你好!這個(gè)電路內(nèi)的相關(guān)器件沒(méi)法仿真,所以只能做實(shí)物
回復(fù)

使用道具 舉報(bào)

9#
ID:452173 發(fā)表于 2020-2-4 01:14 | 只看該作者
收藏了,謝謝分享,內(nèi)容很詳細(xì)
回復(fù)

使用道具 舉報(bào)

10#
ID:406132 發(fā)表于 2020-6-2 15:41 | 只看該作者
這。。。非常不錯(cuò),雖然不會(huì)軟件。。。
回復(fù)

使用道具 舉報(bào)

11#
ID:58730 發(fā)表于 2020-8-4 14:32 | 只看該作者
謝謝分享,內(nèi)容很詳細(xì)
回復(fù)

使用道具 舉報(bào)

12#
ID:416121 發(fā)表于 2020-8-21 11:06 | 只看該作者
IR2104沒(méi)有下管,確定上管能自舉?
回復(fù)

使用道具 舉報(bào)

13#
ID:128989 發(fā)表于 2020-10-18 22:17 | 只看該作者
學(xué)生的DIY小玩意,能做這種水平不錯(cuò)了
回復(fù)

使用道具 舉報(bào)

14#
ID:4572 發(fā)表于 2021-4-25 16:52 | 只看該作者
謝謝分享,內(nèi)容很詳細(xì)
回復(fù)

使用道具 舉報(bào)

15#
ID:1100061 發(fā)表于 2023-11-16 23:49 | 只看該作者
這個(gè)很棒呀
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美国产毛片在线 | 国产综合av| 欧美国产日韩一区二区三区 | 欧美综合一区 | 欧美黑人一区二区三区 | 青青草亚洲 | 99久久精品免费看国产四区 | 在线观看精品 | 91免费看片| 欧美一区二区三区在线播放 | 女同久久另类99精品国产 | 国产激情在线 | 最新国产精品精品视频 | 国产视频第一页 | 国产精品免费av | 一区二区三区在线播放视频 | 亚洲国产成人精品一区二区 | 国产亚洲一区二区三区 | 在线播放国产一区二区三区 | 亚洲成人一区二区三区 | www.亚洲精品 | 天天综合久久 | 91亚洲精品国偷拍自产在线观看 | 激情综合五月 | 激情一区二区三区 | 欧美在线小视频 | 91精品国产欧美一区二区成人 | 高清黄色网址 | 天天操综合网 | 91在线播| 久久精品小视频 | 特黄特色大片免费视频观看 | 国产精品高潮呻吟久久av黑人 | 四虎成人免费电影 | 国产亚洲网站 | 九九伦理片 | 天堂视频免费 | 玖玖综合网 | 一区二区三区中文字幕 | 国产精品我不卡 | 欧美国产亚洲一区二区 |