周鄭+黃斐+蘇丹+郭漢明
摘要:
如何讓嵌入式設(shè)備在保持體積不變的情況下為其提供穩(wěn)定可靠的電源,是嵌入式設(shè)備使用中面臨的重要問題之一?;诖?,設(shè)計了一種功耗低、體積小、性能穩(wěn)定的電源管理系統(tǒng)。首先介紹了基于單片機(jī)STM32F4的管理系統(tǒng)的設(shè)計框架,然后分別闡述各個子模塊的工作原理與設(shè)計,最后介紹了系統(tǒng)電量測量以及開關(guān)機(jī)的軟件設(shè)計,并對電源管理系統(tǒng)進(jìn)行測試。實(shí)驗(yàn)結(jié)果表明,該電源管理系統(tǒng)達(dá)到了預(yù)期的設(shè)計要求。
關(guān)鍵詞:
電源管理;鋰電池;電路設(shè)計;供電穩(wěn)定性
DOIDOI:10.11907/rjdk.172213
中圖分類號:TP319
文獻(xiàn)標(biāo)識碼:A文章編號文章編號:1672-7800(2018)001-0105-03
Abstract:It is must to face the important issues that how to make the embedded device to keep the volume of the case to provide a stable and reliable power supply, embedded devices in the use and market development. Based on this, a low power consumption, small size, stable performance of the power management system is designed in the article. Firstly, the hardware design framework of management system based on STM32F4 is introduced, and on this basis, introduced the work of each sub-module principle and design. Finally, its introduced the overall software design of the system, test the power management system. The experimental results show that the design of the power management system to achieve the desired design requirements.
Key Words:power management; lithium battery; circuit design; stability of power supply
0引言
電源管理系統(tǒng)是嵌入式系統(tǒng)中不可缺少的一部分,在實(shí)際使用中由于使用場地限制等一些不可避免的因素,使得給設(shè)備接入固定電源非常困難。在實(shí)際應(yīng)用中,一般使用鋰離子電池為嵌入式系統(tǒng)供電。鋰電池因具有體積小、容量大等特點(diǎn),在嵌入式設(shè)備領(lǐng)域得到了廣泛應(yīng)用[1-3]。但鋰離子電池能量密度較大,過充、過放、溫度過高都會影響鋰離子電池的安全性和使用壽命[4]。傳統(tǒng)充電器一般采用全模擬控制電路,無法保證充電過程的安全[5]。因此,為了使嵌入式系統(tǒng)的持續(xù)工作時間更長、電池的充放電更加安全可靠,電源管理系統(tǒng)在其中發(fā)揮著重要作用[6]。
本文提出一種適用于嵌入式系統(tǒng)的小型化、通用型鋰電池電源管理系統(tǒng),可以非常穩(wěn)定地為微型光譜儀系統(tǒng)持續(xù)供電。該系統(tǒng)正常情況下使用可充電鋰電池供電,也可以利用外部直流電源適配器供電,并能自動識別當(dāng)前的供電模式;具有電量測量功能,能夠?qū)崟r檢測電池剩余電量,提醒用戶充電及保存測量數(shù)據(jù),以防電量突然耗盡導(dǎo)致數(shù)據(jù)丟失;具有電壓轉(zhuǎn)換功能,能夠?qū)我坏妮斎腚妷恨D(zhuǎn)換為系統(tǒng)工作時需要的不同電壓值,保證系統(tǒng)正常運(yùn)行。
1系統(tǒng)總體設(shè)計
本文提出的電源管理系統(tǒng)總體設(shè)計框架如圖1所示,該系統(tǒng)以單片機(jī)STM32F4為主控制器,可以通過軟件實(shí)現(xiàn)系統(tǒng)的開關(guān)機(jī)與電量查詢,同時外部集成了鋰電池充放電管理模塊、電池電量檢測模塊、DCDC升壓模塊與單鍵開關(guān)控制模塊。
其中BQ24266和BQ2970構(gòu)成了電源切換電路和充放電保護(hù)模塊。STM32F4單片機(jī)則通過DS2781對鋰電池進(jìn)行電壓采集,再通過A/D轉(zhuǎn)換實(shí)現(xiàn)對電池電量的測量,而且STM32F4單片機(jī)擁有標(biāo)準(zhǔn)庫函數(shù),可以非常輕松地對芯片驅(qū)動進(jìn)行開發(fā)。最后通過TPS63051實(shí)現(xiàn)直流電壓的升壓過程,完成對后繼設(shè)備的供電。
2電路設(shè)計
2.1電量檢測模塊
本文以單片機(jī)STM32F4為核心,設(shè)計了一種基于DS2781的電池電量測量電路,利用庫倫計數(shù)法進(jìn)行電量測量。DS2781是美信半導(dǎo)體公司的單片式電量計,可用于單節(jié)或兩節(jié)電池的電量測量,電路如圖2所示。
芯片內(nèi)部集成了精密電壓、溫度和電流測量系統(tǒng),通過測量精密采樣電阻R17兩端的電壓差,測量出入電池的電流并進(jìn)行電量累計,電池電壓為VIN端相對于VSS端的電壓。芯片根據(jù)以上測量的值和存儲器中描述電池組的工作特性參數(shù),計算當(dāng)前溫度下電池的絕對電量和相對電量等結(jié)果。MCU通過DQ端與芯片進(jìn)行通訊,讀取電池組電量的相關(guān)信息。
2.2電池充放電管理模塊
電池充放電管理模塊主要由電源切換模塊和電源保護(hù)模塊組成。電源切換模塊以芯片BQ24266為主體,當(dāng)外部直流充電電源接入系統(tǒng)后,會將系統(tǒng)由鋰電池供電轉(zhuǎn)變?yōu)橥獠侩娫垂╇?,并且可以設(shè)置充電電流的最大值;充放電保護(hù)模塊主要用于預(yù)防過充、過放對鋰電池造成損壞,當(dāng)電池電壓處于2.8V~4.3V之間時,系統(tǒng)能夠正常運(yùn)行,當(dāng)?shù)陀诨蚋哂谠摲秶鷷r,保護(hù)模塊會切斷供電以防出現(xiàn)意外。endprint
2.3DC/DC電壓轉(zhuǎn)換模塊
根據(jù)電池參數(shù)可知,在電池電量充足的情況下,電池的輸出電壓范圍一般在3.7~4.3V之間。但目前常見的嵌入式系統(tǒng)中,MCU供電電壓主要為3.3V。若電壓過高很可能導(dǎo)致芯片損壞,所以為了保證嵌入式系統(tǒng)正常工作,需要將電池電壓轉(zhuǎn)變?yōu)樗璧墓ぷ麟妷骸?/p>
考慮到設(shè)備的空間以及轉(zhuǎn)換效率等因素,在設(shè)計中采用DC/DC轉(zhuǎn)換電路。DC/DC轉(zhuǎn)換電路具有轉(zhuǎn)換效率高、輸出電流高、靜態(tài)電流低等特點(diǎn)。所設(shè)計的穩(wěn)壓電路可將3.7~5.0V的電壓下降到3.3V,其外圍電路非常簡單,僅由幾個濾波電容和電感組成。
2.4單鍵開關(guān)控制模塊
開關(guān)控制電路主要是實(shí)現(xiàn)對嵌入式設(shè)備的供電控制,同時使系統(tǒng)在關(guān)機(jī)狀態(tài)下也可以對電池充電。按下KEY1后,系統(tǒng)軟件會根據(jù)按下的持續(xù)時間判斷是誤觸還是開機(jī)動作,并通過PMOS管F2為系統(tǒng)供電,電路如圖3所示。本文設(shè)計的電路不僅可以實(shí)現(xiàn)單一按鍵開關(guān)機(jī)功能,還可以通過軟件實(shí)現(xiàn)關(guān)機(jī)功能。
3軟件設(shè)計
3.1整體流程
該電源管理的系統(tǒng)軟件采用C語言編寫,系統(tǒng)采用模塊化設(shè)計,主要包括:STM32F4單片機(jī)模塊、定時器模塊、電池電量與電壓檢測模塊。程序流程如圖4所示。
當(dāng)充電管理系統(tǒng)接入電源后,打開開關(guān),系統(tǒng)進(jìn)行初始化,之后系統(tǒng)會判斷是由電池供電還是外部直流電源供電。當(dāng)只有電池供電時,系統(tǒng)每隔1min進(jìn)行一次電量測量,當(dāng)電量低于10%時,系統(tǒng)將發(fā)送電量過低信息提醒使用者;當(dāng)接入外部直流電源時,也會每隔10min進(jìn)行一次電量檢測,當(dāng)檢測到電池電量充滿時,將提醒使用者結(jié)束充電。如果期間再次按下開關(guān)不超過3s,系統(tǒng)進(jìn)入待機(jī)狀態(tài);如果超過3s,系統(tǒng)則自動關(guān)機(jī)。
3.2電量測量驅(qū)動程序設(shè)計
系統(tǒng)中的電量測量程序通過Keil軟件開發(fā),利用芯片DS2781的DQ端與STM32F4的串口通信進(jìn)行數(shù)據(jù)的接收與發(fā)送。芯片擁有16字節(jié)的EEPROM存儲器供主機(jī)系統(tǒng)使用,可將溫度、電壓、電流等一系列信息以16位二進(jìn)制形式通過串口發(fā)送到主機(jī)上進(jìn)行綜合判斷處理。
STM32F4的所有開發(fā)功能均封裝在庫中,嵌入式系統(tǒng)的整個初始化功能通過user_main.c文件實(shí)現(xiàn)。在對電量測量的驅(qū)動程序中,首先需要通過配置STM32F4的端口使能IO端口,接下來讀取DS2781數(shù)據(jù),通過void DS2781_Write_Byte(u8 dat)函數(shù)對傳輸進(jìn)行設(shè)置,STM32F4每次從DS2781中讀取的數(shù)據(jù)長度為一個字節(jié);接下來讀取DS2781中的電壓值,首先寫入DS2781的寄存器地址,接著寫入STM32F4中用于存儲電壓值的寄存器地址,最后發(fā)送16位電壓值。以下為傳輸函數(shù)配置:
u8 j; u8 testb;
DS2781_IO_OUT();
for (j=1;j<=8;j++)
{
testb=dat&0x01; dat=dat>>1;
if (testb)
{
DS2781_DQ_OUT_Reset;
for(timedelay=0;timedelay<65;timedelay++);
DS2781_DQ_OUT_Set;
for(timedelay=0;timedelay<2100;timedelay++);
}
else
{
DS2781_DQ_OUT_Reset;
for(timedelay=0;timedelay<1100;timedelay++);
DS2781_DQ_OUT_Set;
for(timedelay=0;timedelay<65;timedelay++);
}
}
當(dāng)系統(tǒng)開機(jī)運(yùn)行后,系統(tǒng)會每隔10min通過u16 Read_Voltage (void)函數(shù)向系統(tǒng)發(fā)送當(dāng)前的電壓信息,通過u16 Read_Temperature(void)函數(shù)向系統(tǒng)發(fā)送溫度信息,以及通過u16 Read_Current (void)函數(shù)向系統(tǒng)發(fā)送電流信息,系統(tǒng)會通過這些信息綜合判斷當(dāng)前電池的剩余電量。以下為電壓測量函數(shù):
u16 MSB, LSB,Temp,Voltage;
DS2781_Rst();
DS2781_Check();//If a presence is detected, continue to read
DS2781_Write_Byte(0xCC); // Skip Net Address Command
DS2781_Write_Byte(0x69); // Read Registers Command
DS2781_Write_Byte(0x0C); // Voltage Register Address
MSB = DS2781_Read_Byte(); // Read msb
LSB = DS2781_Read_Byte() & 0xE0; // Read lsb and mask off lower 5 bits
Temp = (MSB<<8) + LSB;
Voltage = ((Temp>>5) * 976) / 100; //Voltage in Volts
return Voltage; //返回電壓值
3.3電源開關(guān)驅(qū)動程序設(shè)計
系統(tǒng)軟件會在系統(tǒng)上電KEY1鍵松開后的512ms后檢測KILL端的電平狀態(tài),如果KILL端保持高電平,則也會讓芯片的EN端維持高電平,否則EN端變?yōu)榈碗娖健R虼?,系統(tǒng)上電后,STM32F4需要將KILL端置高,使EN維持置高,完成開機(jī)過程。endprint
為了防止誤觸系統(tǒng)造成開機(jī),在程序中設(shè)計了當(dāng)開機(jī)鍵按下后,STM32F4上電對按下的時間進(jìn)行計時,當(dāng)計時超過1.5s時使能EN端,為系統(tǒng)供電并報告STM32F4系統(tǒng)已開啟。系統(tǒng)同時也設(shè)置了軟件關(guān)機(jī)功能,STM2F4通過上位機(jī)讓使用者選擇是否關(guān)機(jī),若選擇關(guān)機(jī),則STM32F4將KILL端置低,EN端也會隨之降低電平,完成關(guān)機(jī)。
4測試結(jié)果與分析
為了測試設(shè)計的充放電管理電路的實(shí)際應(yīng)用效果,采用5V直流電源對電路供電,外接單節(jié)4.3V鋰離子充電電池,每隔10min測量一次電池的充電電流,如圖5所示。
從表1和圖5中可以看出,電池在充電過程中分為電流增大階段、電流平穩(wěn)階段、電流減小階段。電池開始充電時,充電電流迅速增大;充到一定程度后,電流會平穩(wěn)在500mA左右;當(dāng)電池電量快充滿時,充電電流減小。整個過程符合預(yù)期的充電情況,充電過程平穩(wěn)。
為了測試充放電管理系統(tǒng)的放電功能,將其接入到電子負(fù)載中進(jìn)行電量釋放,每隔5min測量一次電池電壓,得到該模塊功耗如圖6所示。
在系統(tǒng)的實(shí)際應(yīng)用中,當(dāng)電池電壓不足2.6V時,系統(tǒng)供電非常不穩(wěn)定,此時BQ29707會切斷電源。通過表2可以看到,電池的電壓下降速度非常平穩(wěn),證明設(shè)計的電源管理系統(tǒng)供電非常穩(wěn)定,達(dá)到了設(shè)計要求。
5結(jié)語
本文設(shè)計的光譜儀電源管理系統(tǒng)經(jīng)過實(shí)際的PCB制板調(diào)試,測試結(jié)果表明,系統(tǒng)運(yùn)行穩(wěn)定,能夠很好地進(jìn)行電量檢測,且測量誤差非常小,基本上達(dá)到了嵌入式設(shè)備對電源管理系統(tǒng)的要求,并且電源利用效率高,具有較高的實(shí)用價值。該系統(tǒng)完全可以移植到各類嵌入式設(shè)備中,以提升設(shè)備的續(xù)航能力。
參考文獻(xiàn):
[1]謝卓,趙朋斌.一種鋰電池電量監(jiān)測電路設(shè)計方法[J].現(xiàn)代電子技術(shù),2012,35(1):192-194.
[2]倪健華,談恩民,姚普糧.基于ATT7022E與STM32多功能電力監(jiān)測儀設(shè)計[J].國外電子測量技術(shù),2015,34(5):48-51.
[3]閆俊美,楊金賢,賈永忠.鋰電池的發(fā)展與前景[J].鹽湖研究,2001,9(4):58-63.
[4]劉曉宇.鋰電池充電器芯片的設(shè)計與研究[D].上海:復(fù)旦大學(xué),2012.
[5]朱旋,歐陽名三.鋰離子電池通用充電器的設(shè)計[J].煤礦機(jī)電,2006(3):10-12.
[6]高俊.低功耗鋰電池充放電保護(hù)芯片的設(shè)計[D].武漢:華中科技大學(xué),2006.
[7]王志強(qiáng).開關(guān)電源設(shè)計[M].北京:電子工業(yè)出版社,2005.
[8]石璞,董再勵.基于EKF的AMR鋰電池SOC動態(tài)估計研究[J].儀器儀表學(xué)報,2006,27(6):1-3.
[9]李申飛,易菊蘭.電池電量精確測量方法的研究與實(shí)現(xiàn)[J].計算機(jī)工程與應(yīng)用,2009,45(17):244-248.
[10]劉霞,鄒彥艷,金梅,等.鋰電池電量的動態(tài)預(yù)測[J].大慶石油學(xué)院學(xué)報,2004,28(2):81-83.
[11]李真芳,李世雄.MC34063在嵌入式電源設(shè)計中的應(yīng)用[J].國外電子元器件,2005(6):73-74.
[12]孟祥旭,于忠得.采用MC34063芯片的DC-DC電源變換控制器電源電路[J].大連輕工業(yè)學(xué)院學(xué)報,2005(4):300-302.
(責(zé)任編輯:黃?。〆ndprint