開關(guān)電源模塊并聯(lián)供電系統(tǒng)設(shè)計(jì)_第1頁
開關(guān)電源模塊并聯(lián)供電系統(tǒng)設(shè)計(jì)_第2頁
開關(guān)電源模塊并聯(lián)供電系統(tǒng)設(shè)計(jì)_第3頁
開關(guān)電源模塊并聯(lián)供電系統(tǒng)設(shè)計(jì)_第4頁
開關(guān)電源模塊并聯(lián)供電系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、選修課設(shè)計(jì)(論文)題 目開關(guān)電源模塊并聯(lián)供電系統(tǒng)設(shè)計(jì)專 業(yè)電子信息工程班 級111 112班姓 名鄧逸博 孫浙飛 汪超指導(dǎo)教師王章權(quán)所在學(xué)院信息學(xué)院完成時(shí)間:2014年5月開關(guān)電源模塊并聯(lián)供電系統(tǒng)設(shè)計(jì)電子信息工程專業(yè) 鄧逸博 孫浙飛 汪超摘 要:本設(shè)計(jì)設(shè)計(jì)制作的是開關(guān)電源模塊并聯(lián)供電系統(tǒng), 能夠廣泛應(yīng)用在小功率 及各種電子設(shè)備領(lǐng)域,能夠輸出 8V定壓,功率可達(dá)到16W并根據(jù)要求對兩路電流 進(jìn)行按比例分配。本系統(tǒng)由DC/DC莫塊,均流、分流模塊,保護(hù)電路組成。DC/DC莫塊以IRF9530芯片為開關(guān),配以BUCK勺外圍電路實(shí)現(xiàn)24V-8V的降壓與穩(wěn)壓。采用 LM328比較電路實(shí)現(xiàn)電流和電壓的檢測

2、, 控制由DC/DC模塊構(gòu)成的并聯(lián)供電系統(tǒng)均流 與分流工作模式,通過比較器電路實(shí)現(xiàn)過流保護(hù)。同時(shí)進(jìn)行LCD1602液晶同步顯示、獨(dú)立鍵盤輸入控制。 輸入的值經(jīng)過單片機(jī)處理程序來控制輸出電壓, 且輸出電壓和電 流可實(shí)時(shí)顯示。關(guān)鍵詞:DC/DC模塊,BUCK電流分流一、緒論 1二、設(shè)計(jì)的目標(biāo)與基本要求 1(一)、設(shè)計(jì)目標(biāo) 1(二)、基本要求 1三、系統(tǒng)設(shè)計(jì) 2(一)、系統(tǒng)框圖 2(二)硬件設(shè)計(jì)與方案選擇 21、單片機(jī)選擇 22、主電路選擇 33、驅(qū)動電路圖 44、輔助電源 45、電流、電壓采樣 56、顯示、按鍵 5(三)、軟件設(shè)計(jì) 51、主程序 52、按鍵程序 63、液晶程序 64、米樣程序 75

3、、中斷、PID流程圖 8四、調(diào)試過程 8(一)、遇到的問題及解決辦法 8(二)、數(shù)據(jù)分析 9五、體會與展望 10參考文獻(xiàn) 10附錄 10附錄1 .整體電路圖 10附錄2 .程序代碼 10一、緒論 分布式直流開關(guān)電源系統(tǒng)取代傳統(tǒng)的集中式直流開關(guān)電源系統(tǒng)已成為大功率電 源系統(tǒng)的發(fā)展方向: (1)單臺大功率電源容易受技術(shù)、成本的限制; (2)單臺直流開 關(guān)電源故障會導(dǎo)致整個系統(tǒng)的故障,而分布式電源系統(tǒng)由若干電源模塊并聯(lián)組成,某 個電源模塊故障不會導(dǎo)致整個電源故障; (3)可根據(jù)實(shí)際負(fù)荷的變化,自動確定需要 投入運(yùn)行的模塊數(shù)量或者解列退出的模塊數(shù)量,對變負(fù)荷運(yùn)行很有意義;(4)由于多個電源模塊并聯(lián)運(yùn)行

4、,使每個電源模塊承受的電應(yīng)力較小,具有較高的運(yùn)行效率,且 具有較好的動態(tài)和靜態(tài)特性。分布式電源系統(tǒng)需要解決的主要問題是實(shí)現(xiàn)多個并聯(lián)運(yùn) 行的模塊輸出相同的功率。隨著通信電源技術(shù)的高速發(fā)展,電力電子設(shè)備與人們的工 作、生活的關(guān)系日益密切,而通信電子設(shè)備都離不開可靠的電源。進(jìn)入 20世紀(jì) 80 年 代,計(jì)算機(jī)電源全面實(shí)現(xiàn)了開關(guān)電源化,率先完成計(jì)算機(jī)的電源換代;進(jìn)入 20 世紀(jì) 90 年代,開關(guān)電源相繼進(jìn)入各種電子、電氣設(shè)備領(lǐng)域,程控交換機(jī)、通信、電力檢測 設(shè)備電源、控制設(shè)備電源等都已廣泛使用了開關(guān)電源,更促進(jìn)了開關(guān)電源技術(shù)的迅速 發(fā)展。二、設(shè)計(jì)的目標(biāo)與基本要求(一)、設(shè)計(jì)目標(biāo)設(shè)計(jì)并制作一個由兩個額定

