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

下載本文檔

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

文檔簡介

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

2、以 IRF9530 芯片為開關(guān),配以 BUCK 的外圍電路實現(xiàn) 24V-8V 的降壓與穩(wěn)壓。采用 LM328 比較電路實現(xiàn)電流和電壓的檢測,控制由 DC/DC 模塊構(gòu)成的并聯(lián)供電系統(tǒng)均流與分流工作模式,通過比較器電路實現(xiàn)過流保護(hù)。同時進(jìn)展 LCD1602 液晶同步顯示、獨立鍵盤輸入控制。輸入的值經(jīng)過單片機(jī)處理程序來控制輸出電壓,且輸出電壓和電流可實時顯示。關(guān)鍵詞關(guān)鍵詞:DC/DC 模塊,BUCK,電流分流-. z目 錄一、緒論 1二、設(shè)計的目標(biāo)與根本要求 1一 、設(shè)計目標(biāo) 1二 、根本要求 2三、系統(tǒng)設(shè)計 2一 、系統(tǒng)框圖 2二 、硬件設(shè)計與方案選擇 31、單片機(jī)選擇 32、主電路選擇 33、

3、驅(qū)動電路圖 44、輔助電源 55、電流、電壓采樣 66、顯示、按鍵 7(三)、軟件設(shè)計 71、主程序 72、按鍵程序 83、液晶程序 94、采樣程序 105、中斷、PID 流程圖 11四、調(diào)試過程 12一 、遇到的問題及解決方法 12二 、數(shù)據(jù)分析 13五、體會與展望 14參考文獻(xiàn) 15附錄 15附錄 1整體電路圖 15附錄 2程序代碼 16-. z一、緒論分布式直流開關(guān)電源系統(tǒng)取代傳統(tǒng)的集中式直流開關(guān)電源系統(tǒng)已成為大功率電源系統(tǒng)的開展方向:1單臺大功率電源容易受技術(shù)、本錢的限制;2單臺直流開關(guān)電源故障會導(dǎo)致整個系統(tǒng)的故障,而分布式電源系統(tǒng)由假設(shè)干電源模塊并聯(lián)組成,*個電源模塊故障不會導(dǎo)致整個

4、電源故障;3可根據(jù)實際負(fù)荷的變化,自動確定需要投入運行的模塊數(shù)量或者解列退出的模塊數(shù)量,對變負(fù)荷運行很有意義;4由于多個電源模塊并聯(lián)運行,使每個電源模塊承受的電應(yīng)力較小,具有較高的運行效率,且具有較好的動態(tài)和靜態(tài)特性。分布式電源系統(tǒng)需要解決的主要問題是實現(xiàn)多個并聯(lián)運行的模塊輸出一樣的功率。隨著通信電源技術(shù)的高速開展,電力電子設(shè)備與人們的工作、生活的關(guān)系日益密切,而通信電子設(shè)備都離不開可靠的電源。進(jìn)入 20 世紀(jì) 80 年代,計算機(jī)電源全面實現(xiàn)了開關(guān)電源化,率先完成計算機(jī)的電源換代;進(jìn)入 20 世紀(jì) 90 年代,開關(guān)電源相繼進(jìn)入各種電子、電氣設(shè)備領(lǐng)域,程控交換機(jī)、通信、電力檢測設(shè)備電源、控制設(shè)備

5、電源等都已廣泛使用了開關(guān)電源,更促進(jìn)了開關(guān)電源技術(shù)的迅速開展。二、設(shè)計的目標(biāo)與根本要求一 、設(shè)計目標(biāo)設(shè)計并制作一個由兩個額定輸出功率均為 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,使兩個模塊輸出電流之和 IO =1.0A 且按 I1:I2=1:1 模式自動分配電流,調(diào)整負(fù)載電阻,保持輸出電壓 UO=8.00.4V,使兩個模塊輸出電

6、流之和 IO =1.5A 且按 I1:I2= 1:2 模式自動分配電流,每個模塊輸出電流的相對誤差絕對值不大于 5%。調(diào)整負(fù)載電阻,保持輸出電壓 UO=8.00.4V,使兩個模塊輸出電流之和 IO =4.0A 且按 I1:I2=1:1 模式自動分配電-. z流,每個模塊的輸出電流的相對誤差的絕對值不大于 2%。3調(diào)整負(fù)載電阻,保持輸出電壓 UO=8.00.4V,使負(fù)載電流 IO 在 1.53.5A 之間變化時,兩個模塊的輸出電流可在0.52.0圍按指定的比例自動分配,每個模塊的輸出電流相對誤差的絕對值不大于 2%。 4具有負(fù)載短路保護(hù)及自動恢復(fù)功能,保護(hù)閾值電流為 4.5A調(diào)試時允許有0.2A

