【正文】
交互。單片機將電壓電流通過采樣電路,運放采樣回來在內(nèi)部進行 A/D 處理,然后將數(shù)據(jù)輸出液晶顯示。使整個系統(tǒng)穩(wěn)定,并達到基本要求。(二) 、硬件設(shè)計與方案選擇單片機選擇方案一:使用 89C51 單片機指令簡單,易學(xué)易懂,外圍電路簡單,硬件設(shè)計方便,IO 口操作簡單,無方向寄存器,資源豐富, ,價格便宜、容易購買,資料豐富容易查到,程序燒寫簡單,但要外接 A/D、D/A 芯片,來實現(xiàn)對整個供電系統(tǒng)的控制,需要占用較多的 I/O 接口,會使普通單片機承載過大的數(shù)據(jù)處理任務(wù),功耗較大。特殊的處理器特點:上電復(fù)位以及可編程的掉電檢測,片內(nèi)經(jīng)過標定的 RC 振蕩器,片內(nèi)/片外中斷源,6種睡眠模式,可以通過軟件進行選擇的時鐘頻率,通過熔絲位可以選擇兼容模式,全局上拉禁止功能。主電路選擇方案一:有一種型號為 LM2956 的降壓開關(guān)電壓調(diào)節(jié)器,能夠輸出 3A 的驅(qū)動電流,同時具有很好的線性和負載調(diào)節(jié)特性,該器件內(nèi)部集成頻率補償和固定頻率發(fā)生器,極大地簡化了開關(guān)電源電路的設(shè)計。由此設(shè)計而成的電路易于實現(xiàn)脈寬調(diào)制,然而在真正使用時會發(fā)現(xiàn),為得到要求的電壓輸出值,開關(guān)管 S 的參數(shù)選取相當不易。此方案僅用一塊控制芯片不但可以實現(xiàn)對 BUCK 電路的控制,而且可以結(jié)合 A/D 和D/A 對輸出電壓進行調(diào)整與顯示。ATmega16 單片機自帶 8 路 10位 A/D 轉(zhuǎn)換。用單片機和其它控制器電路同實現(xiàn)整個系統(tǒng)的控制。5方案二:先采用光耦 TLP250 和單片機進行隔離,有效保護單片機,之后用IRF3205 去驅(qū)動 MOS 管 IRF9530,控制輸出電壓。圖 驅(qū)動電路圖輔助電源方案一:采用集成的三端穩(wěn)壓集成芯片,7815 和 7805 分別給光耦和運放,還有單片機供電,7815 內(nèi)含過流,過熱,過載保護電路。內(nèi)部有完善的保護電路,包括電流限制及熱關(guān)斷電路等。然后再經(jīng)過 7805 產(chǎn)生 5V 電壓。6圖 輔助電源電路圖電流、電壓采樣 采樣模塊是輸出電壓經(jīng)過采樣回來, A/D 進行處理,然后使輸出更加穩(wěn)定和準確。電流采樣是經(jīng)過 歐/4 瓦的采樣電阻后,縮小一定倍數(shù),然后經(jīng)過一個差分電路,將電壓值送入單片機進行處理如圖 。16 個引腳,3 個控制引腳,8 位雙向數(shù)據(jù)端引腳。用戶可以對 EN、RW、RS 的數(shù)據(jù)進行編程,然后通過 D0~D7 輸出顯示數(shù)據(jù)。 表 按鍵功能表鍵名 S1 S2 S3 S4功能 PWM1 加 % PWM1 減 % PWM2 加 % PWM2 減 %CPU 端口號 PD0 PD1 PD2 PD3(三) 、軟件設(shè)計主程序如圖 為主程序流程圖,一開始給系統(tǒng)各部分初始化,包括按鍵初始化,液晶初始化,PWM 初始化,AD 采樣初始化,中斷初始化,然后在進入大循環(huán),在循環(huán)內(nèi)進行數(shù)據(jù)的顯示,包括當前輸入的占空比為多少,當前采樣回來的數(shù)字量和實際的電壓值為多少。同時每 10 毫秒進入定時器 0 中斷進行調(diào)整。按鍵采用四個獨立的按鍵,分別控制 PWM1,PWM2 的加和減,當有鍵按下時,掃描按鍵,然后進入判斷。然后返回數(shù)據(jù)。9按鍵開始P D 0 是否按下 ?O C R 1 A + 1O C R 1 B + 1O C R 1 A 2 6 5 amp。 OC R 1 B 2 6 5 ?O C R 1 A = 2 6 5O C R 1 B = 2 6 5O C R 1 A 1O C R 1 B 1O C R 1 A 2 4 0 amp。 OC R 1 B 2 4 0 ?O C R 1 A = 2 4 0O C R 1 B = 2 4 0P D 1 是否按下 ?P D 2 是否按下 ?O C R 1 A + 1O C R 1 B 1O C R 1 A 2 6 1 | | O CR 1 B 2 5 1 ?O C R 1 A = 2 6 1O C R 1 B = 2 5 1P D 3 是否按下 ?O C R 1 A 1O C R 1 B + 1O C R 1 A 2 5 0 amp。 OC R 1 B 2 6 0 ?O C R 1 A = 2 5 0O C R 1 B = 2 6 0結(jié)束YNYNYNNYYYYYNNNN 圖 按鍵程序流程圖液晶程序圖 為 1602 液晶屏的程序框圖,1602 由 3 個控制引腳,8 位雙向數(shù)據(jù)端引腳控制顯示的內(nèi)容和位置。初始化函數(shù)主要對液晶屏的顯示模式進行設(shè)定,寫命令函數(shù)主要是對顯示的位置和顯示的方式進行設(shè)置,寫數(shù)據(jù)函數(shù)是決定顯示的內(nèi)容。一開始配置 AD 寄存器,然后啟動 AD 寄存器,然后將采樣回來的數(shù)據(jù)組合成 10 位的數(shù)據(jù),然后采樣 8 次,去頭去尾后,對其求平均值。然后進行電壓判斷,是否小于要求的最小值,如果是的話進行鉗位,然后是否小于設(shè)定的最大值,是的話,就是在要求范圍內(nèi),那就進行 PID 算法的調(diào)整,進行電流的分流。11開始A D 配置 , 啟動A D采樣 8 次獲取采樣值獲取 A D 采樣 8次的平均值A(chǔ) D采樣值小于 8 . 4 V對應(yīng)數(shù)字量 ?O C R 1 A = 2 6 5O C R 1 B = 2 6 5采樣值小于 7 . 6 V對應(yīng)數(shù)字量 ?O C R 1 A = 2 4 0O C R 1 B = 2 4 0結(jié)束中斷 P I D 電流計算YNN圖 AD 采樣程序流程圖中斷、PID 流程圖如圖 和 分別是中斷流程圖和 PID 算法程序流程圖。PID 算法是根據(jù)公式,對采樣電阻采樣回來的電壓進行反饋計算。12開始定時器 0 中斷進行 P I D 調(diào)整結(jié)束配置定時器 0 中斷 , 定時 1 0 毫秒定時器 0 中斷 1 0毫秒 ?電壓比較反饋定時器 0 中斷YN開始誤差 = 設(shè)定值 A D 采樣值P I D 算法誤差是否小于最小偏差 ?進入 P I D 公式調(diào)整調(diào)整值 = 0調(diào)整值是否大于設(shè)定最大值 ?調(diào)整值 = 設(shè)定最大值調(diào)整值是否大于設(shè)定最小值 ?調(diào)整值 = 設(shè)定最小值輸出值 = 調(diào)整值 +輸出值輸出值是否大于設(shè)定最大值 ?輸出值 = 設(shè)定最大值輸出是否小于設(shè)定最小值 ?輸出值 = 設(shè)定最小值結(jié)束YNNYYNYNYN 圖 定時器 0 中斷 圖 PID 算法流程圖四、調(diào)試過程(一) 、遇到的問題及解決辦法(1) 、在對電路板進行設(shè)計,做板子的時候,經(jīng)過封塑機出來后的板子,然后用腐蝕劑進行腐蝕,得到了一塊單面板,當我們把器件焊上去的時候發(fā)現(xiàn),跟我們預(yù)期的反了一下,所有的器件都反了一下,這樣子,整個電路就不能用了。而且板子也能正常工作。經(jīng)過計算后選取了一個合適的阻值,使波形能夠達到電路的要求。將夾子焊好后,電路正常工作。還有液晶刷新很慢,按鍵要按很久才能用。這樣才是在使用外部的 16M 晶振。能夠達到基本的要求。(二) 、數(shù)據(jù)分析表 和表 是在電流 1:1 情況下,比例調(diào)節(jié)和 PI 調(diào)節(jié)的數(shù)據(jù)對比。表 負載為 ,兩模塊電流按 1:2 分配情況(比例反饋)I1(A) I2 (A) I 總 (A) Uo(V)給定值 測量值 絕對誤差 % 7% % %表 負載為 ,兩模塊電流按 1:2 分配情況(PI 反饋)I1(A) I2 (A) I 總 (A) Uo(V)給定值 測量值 絕對誤差 % % % 5%對比表 和表 可以看出,同樣是 1:1 的電流分配情況下,比例調(diào)節(jié)的誤差在5%以內(nèi),達到了基本的要求,但是在 PI 調(diào)節(jié)下,可以看出誤差精度已經(jīng)達到了 2%的要求。對比著兩組數(shù)據(jù),可以看出了在 PI 的調(diào)節(jié)下精度大大的提升,說明了 PID 算法在控制方面的優(yōu)勢,使整個系統(tǒng)更加完善。整個學(xué)習(xí)的過程是很重要的。更好的了解了電力電子和開關(guān)電源相關(guān)的知識,也更深入的學(xué)習(xí)到了一些課堂上無法學(xué)習(xí)到的東西。對于編寫程序,整體的邏輯性還要加強。對于展望,希望能夠在以后的學(xué)習(xí)中把硬件方面學(xué)的更好,能夠把不足給彌補。學(xué)的更好,希望一次比一次有進步。 //停止定時器 TCNT0 = 0x64。 //允許中斷 SREG |= BIT(7)。 pid1_calculating()。 //PID 調(diào)整 OCR1B _vol()。 DDRD|=BIT(4)|BIT(5)。 //兩路 PWM,匹配清零 TCCR1B = 0x11。 //此數(shù)為 16 位 PWM,16M 晶振,clk/(2*N*TOP),頻率為 10K OCR1A = 255。 //占空比 %}void main(){17 KPWM()。 //1602 初始化函數(shù) key_init()。 //定時器 0 初始化 adcport_init()。 //顯示 PWM 函數(shù)press()。 //顯示 AD0 的模擬量和數(shù)字量 }}//****************************//ifndef _1602_H_define _1602_H_define uchar unsigned chardefine uint unsigned intvoid delay(uint MS)。void write_dat(uint dat)。void Display_PWM()。endif//************************//includeincludeincludedefine uchar unsigned chardefine uint unsigned int//******顯示固定數(shù)組 PWM:*********//const uchar tab[]=P