5、輸出功率均為16W的8V DC/DC模塊構(gòu)成的并聯(lián)供電系統(tǒng)(見圖 2.1 )圖 2.1 兩路 buck 電路并聯(lián)供電(二)、基本要求(1)調(diào)整負(fù)載電阻至額定輸出功率工作狀態(tài),供電系統(tǒng)的直流輸出電壓UO=8.00.4V。在額定輸出功率工作狀態(tài)下,供電系統(tǒng)的效率不低于60%。(2)調(diào)整負(fù)載電阻,保持輸出電壓UO=8.00.4V,使兩個模塊輸出電流之和10 =1.0A 且按 I1:I2=1:1 模式自動分配電流,調(diào)整負(fù)載電阻,保持輸出電壓UO=8.00.4V,使兩個模塊輸出電流之和 IO =1.5A 且按 I1:I2= 1:2 模式自動分配電流,每個模塊輸 出電流的相對誤差絕對值不大于 5%。調(diào)整負(fù)

6、載電阻,保持輸出電壓 UO=8.0 0.4V, 使兩個模塊輸出電流之和 IO =4.0A 且按 I1:I2=1:1 模式自動分配電流,每個模塊的 輸出電流的相對誤差的絕對值不大于 2%(3)調(diào)整負(fù)載電阻,保持輸出電壓 UO=8.0 0.4V,使負(fù)載電流10在1.53.5A之間 變化時(shí),兩個模塊的輸出電流可在(0.52.0 )范圍內(nèi)按指定的比例自動分配,每個 模塊的輸出電流相對誤差的絕對值不大于 2%(4)具有負(fù)載短路保護(hù)及自動恢復(fù)功能,保護(hù)閾值電流為4.5A (調(diào)試時(shí)允許有土 0.2A 的偏差)。在額定輸出功率工作狀態(tài)下,進(jìn)一步提高供電系統(tǒng)效率。三、系統(tǒng)設(shè)計(jì)(一)、系統(tǒng)框圖圖3.1系統(tǒng)框圖系統(tǒng)

7、說明:以單片機(jī)為核心處理元件,DC-DC變換器為主電路。按鍵、顯示便于 人機(jī)交互。驅(qū)動電路將單片機(jī)和 DC-DC變換器隔離,輔助電源給單片機(jī)和采樣電路供 電。單片機(jī)將電壓電流通過采樣電路,運(yùn)放采樣回來在內(nèi)部進(jìn)行A/D處理,然后將數(shù)據(jù)輸出液晶顯示。在內(nèi)部進(jìn)行算法調(diào)整。使整個系統(tǒng)穩(wěn)定,并達(dá)到基本要求。整個系 統(tǒng)設(shè)計(jì)如上圖3.1所示。(二八硬件設(shè)計(jì)與方案選擇1、單片機(jī)選擇方案一:使用89C51單片機(jī)指令簡單,易學(xué)易懂,外圍電路簡單,硬件設(shè)計(jì)方便, I0 口操作簡單,無方向寄存器,資源豐富,價(jià)格便宜、容易購買,資料豐富容易查 到,程序燒寫簡單,但要外接 A/D、D/A芯片,來實(shí)現(xiàn)對整個供電系統(tǒng)的控制,

8、需要 占用較多的I/O接口,會使普通單片機(jī)承載過大的數(shù)據(jù)處理任務(wù),功耗較大。方案二:使用ATmega16 ATmegal6卜設(shè)特點(diǎn):兩個具有獨(dú)立的預(yù)分頻器和比較器 功能的8位定時(shí)器/計(jì)數(shù)器,兩個具有預(yù)分頻器、比較功能和撲捉功能的16位定時(shí)器/計(jì)數(shù)器,具有獨(dú)立預(yù)分頻器的實(shí)時(shí)時(shí)鐘計(jì)數(shù)器, 兩路8位 PWM4路分辨率可編程(216 位)的PWMt出比較調(diào)制器,8路 10位 ADC面向字節(jié)的兩線接口 IA2C總線,兩個可 編程的串行USART可工作于主機(jī)/從機(jī)模式的SPI串行接口,具有獨(dú)立片內(nèi)振蕩器的 的可編程看門狗定時(shí)器,片內(nèi)模擬比較器。特殊的處理器特點(diǎn):上電復(fù)位以及可編程 的掉電檢測,片內(nèi)經(jīng)過標(biāo)定

9、的 RC振蕩器,片內(nèi)/片外中斷源,6種睡眠模式,可以通 過軟件進(jìn)行選擇的時(shí)鐘頻率,通過熔絲位可以選擇兼容模式,全局上拉禁止功能。結(jié)合前兩個方案優(yōu)點(diǎn),經(jīng)過方案比較與論證,最終確定使用方案二,因?yàn)?ATmega16 速度快 自帶PWM自帶AD而用89C51會使電路更加復(fù)雜與不穩(wěn)定所以,用ATmega16 單片機(jī)和其它控制器電路同實(shí)現(xiàn)整個系統(tǒng)的控制。2、主電路選擇方案一:有一種型號為LM2956的降壓開關(guān)電壓調(diào)節(jié)器,能夠輸出3A的驅(qū)動電流, 同時(shí)具有很好的線性和負(fù)載調(diào)節(jié)特性,該器件內(nèi)部集成頻率補(bǔ)償和固定頻率發(fā)生器, 極大地簡化了開關(guān)電源電路的設(shè)計(jì)。方案二:采用SG3525自帶脈寬調(diào)制電源芯片來設(shè)計(jì)