7、 的偏差 。在額定輸出功率工作狀態(tài)下,進(jìn)一步提高供電系統(tǒng)效率。三、系統(tǒng)設(shè)計一 、系統(tǒng)框圖圖 3.1 系統(tǒng)框圖系統(tǒng)說明:以單片機(jī)為核心處理元件,DC-DC 變換器為主電路。按鍵、顯示便于人機(jī)交互。驅(qū)動電路將單片機(jī)和 DC-DC 變換器隔離,輔助電源給單片機(jī)和采樣電路供電。單片機(jī)將電壓電流通過采樣電路,運放采樣回來在部進(jìn)展 A/D 處理,然后將數(shù)據(jù)輸出液晶顯示。在部進(jìn)展算法調(diào)整。使整個系統(tǒng)穩(wěn)定,并到達(dá)根本要求。整個系統(tǒng)設(shè)計如上圖 3.1 所示。二 、硬件設(shè)計與方案選擇1、單片機(jī)選擇方案一:使用 89C51 單片機(jī)指令簡單,易學(xué)易懂,外圍電路簡單,硬件設(shè)計方便,IO 口操作簡單,無方向存放器,資源豐

8、富, ,價格廉價、容易購置,資料豐富容易查到,程序燒寫簡單,但要外接 A/D、D/A 芯片,來實現(xiàn)對整個供電系統(tǒng)的控制,需要占用較多的 I/O 接口,會使普通單片機(jī)承載過大的數(shù)據(jù)處理任務(wù),功耗較大。方案二:使用 ATmega16,ATmega16外設(shè)特點:兩個具有獨立的預(yù)分頻器和比較器功能的8位定時器/計數(shù)器,兩個具有預(yù)分頻器、比較功能和撲捉功能的16位定時器/計數(shù)器,具有獨立預(yù)分頻器的實時時鐘計數(shù)器,兩路8位 PWM,4路分辨率可編程(216位)的 PWM,輸出比較調(diào)制器,8路10位 ADC,面向字節(jié)的兩線接口 I2C 總線,兩個可編程的串行 USART,可工作于主機(jī)/從機(jī)模式的 SPI 串

9、行接口,具有獨立片振蕩器的的可編程看門狗定時器,片模擬比較器。特殊的處理器特點:上電復(fù)位以及可編程的掉電檢測,片經(jīng)過標(biāo)定的 RC 振蕩器,片/片外中斷源,6種睡眠模式,可以通過軟件進(jìn)展選擇的時鐘頻率,通過熔絲位可以選擇兼容模式,全局上拉制止功能。-. z結(jié)合前兩個方案優(yōu)點,經(jīng)過方案比較與論證,最終確定使用方案二,因為ATmega16 速度快 自帶 PWM ,自帶 AD,而用 89C51 會使電路更加復(fù)雜與不穩(wěn)定所以,用 ATmega16 單片機(jī)和其它控制器電路同實現(xiàn)整個系統(tǒng)的控制。2、主電路選擇方案一:有一種型號為 LM2956 的降壓開關(guān)電壓調(diào)節(jié)器,能夠輸出 3A 的驅(qū)動電流,同時具有很好的

10、線性和負(fù)載調(diào)節(jié)特性,該器件部集成頻率補(bǔ)償和固定頻率發(fā)生器,極簡化了開關(guān)電源電路的設(shè)計。方案二:采用 SG3525 自帶脈寬調(diào)制電源芯片來設(shè)計 DC-DC 降壓轉(zhuǎn)換電路,SG3525 簡單可靠及使用方便靈活,輸出驅(qū)動為推拉輸出形式,增加了驅(qū)動能力;部含有欠壓鎖定電路,死區(qū)時間可調(diào)、軟啟動控制電路、PWM 鎖存器,有過流保護(hù)功能,頻率可調(diào),同時能限制最大占空比。由此設(shè)計而成的電路易于實現(xiàn)脈寬調(diào)制,然而在真正使用時會發(fā)現(xiàn),為得到要求的電壓輸出值,開關(guān)管 S 的參數(shù)選取相當(dāng)不易。方案三:將經(jīng)過隔離變壓器,整流濾波后得到的 24VDC 通過 BUCK 降壓電路進(jìn)展DC-DC 轉(zhuǎn)換,由 ATmega16

