鉅大LARGE | 點(diǎn)擊量:1197次 | 2020年05月13日
PIC單片機(jī)加PWM芯片的開關(guān)電源的設(shè)計(jì)
隨著各種電器和儀表設(shè)備的日漸豐富,對電源應(yīng)用的靈活性提出了更高的要求。設(shè)計(jì)一款使用靈活、方便且價(jià)格相對便宜的通用電源,正越來越成為市場所需?,F(xiàn)代單片機(jī)正朝著處理速度越來越快,外設(shè)資源越來越豐富,價(jià)格越來越便宜的方向發(fā)展,將單片機(jī)融入電源的設(shè)計(jì)中可以極大地提升電源的性能和靈活性。本文介紹了一種單片機(jī)加pWM芯片的開關(guān)電源設(shè)計(jì)方法,既可以保留pWM芯片帶來的穩(wěn)定工作性能,又可以利用單片機(jī)的控制能力供應(yīng)各種人機(jī)交互和通信接口。筆者設(shè)計(jì)的電源作為通用電源使用,可以供應(yīng)靈活可編程的電壓電流輸出,另外還可以設(shè)置成鉛酸電池充電器的模式,具有廣闊的應(yīng)用前景。1系統(tǒng)功能
通過對電源的編程,可以方便地實(shí)現(xiàn)圖1所示的電壓輸出波形。其中,V1、V2、T1、T2、dv、dt都是可以通過編程來設(shè)定的。電壓值的輸出范圍為0~16V,最大輸出電流為10A。輸出電壓精度為0.1V,電流精度為10mA。電流的設(shè)定值指的是允許輸出的最大電流,也可以被編程為與輸出電壓相同的波形。
圖1編程輸出電壓波形
另外,電源也可以工作在鉛酸電池充電器的模式(簡稱“LBC模式”)。根據(jù)鉛酸電池的特性,當(dāng)電源工作在LBC模式時(shí),電源首先將輸出較大的充電電壓和電流V1/I1,至少維持10s;當(dāng)充電電流降到小于設(shè)定值I2時(shí),電源輸出較小的充電電壓和電流V2/I2。假如到了設(shè)按時(shí)間T1,充電電流還未降到I2以下,這時(shí)電源輸出也會(huì)降為V2/I2。當(dāng)輸出電流再次大于I2時(shí),電源將再次輸出V1/I1充電。其中,V2設(shè)定值必須小于14V。若設(shè)置為大于14V,電源會(huì)自動(dòng)將其設(shè)成14V。I2的值必須大于1/8I1,否則將被自動(dòng)設(shè)成1/8I1。LBC模式如圖2所示。
圖2LBC模式
用戶可以通過3種方式對電源進(jìn)行輸出設(shè)定:
①通過電源面板上按鍵編程。通過按鍵對輸出電壓、電流限流值、時(shí)間等量進(jìn)行設(shè)定。
②通過pC機(jī)串口編程。通過將pC機(jī)的串口RS232與電源串口相連,再運(yùn)行pC機(jī)上一串口通信的軟件對電源進(jìn)行編程。
③電源間相互編程。通過將兩臺(tái)電源的串口相連,操作其中一臺(tái)電源面板上的按鍵來對另一臺(tái)進(jìn)行編程。操作的一臺(tái)電源叫做“主電源”,被編程的電源叫做“從電源”。在這種編程方式中,只能將從電源的參數(shù)設(shè)置為與主電源完全一致,而不能對各個(gè)參數(shù)進(jìn)行單獨(dú)設(shè)定。一臺(tái)電源只能供應(yīng)100W的功率。這種方式可以應(yīng)用在要較大功率的場合,可將兩臺(tái)或多臺(tái)具有相同設(shè)置的電源輸出并聯(lián)來方便地實(shí)現(xiàn)功率擴(kuò)展。
2工作原理
用單片機(jī)來控制開關(guān)電源,總的來說可以分為兩種:
第一種是單片機(jī)通過輸出pWM或DA給電源電路供應(yīng)一個(gè)基準(zhǔn)電壓,單片機(jī)本身不介入電源的反饋中(本設(shè)計(jì)所采用的就是這種方式);第二種為通過單片機(jī)輸出的pWM信號(hào)直接控制開關(guān)管工作,取代pWM芯片,但這種方式對單片機(jī)的要求較高,要具有相當(dāng)高的時(shí)鐘頻率才能滿足對輸出pWM頻率和分辨率的要求。
系統(tǒng)按模塊來分可以分成兩大模塊:
電源模塊和單片機(jī)控制模塊。電源模塊是以pWM芯片為核心的AC—DC變換器,pWM芯片采用安森美半導(dǎo)體的電流型pWM控制器NCp1200作為控制芯片。單片機(jī)控制模塊采用美國微芯公司的pIC16F874作為微控制器,重要實(shí)現(xiàn)電流電壓信號(hào)的采樣、顯示、按鍵輸入、串口通信以及為電源模塊供應(yīng)電壓電流參考等功能。兩個(gè)模塊的關(guān)系可以用圖3來說明。
圖3工作原理
圖3中,電網(wǎng)電壓經(jīng)整流濾波后供給高頻變換電路,由高頻變換電路出現(xiàn)輸出。單片機(jī)輸出兩路pWM信號(hào),給電源模塊供應(yīng)輸出電壓的參考值和電流的限流值,電源模塊按照單片機(jī)供應(yīng)的參考值輸出電壓和限定最大電流。雖然單片機(jī)采樣輸出電壓和電流進(jìn)行顯示,但這里單片機(jī)并不參與系統(tǒng)的反饋,反饋通過電源模塊來實(shí)現(xiàn)(在后面的部分中會(huì)詳細(xì)講到)。
3硬件設(shè)計(jì)
3.1電源模塊電路
NCp1200是安森美半導(dǎo)體公司(ONSemiconductor)推出的一款電流型pWM控制器。其應(yīng)用電路只要使用很少的外圍元件,使設(shè)計(jì)更加緊湊。另外,芯片內(nèi)集成輸出短路的保護(hù)電路,使成本可以進(jìn)一步降低。
圖4是以NCp1200為控制芯片的電源電路的結(jié)構(gòu)。從圖中可以看到,電源模塊中有兩種反饋類型。第一種是輸出電壓反饋,輸出電壓采樣值VSS和單片機(jī)供應(yīng)的設(shè)定值進(jìn)行比較,通過光耦來控制NCp1200芯片F(xiàn)B腳的電壓,調(diào)整DRV腳輸出pWM的脈寬來控制場效應(yīng)管的導(dǎo)通和關(guān)斷時(shí)間,從而達(dá)到調(diào)整輸出電壓值的目的。另一路反饋是電流限流反饋,當(dāng)采樣到的輸出電流值ISS超過單片機(jī)供應(yīng)的最大限流值IpWM后,比較器輸出正電壓使得光耦最大導(dǎo)通,將FB腳電壓拉低,使得NCp1200輸出pWM脈寬減小,從而達(dá)到限流的目的。當(dāng)輸出電流小于單片機(jī)供應(yīng)的限流值時(shí),限流反饋不起用途。
圖4電源模塊電路結(jié)構(gòu)
圖中的輔助電源供應(yīng)+12V的電壓,另經(jīng)三端穩(wěn)壓器件KA7805(圖中未畫出)出現(xiàn)+5V的電壓,給比較器和單片機(jī)控制模塊供應(yīng)電源。
3.2單片機(jī)控制電路
pIC16F874是美國微芯科技公司(MicrochipTechnology)的一款8位單片機(jī),內(nèi)置4K×14位的Flash、128字節(jié)的RAM和64字節(jié)的EEpROM。另外,它具有豐富的外設(shè)資源,其內(nèi)置1個(gè)UART模塊可供串口通信用,2個(gè)CCp模塊可以出現(xiàn)2路獨(dú)立、10位分辨率的pWM信號(hào),8路10位的A/D轉(zhuǎn)換通道。另外,pIC系列單片機(jī)的每個(gè)I/O能供應(yīng)25mA的驅(qū)動(dòng)電流,關(guān)于LED的接口電路可以省掉外加晶體管的驅(qū)動(dòng)電路。
單片機(jī)控制模塊結(jié)構(gòu)框圖如圖5所示。
圖5單片機(jī)控制模塊結(jié)構(gòu)框圖
單片機(jī)控制系統(tǒng)的重要接口電路:
①按鍵接口電路。采用暫觸式開關(guān)輸入,使用電阻電容去抖。
②數(shù)碼管及LED顯示電路。數(shù)碼管顯示電壓、電流、時(shí)間等信息。LED指示當(dāng)前顯示的參數(shù)種類。pIC單片機(jī)的I/O能夠直接驅(qū)動(dòng)數(shù)碼管和LED。按鍵輸入和顯示接口電路如圖6所示。
圖6按鍵輸入和顯示接口電路
③A/D采樣和pWM輸出電路。A/D負(fù)責(zé)采樣輸出電壓電流并送到數(shù)碼管顯示。當(dāng)前電流電壓設(shè)定值通過由單片機(jī)內(nèi)部的CCp模塊出現(xiàn)的兩路pWM信號(hào)來給電源模塊供應(yīng)一個(gè)參考值。單片機(jī)內(nèi)部的CCp模塊可以設(shè)置成pWM輸出模式,通過寫周期寄存器和脈寬寄存器的值就可由硬件出現(xiàn)不同頻率和占空比的pWM波形。
④串口通信接口電路。串口通信接口電路采用MAX232芯片作為RS232收發(fā)器。
4軟件設(shè)計(jì)
4.1軟件流程
軟件用C語言編寫,使用HighTech公司為pIC系列單片機(jī)供應(yīng)的pICC編譯器。系統(tǒng)上電時(shí),單片機(jī)讀出非易失性存儲(chǔ)器(EEpROM)中上次設(shè)置參數(shù),進(jìn)行電流電壓輸出。在軟件設(shè)計(jì)中,采用多個(gè)任務(wù)的概念,可以模擬一個(gè)簡單的操作系統(tǒng)進(jìn)行任務(wù)的調(diào)度。由按時(shí)器出現(xiàn)一個(gè)5ms的中斷,在中斷程序中激活各個(gè)任務(wù)的標(biāo)志。如顯示任務(wù)重要負(fù)責(zé)A/D采樣、數(shù)碼管與LED的刷新,可每5ms執(zhí)行一次。鍵盤處理任務(wù)負(fù)責(zé)按鍵的掃描、軟件去抖、鍵盤命令的解釋和掃行,可每10ms執(zhí)行一次。pWM輸出任務(wù)負(fù)責(zé)按照設(shè)定的值進(jìn)行pWM的輸出,可以每50ms執(zhí)行一次。假如有pC機(jī)或其他電源通過串口編程,單片機(jī)將在UART中斷中接收編程數(shù)據(jù),接收完改寫EEpROM中設(shè)置并強(qiáng)行復(fù)位。假如接收到通過按鍵的編程,則在按鍵處理中修改EEpROM的設(shè)置并復(fù)位。程序主流程則掃描各個(gè)任務(wù)是否到時(shí)間執(zhí)行。是,則執(zhí)行該任務(wù);否則,跳過該任務(wù)。主程序流程如圖7所示。
圖7主程序流程
4.2串口編程軟件
在pC機(jī)上設(shè)計(jì)了軟件來實(shí)現(xiàn)pC機(jī)與單片機(jī)的通信。通過該軟件可以方便地實(shí)現(xiàn)對電源電流電壓輸出、按時(shí)等參數(shù)的設(shè)定。只要將電源上的RS232口與pC機(jī)串口相連,就可實(shí)現(xiàn)通信。
利用VisualBasic中的Mscomm控件進(jìn)行串口通信軟件的設(shè)計(jì)(這里僅作簡要的介紹)。pC端數(shù)據(jù)接收通過Oncomm事件來實(shí)現(xiàn),當(dāng)接收緩沖區(qū)的數(shù)據(jù)達(dá)到rthreshold屬性設(shè)定值時(shí),就會(huì)觸發(fā)Oncomm事件,在中斷程序中讀出接收緩沖區(qū)中的數(shù)據(jù),將收到的字符型數(shù)據(jù)轉(zhuǎn)換成字符串后便送到各個(gè)文本框顯示。數(shù)據(jù)發(fā)送時(shí),首先讀出文本框內(nèi)字符串,再將其轉(zhuǎn)換成字符型數(shù)據(jù),最后通過單擊“發(fā)送”按鈕,將數(shù)據(jù)送到發(fā)送緩沖區(qū)中,從而將數(shù)據(jù)從串口發(fā)送出去。
結(jié)語
采用單片機(jī)控制,克服了開關(guān)電源單一輸出的缺點(diǎn),能夠供應(yīng)靈活的電壓輸出。通過功率聯(lián)合擴(kuò)展的功能,可以滿足不同功率場合的要求。電源也可以被當(dāng)成鉛酸電池充電器來使用,能自動(dòng)調(diào)整充電電流和電壓,應(yīng)用場合非常廣泛。