10、DC-DC降壓轉(zhuǎn)換電路,SG3525 簡單可靠及使用方便靈活,輸出驅(qū)動為推拉輸出形式,增加了驅(qū)動能力;內(nèi)部含有欠 壓鎖定電路,死區(qū)時(shí)間可調(diào)、軟啟動控制電路、PWN鎖存器,有過流保護(hù)功能,頻率可 調(diào),同時(shí)能限制最大占空比。由此設(shè)計(jì)而成的電路易于實(shí)現(xiàn)脈寬調(diào)制,然而在真正使 用時(shí)會發(fā)現(xiàn),為得到要求的電壓輸出值,開關(guān)管 S的參數(shù)選取相當(dāng)不易。方案三:將經(jīng)過隔離變壓器,整流濾波后得到的24VDC通過BUCK!壓電路進(jìn)行DC-DC轉(zhuǎn)換,由ATmega16單片機(jī)產(chǎn)生PWM控制其占空比,從而得到要求的直流電壓。 此方案僅用一塊控制芯片不但可以實(shí)現(xiàn)對 BUCK電路的控制,而且可以結(jié)合A/D和D/A 對輸出電壓進(jìn)

11、行調(diào)整與顯示。由于ATmega16單片機(jī)自帶能夠產(chǎn)生脈寬調(diào)制所需的 PWM 信號的端口,在實(shí)際制作中用起來比較方便。ATmega16單片機(jī)自帶8路10位A/D轉(zhuǎn)換。結(jié)合前兩個方案優(yōu)點(diǎn),經(jīng)過方案比較與論證,最終確定使用方案三如圖 3.2,因 為ATmega16單片機(jī),自帶PWM模塊,可以輸出PW方波控制電路,節(jié)約芯片成本, 也可實(shí)現(xiàn)AD轉(zhuǎn)換。用單片機(jī)和其它控制器電路同實(shí)現(xiàn)整個系統(tǒng)的控制。3.2主電路圖3、驅(qū)動電路圖方案一:單片機(jī)輸出 PWM采用IR2101驅(qū)動DC-DC電路中的IRF9530,控制輸出 電壓。方案二:先采用光耦TLP250和單片機(jī)進(jìn)行隔離,有效保護(hù)單片機(jī),之后用IRF3205 去

12、驅(qū)動M0管IRF9530,控制輸出電壓。結(jié)合兩種方案的對比選擇方案二如圖 3.3,因?yàn)榉桨付胁捎霉怦?,將單片機(jī)與 主電路隔離,能夠有效保護(hù)單片機(jī),而且也能使正常使電路工作。圖3.3驅(qū)動電路圖4、輔助電源方案一:采用集成的三端穩(wěn)壓集成芯片,7815和7805分別給光耦和運(yùn)放,還有單片機(jī)供電,7815內(nèi)含過流,過熱,過載保護(hù)電路。方案二:采用LM257研關(guān)穩(wěn)壓集成芯片,它內(nèi)部集成了一個固定的振蕩器,是 一種高效的穩(wěn)壓芯片,大多數(shù)情況下無需加散熱片。內(nèi)部有完善的保護(hù)電路,包括電 流限制及熱關(guān)斷電路等。它可以根據(jù)用戶要求選擇輸出電壓,可輸出3.3V,5V, 12V,15V。然后再經(jīng)過7805產(chǎn)生5V