11、單片機(jī)產(chǎn)生 PWM 控制其占空比,從而得到要求的直流電壓。此方案僅用一塊控制芯片不但可以實現(xiàn)對 BUCK 電路的控制,而且可以結(jié)合 A/D 和D/A 對輸出電壓進(jìn)展調(diào)整與顯示。由于 ATmega16 單片機(jī)自帶能夠產(chǎn)生脈寬調(diào)制所需的 PWM 信號的端口,在實際制作中用起來比較方便。ATmega16 單片機(jī)自帶 8 路 10位 A/D 轉(zhuǎn)換。結(jié)合前兩個方案優(yōu)點,經(jīng)過方案比較與論證,最終確定使用方案三如圖 3.2,因為 ATmega16 單片機(jī),自帶 PWM 模塊,可以輸出 PWM 方波控制電路,節(jié)約芯片本錢,也可實現(xiàn) AD 轉(zhuǎn)換。用單片機(jī)和其它控制器電路同實現(xiàn)整個系統(tǒng)的控制。-. z3.2 主電

12、路圖3、驅(qū)動電路圖方案一:單片機(jī)輸出 PWM,采用 IR2101 驅(qū)動 DC-DC 電路中的 IRF9530,控制輸出電壓。方案二:先采用光耦 TLP250 和單片機(jī)進(jìn)展隔離,有效保護(hù)單片機(jī),之后用IRF3205 去驅(qū)動 MOS 管 IRF9530,控制輸出電壓。結(jié)合兩種方案的比照選擇方案二如圖 3.3,因為方案二中采用光耦,將單片機(jī)與主電路隔離,能夠有效保護(hù)單片機(jī),而且也能使正常使電路工作。圖 3.3 驅(qū)動電路圖4、輔助電源方案一:采用集成的三端穩(wěn)壓集成芯片,7815 和 7805 分別給光耦和運放,還有單片機(jī)供電,7815 含過流,過熱,過載保護(hù)電路。方案二:采用 LM2575 開關(guān)穩(wěn)壓集

13、成芯片,它部集成了一個固定的振蕩器,是一種高效的穩(wěn)壓芯片,大多數(shù)情況下無需加散熱片。部有完善的保護(hù)電路,包括電流限制及熱關(guān)斷電路等。它可以根據(jù)用戶要求選擇輸出電壓,可輸出3.3V,5V,12V,15V。然后再經(jīng)過 7805 產(chǎn)生 5V 電壓。結(jié)合兩種方案的比照選擇方案二如圖 3.4,因為方案二中的 LM2575 的是可調(diào)節(jié)輸出電壓的芯片,方便調(diào)控,而且它部有電壓基準(zhǔn)比較,使輸出的電壓能夠準(zhǔn)確并穩(wěn)定,比 7815 要準(zhǔn)確,且性能好。-. z圖 3.4 輔助電源電路圖5、電流、電壓采樣采樣模塊是輸出電壓經(jīng)過采樣回來,形成一個負(fù)反響.經(jīng)過單片機(jī)部 A/D 進(jìn)展處理,然后使輸出更加穩(wěn)定和準(zhǔn)確。電壓采樣

14、模塊直接采用 LM358 運放如圖 3.5,將輸出的電壓縮小一定倍數(shù)后,然后送給單片機(jī)處理判斷。電流采樣是經(jīng)過 0.1 歐/4 瓦的采樣電阻后,縮小一定倍數(shù),然后經(jīng)過一個差分電路,將電壓值送入單片機(jī)進(jìn)展處理如圖 3.6。圖 3.5 電壓采樣電路圖圖 3.6 電流采樣電路圖6、顯示、按鍵顯示局部采用字符型液晶 1602,能夠同時顯示 16*02 即 32 個字符。16 個引腳,3 個控制引腳,8 位雙向數(shù)據(jù)端引腳。具有微功耗、體積小、顯示容豐富、超薄輕巧的特點。用戶可以對 EN、RW、RS 的數(shù)據(jù)進(jìn)展編程,然后通過 D0D7 輸出顯示數(shù)據(jù)。其引腳功能圖見下表 6.1表 6.1 1602 引腳功能

15、圖按鍵局部采用四個獨立的按鍵,分別控制占空比的加和減,對輸出的電壓和電流進(jìn)展控制,使輸出能夠到達(dá)期望的要求,其按鍵功能表如表 6.2。表 6.2 按鍵功能表鍵名S1S2S3S4功能PWM1 加 0.2%PWM1 減 0.2%PWM2 加 0.2%PWM2 減 0.2%CPU 端口號PD0PD1PD2PD3(三)、軟件設(shè)計1、主程序如圖 3.7 為主程序流程圖,一開場給系統(tǒng)各局部初始化,包括按鍵初始化,液晶初始化,PWM 初始化,AD 采樣初始化,中斷初始化,然后在進(jìn)入大循環(huán),在循環(huán)進(jìn)展數(shù)據(jù)的顯示,包括當(dāng)前輸入的占空比為多少,當(dāng)前采樣回來的數(shù)字量和實際的電壓值為多少。還有按鍵程序,和 AD 采樣

16、。同時每 10 毫秒進(jìn)入定時器 0 中斷進(jìn)展調(diào)整。-. z圖 3.7 主程序流程圖2、按鍵程序按鍵程序流程圖如圖 3.8 所示。按鍵采用四個獨立的按鍵,分別控制 PWM1,PWM2 的加和減,當(dāng)有鍵按下時,掃描按鍵,然后進(jìn)入判斷。判斷當(dāng)前存放器對應(yīng)的值是否大于了設(shè)定的上限值,如果沒有則數(shù)值加 1,如果到達(dá)了則鉗位在最大的上限值。然后返回數(shù)據(jù)。通過按鍵程序,可以控制占空比的調(diào)節(jié)。按鍵開始PD0是否按下?OCR1A+1OCR1B+1OCR1A265&OCR1B265?OCR1A=265OCR1B=265OCR1A-1OCR1B-1OCR1A240&OCR1B261|OCR1B251

17、?OCR1A=261OCR1B=251PD3是否按下?OCR1A-1OCR1B+1OCR1A260?OCR1A=250OCR1B=260結(jié)束YNYNYNNYYYYYNNNN-. z圖 3.8 按鍵程序流程圖3、液晶程序圖 3.8 為 1602 液晶屏的程序框圖,1602 由 3 個控制引腳,8 位雙向數(shù)據(jù)端引腳控制顯示的容和位置。因此,這局部程序主要有初始化函數(shù),寫命令函數(shù)和寫數(shù)據(jù)函數(shù)組成。初始化函數(shù)主要對液晶屏的顯示模式進(jìn)展設(shè)定,寫命令函數(shù)主要是對顯示的位置和顯示的方式進(jìn)展設(shè)置,寫數(shù)據(jù)函數(shù)是決定顯示的容。開始寫命令設(shè)置為寫命令方式寫入命令把命令送入PB口延時5毫秒EN置高,把命令寫入寄存器延

18、時5毫秒EN置低結(jié)束寫數(shù)據(jù)開始設(shè)置為寫數(shù)據(jù)方式寫入數(shù)據(jù)把數(shù)據(jù)送入PB口延時5毫秒EN置高,把數(shù)據(jù)寫入寄存器延時5毫秒EN置低結(jié)束開始初始化設(shè)置為雙行,5*7點陣延時5毫秒開顯示,不顯示光標(biāo)延時5毫秒輸入地址自加,屏幕不移動延時5毫秒清屏延時5毫秒結(jié)束 圖 3.8 1602 程序流程圖4、采樣程序-. z如圖 3.9 是采樣程序流程圖。一開場配置 AD 存放器,然后啟動 AD 存放器,然后將采樣回來的數(shù)據(jù)組合成 10 位的數(shù)據(jù),然后采樣 8 次,去頭去尾后,對其求平均值。將數(shù)據(jù)處理后,給液晶顯示。然后進(jìn)展電壓判斷,是否小于要求的最小值,如果是的話進(jìn)展鉗位,然后是否小于設(shè)定的最大值,是的話,就是在