13、電壓。結(jié)合兩種方案的對比選擇方案二如圖 3.4,因?yàn)榉桨付械腖M2575的是可調(diào)節(jié)輸 出電壓的芯片,方便調(diào)控,而且它內(nèi)部有電壓基準(zhǔn)比較,使輸出的電壓能夠準(zhǔn)確并穩(wěn) 定,比7815要精確,且性能好。圖3.4輔助電源電路圖5、電流、電壓采樣采樣模塊是輸出電壓經(jīng)過采樣回來,形成一個負(fù)反饋經(jīng)過單片機(jī)內(nèi)部A/D進(jìn)行 處理,然后使輸出更加穩(wěn)定和準(zhǔn)確。電壓采樣模塊直接采用LM358運(yùn)放如圖3.5,將輸出的電壓縮小一定倍數(shù)后,然后送給單片機(jī)處理判斷。電流采樣是經(jīng)過0.1歐/4瓦的采樣電阻后,縮小一定倍數(shù),然后經(jīng)過一個差分電路,將電壓值送入單片機(jī)進(jìn)行 處理如圖3.6。圖3.5電壓采樣電路圖圖3.6電流采樣電路圖

14、6、顯示、按鍵顯示部分采用字符型液晶1602,能夠同時(shí)顯示16x02即32個字符。16個引腳,3個 控制引腳,8位雙向數(shù)據(jù)端引腳。具有微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧的 特點(diǎn)。用戶可以對EN RW RS的數(shù)據(jù)進(jìn)行編程,然后通過 D0D7輸出顯示數(shù)據(jù)。其 引腳功能圖見下表6.1表6.1 1602引腳功能圖按鍵部分采用四個獨(dú)立的按鍵,分別控制占空比的加和減,對輸出的電壓和電流進(jìn)行 控制,使輸出能夠達(dá)到期望的要求,其按鍵功能表如表6.2 o表6.2按鍵功能表鍵名S1S2S3S4功能PWM加 0.2%PWM減 0.2%PWM加 0.2%PWM減 0.2%CPU端 口號PD0PD1PD2PD3(三

15、)、軟件設(shè)計(jì)1、主程序如圖3.7為主程序流程圖,一開始給系統(tǒng)各部分初始化,包括按鍵初始化,液晶初始 化,PWM初始化,AD采樣初始化,中斷初始化,然后在進(jìn)入大循環(huán),在循環(huán)內(nèi)進(jìn)行數(shù) 據(jù)的顯示,包括當(dāng)前輸入的占空比為多少,當(dāng)前采樣回來的數(shù)字量和實(shí)際的電壓值為 多少。還有按鍵程序,和 AD采樣。同時(shí)每10毫秒進(jìn)入定時(shí)器0中斷進(jìn)行調(diào)整。圖3.7主程序流程圖2、按鍵程序按鍵程序流程圖如圖3.8所示。按鍵采用四個獨(dú)立的按鍵,分別控制PWM1 PWM2勺加和減,當(dāng)有鍵按下時(shí),掃描按鍵,然后進(jìn)入判斷。判斷當(dāng)前寄存器對應(yīng)的值是否大 于了設(shè)定的上限值,如果沒有則數(shù)值加 1,如果達(dá)到了則鉗位在最大的上限值。然后 返

16、回?cái)?shù)據(jù)。通過按鍵程序,可以控制占空比的調(diào)節(jié)。按鍵開始YPD0是否按下?PD1是否按下?YfPD2是否按下?NPD3是否按下?結(jié)束OCR1A+1OCR1A265&O 丫 旨OCR1A=265OCR1B+1CR1B265? /?IFOCR1B=265NN0CR1A-10CR1B-1OCR1A+1OCR1B-1OCR1A-1OCR1B+1丫卜CR1AV240&OCR1B261|OC R1B260?OCR1A=261OCR1B=251圖3.8按鍵程序流程圖3、液晶程序圖3.8為1602液晶屏的程序框圖,1602由3個控制引腳,8位雙向數(shù)據(jù)端引腳控制 顯示的內(nèi)容和位置。因此,這部分程序主要有初始化函數(shù),

17、寫命令函數(shù)和寫數(shù)據(jù)函數(shù) 組成。初始化函數(shù)主要對液晶屏的顯示模式進(jìn)行設(shè)定,寫命令函數(shù)主要是對顯示的位 置和顯示的方式進(jìn)行設(shè)置,寫數(shù)據(jù)函數(shù)是決定顯示的內(nèi)容。寫命令寫數(shù)據(jù)初始化開始開始圖3.8 1602程序流程圖4、米樣程序如圖3.9是采樣程序流程圖。一開始配置 AD寄存器,然后啟動AD寄存器,然后將采 樣回來的數(shù)據(jù)組合成10位的數(shù)據(jù),然后采樣8次,去頭去尾后,對其求平均值。將 數(shù)據(jù)處理后,給液晶顯示。然后進(jìn)行電壓判斷,是否小于要求的最小值,如果是的話 進(jìn)行鉗位,然后是否小于設(shè)定的最大值,是的話,就是在要求范圍內(nèi),那就進(jìn)行 PID 算法的調(diào)整,進(jìn)行電流的分流。如果大于最大值的話,就進(jìn)行鉗位。圖 3.