19、要求圍,那就進(jìn)展 PID算法的調(diào)整,進(jìn)展電流的分流。如果大于最大值的話,就進(jìn)展鉗位。圖 3.9 AD 采樣程序流程圖5、中斷、PID 流程圖如圖 3.10 和 3.11 分別是中斷流程圖和 PID 算法程序流程圖。定時器 0 中斷定時 10毫秒溢出中斷,在中斷中進(jìn)展 PID 調(diào)整,和電壓反響調(diào)整。PID 算法是根據(jù)公式,對采樣電阻采樣回來的電壓進(jìn)展反響計算。根據(jù)對 P,I,D 三個參數(shù)的設(shè)置,然后結(jié)合算法公式,對輸出的數(shù)據(jù)進(jìn)展不斷的調(diào)整,到達(dá)要求的值。圖 3.10 定時器 0 中斷 圖 3.11 PID 算法流程圖四、調(diào)試過程一 、遇到的問題及解決方法1 、在對電路板進(jìn)展設(shè)計,做板子的時候,經(jīng)

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

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

22、到達(dá)根本的要求。還有在對 PID 參數(shù)設(shè)置的時候,一開場沒有頭緒,隨便調(diào),后來看論壇和同學(xué)談?wù)?,發(fā)現(xiàn)要一個一個參數(shù)的調(diào),在經(jīng)過屢次實驗后,將 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, 兩模塊電流按 1:1 分配比例反響I1AI2 AI總 AUoV給定值0.5051.08.0測量值0.5050.5151.0028.24絕對誤差1%3%0.2%3%表 4.2 負(fù)載為 8.5, 兩模塊電流按 1:1 分配PI 反響I1AI2 AI總 AUoV給定值0.5051.08.0測量

23、值0.4940.5081.0078.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,兩模塊電流按 1:2 分配情況比例反響I1AI2 AI總 AUoV給定值0.51.01.58.0測量值0.4620.9301.4977.71絕對誤差7.6%7%0.2%3.6%表 4.4 負(fù)載為 5.9,兩模塊電流按 1:2 分配情況PI 反響I1AI2 AI總 AUoV給定值0.51.01.58.0-. z測量值0.5080.9811.5027.60絕對誤差1.6%1.9%0.2%5%比照表 4.1 和表

24、 4.2 可以看出,同樣是 1:1 的電流分配情況下,比例調(diào)節(jié)的誤差在5%以,到達(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%以。比照著兩組數(shù)據(jù),可以看出了在 PI 的調(diào)節(jié)下精度大大的提升,說明了 PID 算法在控制方面的優(yōu)勢,使整個系統(tǒng)更加完善。五、體會與展望通過這次選修課的學(xué)習(xí),學(xué)到了專業(yè)知識方面的一些知識。整個學(xué)習(xí)的過程是很重要的。由于這個學(xué)期在學(xué)習(xí)?電力電子?這門課,而課題又正好和電力電子相關(guān)知識有關(guān),所以對于

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

26、子技術(shù)根底,第五版.:高等教育,2006.55 燕君.自動控制原理.大學(xué),2021.1附 錄附錄 1整體電路圖附錄 2程序代碼-. z/*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/*定時器 0 中斷*/void timer0_init(void) TCCR0 = 0*00; /停頓定時器 TT0

27、= 0*64;/初始值,每 10 毫秒進(jìn)一次中斷 TIMSK = 0*01; /允許中斷 SREG |= BIT(7); /允許全局中斷/*外中斷 0 函數(shù)*/void timer0_ovf_isr(void) TT0 = 0*64; pid1_calculating(); /PID 調(diào)整 OCR1A pid2_calculating(); /PID 調(diào)整 OCR1B _vol(); /電壓反響/*PWM 設(shè)置輸出*/void KPWM(void) PORTD|=BIT(4)|BIT(5); DDRD|=BIT(4)|BIT(5); TCCR1A = 0*A2; /兩路 PWM,匹配清零 TC

28、CR1B = 0*11; /相位修正 PWM 模式,位數(shù)可調(diào),預(yù)分頻 1 ICR1 = 800; /此數(shù)為 16 位 PWM,16M 晶振,clk/(2*N*TOP),頻率為 10K OCR1A = 255; /占空比 31.8% OCR1B = 255; /占空比 31.8%void main() KPWM(); /PWM 函數(shù) LCD_init(); /1602 初始化函數(shù) key_init(); /按鍵初始化函數(shù) timer0_init(); /定時器 0 初始化 adcport_init(); /AD 端口初始化-. z while(1) Display_PWM(); /顯示 PWM

29、函數(shù)press(); /按鍵函數(shù)display_AD0(); /顯示 AD0 的模擬量和數(shù)字量 /*1602.h*/*ifndef _1602_H_*define _1602_H_*define uchar unsigned char*define uint unsigned intvoid delay(uint MS);void write_(uint );void write_dat(uint dat);void LCD_init();void Display_PWM();void calculate_AD0();*endif/*1602.c*/*include*include*inclu

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

31、址 delay(5); PORTA|=BIT(7); /EN=1 delay(5); PORTA&=BIT(7); /EN=0-. z/*1602 寫數(shù)據(jù)*/void write_dat(uint dat) PORTA|=BIT(5); /RS=1 PORTA&=BIT(6); /RW=0 PORTB=dat; /送數(shù)據(jù) delay(5); PORTA|=BIT(7); /EN=1 delay(5); PORTA&=BIT(7); /EN=0 /*1602 初始化*/void LCD_init() DDRA=0*FF; DDRB=0*FF; delay(5); writ

32、e_(0*38); /設(shè) 8 位數(shù)據(jù)線,雙行,5*7 點陣 delay(5); write_(0*0c); /開顯示,不顯示光標(biāo) delay(5); write_(0*06); /輸入地址自加,屏幕不移動 delay(5); write_(0*01); /清屏 delay(5);/*顯示 PWM 占空比*/void Display_PWM() uchar i; uint shi,ge,*iaoshu,beichu; uint shi1,ge1,*iaoshu1; shi=OCR1A/100; /將 OCR1A 百位拆分 ge=OCR1A/10%10; /將 OCR1A 十位拆分 *iaoshu

33、=OCR1A%10; /將 OCR1A 個位拆分 beichu=ICR1/10; /將 ICR1 變?yōu)閮晌粩?shù) shi1=OCR1B/100; /將 OCR1B 百位拆分 ge1=OCR1B/10%10; /將 OCR1B 十位拆分 *iaoshu1=OCR1B%10; /將 OCR1B 個位拆分 write_(0*80); for(i=0;tabi!=0;i+) write_dat(tabi);-. z write_(0*84); write_dat(shi*100+ge*10+*iaoshu)*100/beichu/100+0*30); /顯示十位 write_dat(shi*100+ge*

34、10+*iaoshu)*100/beichu/10%10+0*30); /顯示個位 write_dat(.); write_dat(shi*100+ge*10+*iaoshu)*100/beichu%10+0*30); /顯示小數(shù)點 write_dat(%); write_(0*8a); write_dat(shi1*100+ge1*10+*iaoshu1)*100/beichu/100+0*30); /顯示十位 write_dat(shi1*100+ge1*10+*iaoshu1)*100/beichu/10%10+0*30); /顯示個位 write_dat(.); write_dat(s

35、hi1*100+ge1*10+*iaoshu1)*100/beichu%10+0*30); /顯示小數(shù)點 write_dat(%);/*AD.H*/*ifndef _AD_H_*define _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)

36、;void display_AD0();*endif/*AD.C*/*include*include*include1602.h*define uchar unsigned 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);-. z PORTA&=BIT(2);/*ADC0 初始化*/voi