18、9 AD 采樣程序流程圖5、中斷、 PID 流程圖如圖 3.10 和 3.11 分別是中斷流程圖和 PID 算法程序流程圖。定時(shí)器 0 中斷定時(shí) 10 毫秒溢出中斷,在中斷中進(jìn)行 PID 調(diào)整,和電壓反饋調(diào)整。 PID 算法是根據(jù)公式,對 采樣電阻采樣回來的電壓進(jìn)行反饋計(jì)算。根據(jù)對 P,I,D 三個參數(shù)的設(shè)置,然后結(jié)合算 法公式,對輸出的數(shù)據(jù)進(jìn)行不斷的調(diào)整,達(dá)到要求的值。圖 3.10 定時(shí)器 0 中斷 圖 3.11 PID 算法流程圖四、調(diào)試過程(一)、遇到的問題及解決辦法(1)、在對電路板進(jìn)行設(shè)計(jì),做板子的時(shí)候,經(jīng)過封塑機(jī)出來后的板子,然后用腐蝕 劑進(jìn)行腐蝕,得到了一塊單面板,當(dāng)我們把器件焊

19、上去的時(shí)候發(fā)現(xiàn),跟我們預(yù)期的反 了一下,所有的器件都反了一下,這樣子,整個電路就不能用了。經(jīng)過我們的討論和 思考,我們認(rèn)為是我們在打印出油印紙的時(shí)候沒有將它鏡像,使整塊板子就是按照反 面的印了出來,經(jīng)過我們鏡像后,發(fā)現(xiàn)和我們所需要的板子是一樣的了,所有的元器 件都能按照原來的位置進(jìn)行裝配。而且板子也能正常工作。(2)、在整個電路都做出來以后,進(jìn)行模塊調(diào)試的時(shí)候發(fā)現(xiàn)方波的波形并不是很好, 有一點(diǎn)的曲線,經(jīng)過老師上課的講解指導(dǎo)了是,柵極旁邊的電阻阻值太大,因?yàn)橛蟹?布電容,所有會充放電,使波形不是很理想。經(jīng)過計(jì)算后選取了一個合適的阻值,使 波形能夠達(dá)到電路的要求。還有在整體調(diào)試的時(shí)候,發(fā)現(xiàn)上面一路

20、的測試點(diǎn),一直是 0,下面一路一直是 1A 左右,經(jīng)過主電路排查后,發(fā)現(xiàn)沒有問題,然后對測試點(diǎn)進(jìn)行 排查,發(fā)現(xiàn)測試點(diǎn)的夾子松掉了, 使電流都往下去了。 將夾子焊好后, 電路正常工作。(3)、在進(jìn)行程序調(diào)試的時(shí)候,一直在使用內(nèi)部的 1M 晶振,所以一直精度上不去, 調(diào)節(jié)都是很粗的調(diào)節(jié),電流一直達(dá)不到指標(biāo)。還有液晶刷新很慢,按鍵要按很久才能 用。后來查閱了資料,發(fā)現(xiàn)在燒寫程序的時(shí)候要勾上熔絲位,如果使用的是8M以上的外部晶振的話,那就要把熔絲位全部勾上。這樣才是在使用外部的16M晶振。將熔絲位勾上后,調(diào)節(jié)程序后,發(fā)現(xiàn)精度大大的提升了。能夠達(dá)到基本的要求。還有在對 PID參數(shù)設(shè)置的時(shí)候,一開始沒有頭

21、緒,隨便調(diào),后來看論壇和同學(xué)談?wù)?,發(fā)現(xiàn)要一 個一個參數(shù)的調(diào),在經(jīng)過多次實(shí)驗(yàn)后,將 PID參數(shù)調(diào)整好了,是指標(biāo)達(dá)到了要求。(二)、數(shù)據(jù)分析表4.1和表4.2是在電流1:1情況下,比例調(diào)節(jié)和PI調(diào)節(jié)的數(shù)據(jù)對比表4.1負(fù)載為8.9 Q ,兩模塊電流按1:1分配(比例反饋)I1 (A)I2 (A)I 總(A)Uo (V)給定值0.50. 51.08.0測量值0.5050.5151.0028.24絕對誤差1%3%0.2%3%表4.2負(fù)載為8.5 Q ,兩模塊電流按1:1分配(PI反饋)I1 (A)I2 (A)I 總(A)Uo (V)給定值0.50. 51.08.0測量值0.4940.5081.0078.

22、08絕對誤差1.2%1.7%0.7%1%表4.3和表4.4是在電流1:2情況下,比例調(diào)節(jié)和PI調(diào)節(jié)的數(shù)據(jù)對比表4.3負(fù)載為7.0 Q,兩模塊電流按1:2分配情況(比例反饋)I1 (A)I2 (A)I 總(A)Uo (V)給定值0.51.01.58.0測量值0.4620.9301.4977.71絕對誤差7.6%7%0.2%3.6%表4.4負(fù)載為5.9 Q,兩模塊電流按1:2分配情況(PI反饋)I1 (A)I2 (A)I 總(A)Uo (V)給定值0.51.01.58.0測量值0.5080.9811.5027.60絕對誤差1.6%1.9%0.2%5%對比表4.1和表4.2可以看出,同樣是1: 1的

23、電流分配情況下,比例調(diào)節(jié)的誤差在5沖內(nèi),達(dá)到了基本的要求,但是在PI調(diào)節(jié)下,可以看出誤差精度已經(jīng)達(dá)到了2%勺要求。對比表 4.3 和表 4.4 可以看出,同樣是 1:2 的電流分配情況下,比例調(diào)節(jié)的誤差已經(jīng) 超出了 5%的要求,而在 PI 調(diào)節(jié)下精度達(dá)到了 2%以內(nèi)。 對比著兩組數(shù)據(jù),可以看出了在 PI 的調(diào)節(jié)下精度大大的提升,說明了 PID 算法在控 制方面的優(yōu)勢,使整個系統(tǒng)更加完善。五、體會與展望 通過這次選修課的學(xué)習(xí),學(xué)到了專業(yè)知識方面的一些知識。整個學(xué)習(xí)的過程是很 重要的。由于這個學(xué)期在學(xué)習(xí)電力電子這門課,而課題又正好和電力電子相關(guān)知 識有關(guān),所以對于這次的課程,通過對整個系統(tǒng)的設(shè)計(jì),

24、測試,調(diào)整。更好的了解了 電力電子和開關(guān)電源相關(guān)的知識,也更深入的學(xué)習(xí)到了一些課堂上無法學(xué)習(xí)到的東 西。將課堂的理論知識和實(shí)踐想結(jié)合,將學(xué)習(xí)到的東西更加印象深刻,不用去死記硬 背,能夠靈活運(yùn)用。 對于編寫程序, 整體的邏輯性還要加強(qiáng)。 流程圖要寫好再寫程序。 對于展望,希望能夠在以后的學(xué)習(xí)中把硬件方面學(xué)的更好,能夠把不足給彌補(bǔ)。在程 序方面多學(xué)習(xí)一下別人的算法。學(xué)的更好,希望一次比一次有進(jìn)步。參考文獻(xiàn)1 程漢湘,武小梅電力電子技術(shù)第二版 . 科學(xué)出版社2 譚浩強(qiáng).C程序設(shè)計(jì).第三版,北京:清華大學(xué)出版社,2008.11 .3 童詩白,華成英 . 模擬電子技術(shù),第四版北京:高等教育出版社, 20

25、06.5 4 閻石.數(shù)字電子技術(shù)基礎(chǔ),第五版 . 北京:高等教育出版社, 2006.5 .5 蔣燕君 . 自動控制原理 . 重慶大學(xué)出版社 ,2008.1附錄附錄 1.整體電路圖附錄 2.程序代碼main.c*#include #include#include1602.h #includekey.h#includead.h #includepid.h#define uchar unsigned char#define uint unsigned int#pragma interrupt_handler timer0_ovf_isr:10定時(shí)器 0 中斷 */void timer0_init(v

26、oid)TCCR0 = 0x00; /TCNT0 = 0x64;TIMSK = 0x01; /SREG |= BIT(7); /停止定時(shí)器/ 初始值,每 10毫秒進(jìn)一次中斷 允許中斷允許全局中斷外中斷 0 函數(shù) */void timer0_ovf_isr(void)TCNT0 = 0x64;pid1_calculating(); /PID pid2_calculating(); /PID com_vol(); /調(diào)整 OCR1A調(diào)整 OCR1B 電壓反饋設(shè)置輸出 */void KPWM(void)PORTD|=BIT(4)|BIT(5); DDRD|=BIT(4)|BIT(5);TCCR1A

27、= 0xA2; / TCCR1B = 0x11; / ICR1 = 800; / OCR1A = 255; OCR1B = 255; void main() KPWM();LCD_init(); key_init(); timer0_init(); adcport_init();while(1)Display_PWM(); press(); / display_AD0(); /兩路pwm匹配清零相位修正PW模式,位數(shù)可調(diào),預(yù)分頻1 此數(shù)為占空比占空比16 位 PWM 16M晶振,clk/(2*N*TOP),頻率為 10K31.8%31.8%/PWM/1602/AD/函數(shù)初始化函數(shù) 按鍵初始化函

28、數(shù) 定時(shí)器 0 初始化 端口初始化顯示PWI函數(shù)按鍵函數(shù)顯示ADO的模擬量和數(shù)字量1602.h#ifndef _1602_H_#define _1602_H_#define uchar unsigned char#define uint unsigned int void delay(uint MS); void write_com(uint com); void write_dat(uint dat);void LCD_init();void Display_PWM();void calculate_AD0(); #endif1602.c*#include #include #include