37、d ADC0INIT(void) ADMU*=0*40; /AREF 基準(zhǔn)壓,結(jié)果右對齊,通道為 ADC0 ADCSRA=0*87; /使能 ADC,單次轉(zhuǎn)換,預(yù)分頻為 128 ADCSRA|=(1ADSC); /啟動首次轉(zhuǎn)換 while(!(ADCSRA&(1ADIF); /等待轉(zhuǎn)換完畢 ADCSRA|=(1ADIF); /去除 ADIF 位/*ADC1 初始化*/void ADC1INIT(void) ADMU*=0*41; /AREF 基準(zhǔn)壓,結(jié)果右對齊,通道為 ADC1 ADCSRA=0*87; /使能 ADC,單次轉(zhuǎn)換,預(yù)分頻為 128 ADCSRA|=(1ADSC); /啟

38、動首次轉(zhuǎn)換 while(!(ADCSRA&(1ADIF); /等待轉(zhuǎn)完畢循環(huán) ADCSRA|=(1ADIF); /去除 ADIF 位/*ADC2 初始化*/void ADC2INIT(void) ADMU*=0*42; /AREF 基準(zhǔn)壓,結(jié)果右對齊,通道為 ADC2 ADCSRA=0*87; /使能 ADC,單次轉(zhuǎn)換,預(yù)分頻為 128 ADCSRA|=(1ADSC); /啟動首次轉(zhuǎn)換 while(!(ADCSRA&(1ADIF); /等待轉(zhuǎn)完畢循環(huán) ADCSRA|=(1ADIF); /去除 ADIF 位/*獲取 ADC 的采樣值*/int get_ADCdata(void)

39、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;-. zunsigned char i;float sum=0;for(i=1;i7;i+) /從第 2 次到第 6 次數(shù)據(jù)sum=sum+ai;v=sum/6;return v;/*獲取 ADC0 采樣 8 次的平均值*/float get_ADC0data(void)unsigned char i=

40、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 buf8=0;for(i=0;i8;i+)ADC1INIT(); /AD 初始化一次bufi=get_ADCdata(); /將數(shù)據(jù)放入數(shù)組v=get_ave(buf);return v;/*獲取 ADC2 采樣 8 次的平均值*/

41、float get_ADC2data(void)unsigned char i=0;float v;int buf8=0;for(i=0;i8;i+)-. zADC2INIT(); /AD 初始化一次 bufi=get_ADCdata(); /將數(shù)據(jù)放入數(shù)組v=get_ave(buf);return v;/*將數(shù)據(jù)拆分送顯示*/void display_AD0() int a,b; uchar s6,k6; uchar i,j,m; a=get_ADC0data()*REF/1024*1000; /將數(shù)據(jù)轉(zhuǎn)化為十進(jìn)制 b=get_ADC0data(); /數(shù)字量 s0=a/1000+0; s1

42、=.; 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_(0*C0); for(i=0;i6;i+) write_dat(si); write_(0*C7); for(j=0;j=360) /實際電壓值大于 8.4V OCR1A=265; /鉗位到 8.4V-. zOCR1B=265; if(get_ADC2data()=310) /實際電壓值小于 7.6V OCR1A=240; /鉗位到 7.6V

43、OCR1B=240; /*KEY.H*/*ifndef _KEY_H_*define _KEY_H_void key_init();void press();uchar key();*endif/*KEY.C*/*include*include*include1602.h*define uchar unsigned char*define uint unsigned intuint count_pwm=255;uint count_pwm1=255;/*按鍵初始化函數(shù)*/void key_init() DDRD&=BIT(0); /獨立鍵盤接口置高電平 PORTD|=BIT(0); D

44、DRD&=BIT(1); /獨立鍵盤接口置高電平 PORTD|=BIT(1); DDRD&=BIT(2); /獨立鍵盤接口置高電平 PORTD|=BIT(2); DDRD&=BIT(3); /獨立鍵盤接口置高電平 PORTD|=BIT(3); DDRD&=BIT(7); /獨立鍵盤接口置高電平 PORTD|=BIT(7); /*按鍵函數(shù)*/void press() uchar m; m=PIND; m&=0*0f; if(m=0*0e) -. z count_pwm=OCR1A; /讀取當(dāng)前 PWM 值 count_pwm+=1; count_pwm=O

45、CR1B; /讀取當(dāng)前 PWM 值 count_pwm+=1; delay(1); /按鍵消抖 while(PIND=0*0e); OCR1A=count_pwm; /OCR1A 賦新值 OCR1B=count_pwm; /OCR1B 賦新值 if(OCR1A=265&OCR1B=265) OCR1A=265;OCR1B=265; if(m=0*0d) count_pwm=OCR1A; /讀取當(dāng)前 PWM 值 count_pwm-=1; count_pwm=OCR1B; /讀取當(dāng)前 PWM 值 count_pwm-=1; delay(1); /按鍵消抖 while(PIND=0*0d); OCR1A=count_pwm; /OCR1A 賦新值 OCR1B=count_pwm; /OCR1B 賦新值 if(OCR1A=240&OCR1B=261|OCR1B=251) OCR1A=261;-. zOCR1B=251; if(m=0*07) count_pwm=OCR1A; /讀取當(dāng)前 PWM 值 count_pwm-=1; count_pwm1=OCR1B; /讀取當(dāng)前 PWM 值 count_pwm1+=

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論