29、1602.h #define uchar unsigned char#define uint unsigned int/* 顯示固定數(shù)組 PWM:*/const uchar tab=PWM:;延時(shí)函數(shù) */void delay(uint MS) /uint i,j;for(i=0;iMS;i+)for(j=0;j2282;j+); /2282約為IMS的延時(shí)函數(shù)是在16MHz晶振下為MS毫秒寫地址void write_com(uint com)PORTA&=BIT(5); /RS=0 PORTA&=BIT(6); /RW=0 PORTB=com; / 送地址 delay(5);PORTA|=B

30、IT(7); /EN=1 delay(5);PORTA&=BIT(7); /EN=0寫數(shù)據(jù)void write_dat(uint dat)PORTA|=BIT(5);/RS=1PORTA&=BIT(6); /RW=0 PORTB=dat;/送數(shù)據(jù)delay(5);/*1602 初始化 void LCD_init()DDRA=0XFF; DDRB=0xFF; delay(5);*/write_com(0X38);delay(5);/write_com(0X0c);delay(5);/write_com(0X06);delay(5);/write_com(0X01);delay(5);*顯示 pw

31、m占空void Display_PWM()uchar i;/比 */uint shi,ge,xiaoshu,beichu;uint shi1,ge1,xiaoshu1;shi=0CR1A/100;/ge=0CR1A/10%10;/xiaoshu=0CR1A%10;/beichu=ICR1/10;/shi1=0CR1B/100;/ge1=0CR1B/10%10;/xiaoshu1=0CR1B%10;write_com(0x80);for(i=0;tabi!=0;i+)write_dat(tabi);write_com(0x84);/PORTA|=BIT(7); /EN=1 delay(5);PO

32、RTA&=BIT(7); /EN=0設(shè) 8 位數(shù)據(jù)線 , 雙行 ,5*7 點(diǎn)陣 開顯示, 不顯示光標(biāo) 輸入地址自加 , 屏幕不移動 清屏將0CR1百位拆分將0CR1十位拆分將0CR1個位拆分將 ICR1 變?yōu)閮晌粩?shù)將0CR1百位拆分將0CR1十位拆分將0CR1個位拆分write_dat(shi*100+ge*10+xiaoshu)*100/beichu/100+0x30); /write_dat(shi*100+ge*10+xiaoshu)*100/beichu/10%10+0x30); /write_dat(.);write_dat(shi*100+ge*10+xiaoshu)*100/be

33、ichu%10+0x30); / write_dat(%);顯示十位顯示個位顯示小數(shù)點(diǎn)write_com(0x8a);write_dat(shi1*100+ge1*10+xiaoshu1)*100/beichu/100+0x30); /顯示十位write_dat(shi1*100+ge1*10+xiaoshu1)*100/beichu/10%10+0x30); /顯示個位write_dat(.);write_dat(shi1*100+ge1*10+xiaoshu1)*100/beichu%10+0x30); /顯示小數(shù)點(diǎn)write_dat(%);*AD.H#ifndef _AD_H_ #def

34、ine _AD_H_ void adcport_init(); void ADC0INIT(void); void ADC1INIT(void); void ADC2INIT(void); int get_ADCdata(void); float get_ave(int a8); float get_ADC0data(void); float get_ADC1data(void); float get_ADC2data(void); void display_AD0();#endif*AD.C#include#include #include1602.h#define uchar unsign

35、ed char#define uint unsigned int / 參考電壓#define REF 5.12/*ADC端口初始化 */void adcport_init()DDRA&=BIT(0);PORTA&=BIT(0);DDRA&=BIT(1);PORTA&=BIT(1);DDRA&=BIT(2);PORTA&=BIT(2);/* *ADC0初始化/AREF/基準(zhǔn)壓,結(jié)果右對齊,通道為 ADC0使能ADC單次轉(zhuǎn)換,預(yù)分頻為128void ADC0INIT(void)ADMUX=0x40;ADCSRA=0x87;ADCSRA|=(1ADSC); / 啟動首次轉(zhuǎn)換 while(!(ADCS

36、RA&(1ADIF); / 等待轉(zhuǎn)換結(jié)束 ADCSRA|=(1ADIF); /清除 ADIF 位/*初始化void ADC1INIT(void)ADMUX=0x41;/AREFADCSRA=0x87;/ADCSRA|=(1ADSC); / while(!(ADCSRA&(1ADIF); /ADCSRA|=(1ADIF); /基準(zhǔn)壓,結(jié)果右對齊,通道為 ADC1 使能ADC單次轉(zhuǎn)換,預(yù)分頻為128 啟動首次轉(zhuǎn)換 等待轉(zhuǎn)結(jié)束循環(huán)清除ADIF位/*ADC2初始化void ADC2INIT(void)基準(zhǔn)壓,結(jié)果右對齊,通道為 ADC2 使能ADC單次轉(zhuǎn)換,預(yù)分頻為128 啟動首次轉(zhuǎn)換 等待轉(zhuǎn)結(jié)束循環(huán)

37、清除ADIF位ADMUX=0x42;/AREFADCSRA=0x87;/ADCSRA|=(1ADSC); / while(!(ADCSRA&(1ADIF); / ADCSRA|=(1ADIF); /*獲取ADC勺米樣值*int get_ADCdata(void)int a,b;a=b=0;b=ADCL;/讀高位后數(shù)據(jù)更新a=ADCH;/再讀取ADCH數(shù)據(jù)a=(a8);/右對齊,左移八位a=(a|b);/組成 10位二進(jìn)制數(shù)據(jù)return a;*去頭去尾,獲取平均值 *float get_ave(int a8) float v;unsigned char i;float sum=0;for(i=

38、1;i7;i+) / 從第 2 次到第 6 次數(shù)據(jù) sum=sum+ai; v=sum/6;return v;*獲取 ADC(采樣 8次的平均值*float get_ADC0data(void) unsigned char i=0; float v;int buf8=0; for(i=0;i8;i+)ADC0INIT();/AD初始化一次bufi=get_ADCdata(); /將數(shù)據(jù)放入數(shù)組 v=get_ave(buf);return v;*獲取 ADC1采樣 8次的平均值*float get_ADC1data(void) unsigned char i=0; float v;int buf

39、8=0; for(i=0;i8;i+)ADC1INIT();/AD初始化一次bufi=get_ADCdata(); /將數(shù)據(jù)放入數(shù)組 v=get_ave(buf);return v;*獲取 ADC踩樣 8次的平均值* float get_ADC2data(void)unsigned char i=0; float v;int buf8=0;for(i=0;i8;i+)初始化一次將數(shù)據(jù)放入數(shù)組ADC2INIT();/ADbufi=get_ADCdata();/ v=get_ave(buf); return v;/* 將數(shù)據(jù)拆分送顯示 */ void display_AD0()int a,b;uc

40、har s6,k6;uchar i,j,m;將數(shù)據(jù)轉(zhuǎn)化為十進(jìn)制數(shù)字量/a=get_ADC0data()*REF/1024*1000;b=get_ADC0data();s0=a/1000+0; s1=.; s2=a%1000/100+0; s3=a%100/10+0; s4=a%10+0; s5=V;k0=D;k1=:;k2=b/1000+0; k3=b%1000/100+0; k4=b%100/10+0;k5=b%10+0;write_com(0xC0);for(i=0;i6;i+)write_dat(si);write_com(0xC7); for(j=0;j=360)OCR1A=265;O

41、CR1B=265;if(get_ADC2data()=310)OCR1A=240;/實(shí)際電壓值大于 8.4V鉗位到 8.4V實(shí)際電壓值小于 7.6V鉗位到 7.6VOCR1B=240;/* KEY.H *#ifndef _KEY_H_#define _KEY_H_void key_init();void press();uchar key();#endifKEY.C#include #include #include1602.h #define uchar unsigned char#define uint unsigned int uint count_pwm=255;uint count_

42、pwm1=255;/* 按鍵初始化函數(shù)void key_init()DDRD&=BIT(0); /PORTD|=BIT(0);DDRD&=BIT(1); /PORTD|=BIT(1);DDRD&=BIT(2); /PORTD|=BIT(2);DDRD&=BIT(3); /PORTD|=BIT(3);DDRD&=BIT(7); /PORTD|=BIT(7);獨(dú)立鍵盤接口置高電平 獨(dú)立鍵盤接口置高電平 獨(dú)立鍵盤接口置高電平 獨(dú)立鍵盤接口置高電平 獨(dú)立鍵盤接口置高電平按鍵函數(shù)void press()uchar m;m=PIND; m&=0x0f;if(m=0X0e)count_pwm=OCR1A;

43、/讀取當(dāng)前 PWM值count_pwm+=1;count_pwm=OCR1B; / 讀取當(dāng)前 PWMfi count_pwm+=1;delay(1); / 按鍵消抖 while(PIND=0x0e);OCR1A=count_pwm; /OCR1A 賦新值OCR1B=count_pwm; /OCR1B 賦新值if(OCR1A=265&OCR1B=265)OCR1A=265;OCR1B=265;if(m=0X0d)count_pwm=OCR1A; /讀取當(dāng)前 PWMScount_pwm-=1;count_pwm=OCR1B; / 讀取當(dāng)前 PW值 count_pwm-=1;delay(1); / 按鍵消抖 while(PIND=0x0d);OCR1A=count_pwm; /OCR1A 賦新值OCR1B=count_pwm; /OCR1B 賦新值if(OCR1A=240&OCR1B=261|OCR1B=251)OCR1A=261;OCR1B=251;if(m=0X07)count_pwm=OCR1A; /讀取當(dāng)前 PWMScount_pwm-=1;count_pwm仁OCR1B; / 讀取當(dāng)前 PWM值 count_pwm1+=1;delay(1); / 按鍵消抖 while(PIND=0x07);OCR1A=cou

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論