基于SMBus的智能電池系統(tǒng)
作者Email: ramrod@sina.com.cn
摘要: 本文概要地介紹了智能電池系統(tǒng),并介紹了一種典型芯片——Max1660的電量計數(shù)及電池保護等功能,給出了一個應(yīng)用實例。
關(guān)鍵詞:智能電池 電量計數(shù) SMBus Max1660
現(xiàn)代社會對產(chǎn)品壽命需求和對產(chǎn)品的性能和功能的要求迅速提高。最新的掌上電腦要求把最多的功能壓到最少的空間中去,這就驅(qū)使電池的設(shè)計者不得不考慮在產(chǎn)品設(shè)計方面做顯著的變化。這包括;使用低壓器件,關(guān)掉未在使用的子系統(tǒng),對應(yīng)用程序進行管理,發(fā)展智能電池和電池管理系統(tǒng)等。
新的智能電池的設(shè)計需要各種不同甚至相反的領(lǐng)域的知識,在某些應(yīng)用中甚至是全新領(lǐng)域的知識。這些領(lǐng)域包括關(guān)于電池運行的電池化學(xué)知識;關(guān)于系統(tǒng)各零件相互作用的系統(tǒng)工程知識和使用者怎樣操作一個特殊設(shè)備的設(shè)計知識。因此,一個規(guī)范或者說一個標準將必不可少,它可以簡化設(shè)計,提高系統(tǒng)的可移植性。
智能電池規(guī)范
電池的智能化是最近才發(fā)展起來的,這就使得智能電池的實現(xiàn)方案多種多樣。因而,一些標準開始出現(xiàn)。這些標準一般是由便攜電腦制造商推動的。但在一些單電池系統(tǒng)中,例如在蜂窩式移動電話系統(tǒng)中,成本問題限制了電池系統(tǒng)一些操作,使智能電池標準的發(fā)展復(fù)雜化了。
一線接口 電池包與系統(tǒng)的通訊是一個很重要的需要考慮的因素。這個接口要有盡可能少的信號線以減少電池包的連線數(shù)。因而,許多單電池系統(tǒng)采用一線接口(1-wire),例如,蜂窩移動電話。在1-wire接口中,0或1取決于信號線上0的有效周期。這種類型的接口提供了一個異步連接。當前有三種不同的一線接口(1-Wire),它們之間只有輕微的差別。由于其內(nèi)在特點,一線接口的傳輸速率很慢。在低成本系統(tǒng)中,這樣的速率是可接受的,因為只有極少的信息需要傳遞給主機。但在多電池系統(tǒng)中,就有更多的信息需要傳遞給主機,這是就要求有更快的接口速度了。
SMBus接口 1996年,Intel(聯(lián)合其它公司)推出了一個由PC-I2C變異而來的系統(tǒng)管理總線(SMBus)。它與I2C總線一樣有兩根通訊線,但是加入了低電平選擇并且對器件對總線的控制實踐做了嚴格規(guī)定。作為系統(tǒng)管理總線(SMBus)發(fā)展的一部分,Intel與其合作伙伴創(chuàng)建了智能電池標準。這個規(guī)范在SMBus接口頂層增加了一個協(xié)議,定義了一系列的命令以用于電池包、電池充電器、電池選擇器和主機之間的通訊。而這些命令和協(xié)議并非必需的,可以選用。
基于MAX1660的智能電池應(yīng)用實例:
MAX1660 是美信公司生產(chǎn)的一種能夠精確測量流入充電和流出放電系統(tǒng)電池組的電量計數(shù)芯片,它能將電池電量存入內(nèi)部兩個獨立的32 位充電和放電計數(shù)器。它通過強大的數(shù)字比較功能,判斷當充電或放電計數(shù)器達到主機設(shè)定值時,中斷主CPU,來完成主機設(shè)定得功能。該器件也可以在電流方向發(fā)生變化時通知主機,并具備保護電池組短路及過流的功能。MAX1660 提供一個兼容于SMBUSTM系統(tǒng)管理總線的二線串行接口來訪問充電放電量計數(shù)器和內(nèi)部寄存器,同時也能夠給主機提供一條可用作中斷信號的系統(tǒng)管理總線報警線SMBALERT。
1. MAX1660 的引腳及功能
MAX1660 的引腳排列如圖1 主要引腳功能如下:
u INT,中斷信號漏極開路輸出,低電平有效,INT接上拉電阻100k至VL引腳。
u REF,2.00V 精密電壓基準輸出,REF對AGND 接10nF旁路電容。
u SHDN,關(guān)斷控制輸入,低電平有效。
u CS,電流檢測電阻輸入。
u ODI,放電過流檢測輸入。
u OCI,充電過流檢測輸入。
u VL,3.3V 5mA線性電壓輸出VL對GND接0.33mF旁路電容。
u BATT,電源輸入。
u ODO,高壓漏極開路MOSFET柵極驅(qū)動輸出,ODO控制電池放電信道的開/關(guān)。
u OCO,高壓漏極開路MOSFET柵極驅(qū)動輸出,OCO控制電池充電信道的開/關(guān)。
u RST,上電復(fù)位輸出,低電平有效RST接上拉電阻100k至VL引腳。
u SDA,串行數(shù)據(jù)輸入/輸出,在SDA和VL 之間接10k電阻。
u SCL,串行時鐘輸入,在SCL和VL之間接10k電阻。
2.MAX1660的控制、狀態(tài)與讀寫時序
MAX1660有一個16位的狀態(tài)字和一個16位的控制字,主機可通過讀狀態(tài)字來判斷電池狀態(tài),寫控制字來控制電池系統(tǒng)。其狀態(tài)字的定義如表1,控制字定義為如表2
表1
位名稱 |
位 |
上電復(fù)位狀態(tài) |
說明 |
—— |
8--15 |
1 |
未使用通常返回1。 |
ODSTATUS |
7 |
0 |
過流中斷狀態(tài)位,當放電過流時,此位置位。當軟關(guān)斷、上電復(fù)位或控制字CLRINT位置位時,此位清零。 |
OCSTATUS |
6 |
0 |
過流中斷狀態(tài)位,當充電過流時,此位置位。當軟關(guān)斷、上電復(fù)位或控制字CLRINT位置位時,此位清零。 |
COMPSTATUS |
5 |
0 |
COMPINT中斷狀態(tài)位,當COMPINT中斷發(fā)生時,此位置位。當軟關(guān)斷、上電復(fù)位或控制字CLRINT位置位時,此位清零。 |
COUNTSTATUS |
4 |
— |
SETCOUNT狀態(tài)指示位,當控制字SETCOUNT置位時此位置位。當SETCOUNT位清零時,此位清零。 |
SHDNSTATUS |
3 |
0 |
軟關(guān)斷狀態(tài)指示位,當器件處于軟關(guān)斷模式時返回1,否則返回0 |
CHARGESTATUS |
2 |
0 |
充電狀態(tài)指示位,充電狀態(tài)檢測時此位置位,放電狀態(tài)檢測時此位清零。 |
DIRCHANGE |
1 |
0 |
當電流方向發(fā)生變化時,此位置位。當軟關(guān)斷、上電復(fù)位或控制字CLRINT位置位時,此位清零。祥見參考文獻1的電流變化檢測部分。 |
—— |
0 |
0 |
未使用通常返回1。 |
表2
位名稱 |
位 |
上電復(fù)位狀態(tài) |
說明 |
—— |
11--15 |
1 |
未使用。 |
DIRINTENABLE |
10 |
0 |
電流方向變化允許位。此位置位允許方向變化中斷發(fā)生,清零則禁止此功。祥見Direction-Change Detection Function section。 |
SOFTSHDN |
9 |
1 |
軟關(guān)斷允許位,此位置位允許軟關(guān)斷,清零恢復(fù)正常操作。祥見參考文獻1的Shutdown Modes section。 |
CLRCOUNTER |
8 |
1 |
清計數(shù)器,寫1將放電計數(shù)器和充電計數(shù)器全都清零。 |
CLRINT |
7 |
0 |
清中斷,寫1使ODSTATUS, OCSTATUS, COMPSTATUS, 和DIRCHANGE.清零 |
SETCOUNT |
6 |
0 |
計數(shù)器選擇位,用來選擇將哪個計數(shù)器的值傳輸?shù)?/SPAN>COUNT寄存器,置1選擇充電計數(shù)器,清零則選者放電計數(shù)器。祥見文獻1的Charge and Discharge Counters section。 |
OFFSETMEAS |
5 |
0 |
偏移量測量允許位,置位時使CS端與內(nèi)部電路斷開,短接到AGEND。清零時CS端重新接到內(nèi)部電路,恢復(fù)正常操作。參看文獻1的internal Offset Measurementsection。 |
COMPENABLE |
4 |
— |
比較中斷允許位。置1允許數(shù)字比較中斷功能,清零則禁止此功能。參見文獻Digital Compare Function section. |
ODHI |
3 |
0 |
ODO兩位輸出狀態(tài)控制位的第一位,參見文獻1的Overcurrent Detection section。 |
ODLO |
2 |
0 |
ODO兩位輸出狀態(tài)控制位的第二位。為保證恰當?shù)倪^流保護狀態(tài)ODLO應(yīng)該總是保持為零。參見文獻1的Overcurrent Detection section。 |
OCHI |
1 |
0 |
OCO兩位輸出狀態(tài)控制位的第一位,參見參考文獻1的Overcurrent Detection section. |
OCLO |
0 |
0 |
OCO兩位輸出狀態(tài)控制位的第一位。為保證恰當?shù)倪^流保護狀態(tài)OLO應(yīng)該總是保持為零。參見文獻1的Overcurrent Detectionsection. |
其讀寫時序見參考文獻1,傳輸時以字節(jié)為單位。每次傳輸時首字節(jié)為SLVEADDRESS——即從器件地址。對于不同種類的SMBus器件,該地址是固定的,在出廠時就已經(jīng)固化到器件中。但也有一些器件可以通過地址端的不同接法選擇該地址。MAX1660的SLAVEADDRESS是1000111,最后一位空出,用來選擇讀或?qū)憽F渲校盀樽x出,1為寫入。第二個字節(jié)為命令字,從第三個字節(jié)開始是要讀出或?qū)懭氲臄?shù)據(jù)。
命令字可分為兩種:一為讀命令,包括讀計數(shù)寄存器和讀狀態(tài)字;一為寫命令,包括寫比較寄存器和寫控制字。計數(shù)寄存器需要分兩次讀出,命令字為:0x82(低16位)、0x83(高16位);比較寄存器也要分兩次寫入,其命令字分別為:0x00(低16位),0x01(高16位);讀狀態(tài)字和寫控制字的命令字分別為:0x84和0x04。需要注意的是:在讀計數(shù)器時,當前供電狀態(tài)決定了計數(shù)器中的數(shù)值是充電還是放電計數(shù)值。而且,更為重要的一點:在讀計數(shù)器時兩個命令必須連續(xù)執(zhí)行且必須先讀低位后讀高位,如果中間夾有其他命令或順序顛倒,在執(zhí)行這個命令時Max1660就會當作讀高16位的命令已執(zhí)行而將計數(shù)器清零。
3. MAX1660的最大充電和放電電流
MAX1660本身不能控制電池充電電流,只能控制最大充電電流值和最放電電流值。它可以通過以下方法設(shè)定設(shè)定:
設(shè)定最大充電電流值:如圖所示,
式中 ICHG,MAX即是最大充電電流值 VREF=2.0V。R5選擇1MΩ左右的電阻。
1) 設(shè)定最大放電電流值:如圖所示,
式中IDISCHG,MAX 為最大放電電流值,R3選擇1MΩ左右的電阻。
4.應(yīng)用MAX1660設(shè)計電量指示監(jiān)控充電電路
本電路是作為一個便攜式嵌入系統(tǒng)的附屬電源模塊設(shè)計的,由于系統(tǒng)成本限制,采用用了鎳氫電池。Mam1660即可監(jiān)控鋰電池又可監(jiān)控鎳基電池,而其他類電池監(jiān)控芯片大所為鋰電池監(jiān)控芯片,因此本系統(tǒng)采用Max1660來搭建系統(tǒng)。系統(tǒng)軟件采用查詢機制,其程序框圖如圖5。
系統(tǒng)力求精簡,用51單片機控制。單片機通過SDA、SCA、INT三根線與MAX1660通訊線用于對發(fā)出中斷信號,SCA、SDA分別為的時鐘線和數(shù)據(jù)線。利用max1660的數(shù)字比較功能,程序設(shè)定一個電量值,每當電量計數(shù)器達到設(shè)定值時即對單片機發(fā)出中斷,從而把單片機解放出來。計數(shù)值與電量的關(guān)系與敏感元件微電阻有關(guān),微電阻越小則可測電流越小,但電流分辨率也越小,反之則可測電流值受限,而電流分辨率增大。
系統(tǒng)主要包括兩部分:首先是通訊部分,主要是SMBus總線的驅(qū)動程序。這里參考了文獻2中的I2C總線驅(qū)動程序,按照系統(tǒng)需求作了局部改動。程序包括啟動、停止、發(fā)送應(yīng)答、發(fā)送非應(yīng)答、應(yīng)答位檢查、發(fā)送和接收等共9個函數(shù)。最后組成兩個函數(shù):SMBusReadWord和SMBusWriteWord。通過這兩個函數(shù)即可實現(xiàn)SMBus總線的全部讀寫操作,實現(xiàn)對任何SMBus總線器件的控制。這兩個函數(shù)的參數(shù)依次為:器件地址,命令字,讀/寫內(nèi)容。
其次為主程序部分。如圖5所示,當中斷條件滿足時,由max1660向單片機發(fā)出中斷請求,單片機則讀取max1660的狀態(tài)字判斷為何種中斷,各狀態(tài)字的定義如表1,部分中斷功能可通過控制字關(guān)閉。然后對各種中斷作相應(yīng)處理。其中當前的供電方式可通過CHARGESTATUS讀出。該位為1時為充電狀態(tài),為0時為放電狀態(tài)。
文獻1提供了一個簡單的系統(tǒng)硬件原理圖,只需在這個原理圖上作簡單的拓展即可使用。限于篇幅,無法將本系統(tǒng)的原理圖詳細列出,這里只作簡單介紹:Max1660本身帶有3.3V電源輸出,但由于這里使用了51單片機必須采用5V電源,因此這一電源沒有使用,而是在pack+和pack-之間接入7805來得到5伏的電源,而在用于整個系統(tǒng)時,其電源也應(yīng)從這兩端輸出。
電量的顯示最好通過LCD,調(diào)試階段用LED較好,比較直觀,同時易于排除問題。本系統(tǒng)在調(diào)試階段用P1口輸出電量狀態(tài)指示,LED亮?xí)r表示充電已到該位,各燈逐次點亮,充滿時全亮,放電時正相反。
結(jié)束語
本文介紹的基于SMBus的智能電池檢測系統(tǒng)既可用于鋰電池,也可用于鎳基電池,對電池的要求較低,系統(tǒng)作為便攜式儀器的電源解決方案在實際應(yīng)用中已得到驗證。系統(tǒng)運行可靠,功能強大顯示直觀,能夠與其他功能協(xié)調(diào)工作。隨著各種便攜式電子產(chǎn)品的廣泛應(yīng)用,電池的智能化已成為一種必不可少的功能。因此本文所介紹的智能電池系統(tǒng)具有較強的實用性。
作者Email: ramrod@sina.com.cn
摘要: 本文概要地介紹了智能電池系統(tǒng),并介紹了一種典型芯片——Max1660的電量計數(shù)及電池保護等功能,給出了一個應(yīng)用實例。
關(guān)鍵詞:智能電池 電量計數(shù) SMBus Max1660
現(xiàn)代社會對產(chǎn)品壽命需求和對產(chǎn)品的性能和功能的要求迅速提高。最新的掌上電腦要求把最多的功能壓到最少的空間中去,這就驅(qū)使電池的設(shè)計者不得不考慮在產(chǎn)品設(shè)計方面做顯著的變化。這包括;使用低壓器件,關(guān)掉未在使用的子系統(tǒng),對應(yīng)用程序進行管理,發(fā)展智能電池和電池管理系統(tǒng)等。
新的智能電池的設(shè)計需要各種不同甚至相反的領(lǐng)域的知識,在某些應(yīng)用中甚至是全新領(lǐng)域的知識。這些領(lǐng)域包括關(guān)于電池運行的電池化學(xué)知識;關(guān)于系統(tǒng)各零件相互作用的系統(tǒng)工程知識和使用者怎樣操作一個特殊設(shè)備的設(shè)計知識。因此,一個規(guī)范或者說一個標準將必不可少,它可以簡化設(shè)計,提高系統(tǒng)的可移植性。
智能電池規(guī)范
電池的智能化是最近才發(fā)展起來的,這就使得智能電池的實現(xiàn)方案多種多樣。因而,一些標準開始出現(xiàn)。這些標準一般是由便攜電腦制造商推動的。但在一些單電池系統(tǒng)中,例如在蜂窩式移動電話系統(tǒng)中,成本問題限制了電池系統(tǒng)一些操作,使智能電池標準的發(fā)展復(fù)雜化了。
一線接口 電池包與系統(tǒng)的通訊是一個很重要的需要考慮的因素。這個接口要有盡可能少的信號線以減少電池包的連線數(shù)。因而,許多單電池系統(tǒng)采用一線接口(1-wire),例如,蜂窩移動電話。在1-wire接口中,0或1取決于信號線上0的有效周期。這種類型的接口提供了一個異步連接。當前有三種不同的一線接口(1-Wire),它們之間只有輕微的差別。由于其內(nèi)在特點,一線接口的傳輸速率很慢。在低成本系統(tǒng)中,這樣的速率是可接受的,因為只有極少的信息需要傳遞給主機。但在多電池系統(tǒng)中,就有更多的信息需要傳遞給主機,這是就要求有更快的接口速度了。
SMBus接口 1996年,Intel(聯(lián)合其它公司)推出了一個由PC-I2C變異而來的系統(tǒng)管理總線(SMBus)。它與I2C總線一樣有兩根通訊線,但是加入了低電平選擇并且對器件對總線的控制實踐做了嚴格規(guī)定。作為系統(tǒng)管理總線(SMBus)發(fā)展的一部分,Intel與其合作伙伴創(chuàng)建了智能電池標準。這個規(guī)范在SMBus接口頂層增加了一個協(xié)議,定義了一系列的命令以用于電池包、電池充電器、電池選擇器和主機之間的通訊。而這些命令和協(xié)議并非必需的,可以選用。
基于MAX1660的智能電池應(yīng)用實例:
MAX1660 是美信公司生產(chǎn)的一種能夠精確測量流入充電和流出放電系統(tǒng)電池組的電量計數(shù)芯片,它能將電池電量存入內(nèi)部兩個獨立的32 位充電和放電計數(shù)器。它通過強大的數(shù)字比較功能,判斷當充電或放電計數(shù)器達到主機設(shè)定值時,中斷主CPU,來完成主機設(shè)定得功能。該器件也可以在電流方向發(fā)生變化時通知主機,并具備保護電池組短路及過流的功能。MAX1660 提供一個兼容于SMBUSTM系統(tǒng)管理總線的二線串行接口來訪問充電放電量計數(shù)器和內(nèi)部寄存器,同時也能夠給主機提供一條可用作中斷信號的系統(tǒng)管理總線報警線SMBALERT。
1. MAX1660 的引腳及功能
MAX1660 的引腳排列如圖1 主要引腳功能如下:
u INT,中斷信號漏極開路輸出,低電平有效,INT接上拉電阻100k至VL引腳。
u REF,2.00V 精密電壓基準輸出,REF對AGND 接10nF旁路電容。
u SHDN,關(guān)斷控制輸入,低電平有效。
u CS,電流檢測電阻輸入。
u ODI,放電過流檢測輸入。
u OCI,充電過流檢測輸入。
u VL,3.3V 5mA線性電壓輸出VL對GND接0.33mF旁路電容。
u BATT,電源輸入。
u ODO,高壓漏極開路MOSFET柵極驅(qū)動輸出,ODO控制電池放電信道的開/關(guān)。
u OCO,高壓漏極開路MOSFET柵極驅(qū)動輸出,OCO控制電池充電信道的開/關(guān)。
u RST,上電復(fù)位輸出,低電平有效RST接上拉電阻100k至VL引腳。
u SDA,串行數(shù)據(jù)輸入/輸出,在SDA和VL 之間接10k電阻。
u SCL,串行時鐘輸入,在SCL和VL之間接10k電阻。
2.MAX1660的控制、狀態(tài)與讀寫時序
MAX1660有一個16位的狀態(tài)字和一個16位的控制字,主機可通過讀狀態(tài)字來判斷電池狀態(tài),寫控制字來控制電池系統(tǒng)。其狀態(tài)字的定義如表1,控制字定義為如表2
表1
位名稱 |
位 |
上電復(fù)位狀態(tài) |
說明 |
—— |
8--15 |
1 |
未使用通常返回1。 |
ODSTATUS |
7 |
0 |
過流中斷狀態(tài)位,當放電過流時,此位置位。當軟關(guān)斷、上電復(fù)位或控制字CLRINT位置位時,此位清零。 |
OCSTATUS |
6 |
0 |
過流中斷狀態(tài)位,當充電過流時,此位置位。當軟關(guān)斷、上電復(fù)位或控制字CLRINT位置位時,此位清零。 |
COMPSTATUS |
5 |
0 |
COMPINT中斷狀態(tài)位,當COMPINT中斷發(fā)生時,此位置位。當軟關(guān)斷、上電復(fù)位或控制字CLRINT位置位時,此位清零。 |
COUNTSTATUS |
4 |
— |
SETCOUNT狀態(tài)指示位,當控制字SETCOUNT置位時此位置位。當SETCOUNT位清零時,此位清零。 |
SHDNSTATUS |
3 |
0 |
軟關(guān)斷狀態(tài)指示位,當器件處于軟關(guān)斷模式時返回1,否則返回0 |
CHARGESTATUS |
2 |
0 |
充電狀態(tài)指示位,充電狀態(tài)檢測時此位置位,放電狀態(tài)檢測時此位清零。 |
DIRCHANGE |
1 |
0 |
當電流方向發(fā)生變化時,此位置位。當軟關(guān)斷、上電復(fù)位或控制字CLRINT位置位時,此位清零。祥見參考文獻1的電流變化檢測部分。 |
—— |
0 |
0 |
未使用通常返回1。 |
表2
位名稱 |
位 |
上電復(fù)位狀態(tài) |
說明 |
—— |
11--15 |
1 |
未使用。 |
DIRINTENABLE |
10 |
0 |
電流方向變化允許位。此位置位允許方向變化中斷發(fā)生,清零則禁止此功。祥見Direction-Change Detection Function section。 |
SOFTSHDN |
9 |
1 |
軟關(guān)斷允許位,此位置位允許軟關(guān)斷,清零恢復(fù)正常操作。祥見參考文獻1的Shutdown Modes section。 |
CLRCOUNTER |
8 |
1 |
清計數(shù)器,寫1將放電計數(shù)器和充電計數(shù)器全都清零。 |
CLRINT |
7 |
0 |
清中斷,寫1使ODSTATUS, OCSTATUS, COMPSTATUS, 和DIRCHANGE.清零 |
SETCOUNT |
6 |
0 |
計數(shù)器選擇位,用來選擇將哪個計數(shù)器的值傳輸?shù)?/SPAN>COUNT寄存器,置1選擇充電計數(shù)器,清零則選者放電計數(shù)器。祥見文獻1的Charge and Discharge Counters section。 |
OFFSETMEAS |
5 |
0 |
偏移量測量允許位,置位時使CS端與內(nèi)部電路斷開,短接到AGEND。清零時CS端重新接到內(nèi)部電路,恢復(fù)正常操作。參看文獻1的internal Offset Measurementsection。 |
COMPENABLE |
4 |
— |
比較中斷允許位。置1允許數(shù)字比較中斷功能,清零則禁止此功能。參見文獻Digital Compare Function section. |
ODHI |
3 |
0 |
ODO兩位輸出狀態(tài)控制位的第一位,參見文獻1的Overcurrent Detection section。 |
ODLO |
2 |
0 |
ODO兩位輸出狀態(tài)控制位的第二位。為保證恰當?shù)倪^流保護狀態(tài)ODLO應(yīng)該總是保持為零。參見文獻1的Overcurrent Detection section。 |
OCHI |
1 |
0 |
OCO兩位輸出狀態(tài)控制位的第一位,參見參考文獻1的Overcurrent Detection section. |
OCLO |
0 |
0 |
OCO兩位輸出狀態(tài)控制位的第一位。為保證恰當?shù)倪^流保護狀態(tài)OLO應(yīng)該總是保持為零。參見文獻1的Overcurrent Detectionsection. |
其讀寫時序見參考文獻1,傳輸時以字節(jié)為單位。每次傳輸時首字節(jié)為SLVEADDRESS——即從器件地址。對于不同種類的SMBus器件,該地址是固定的,在出廠時就已經(jīng)固化到器件中。但也有一些器件可以通過地址端的不同接法選擇該地址。MAX1660的SLAVEADDRESS是1000111,最后一位空出,用來選擇讀或?qū)?。其中0為讀出,1為寫入。第二個字節(jié)為命令字,從第三個字節(jié)開始是要讀出或?qū)懭氲臄?shù)據(jù)。
命令字可分為兩種:一為讀命令,包括讀計數(shù)寄存器和讀狀態(tài)字;一為寫命令,包括寫比較寄存器和寫控制字。計數(shù)寄存器需要分兩次讀出,命令字為:0x82(低16位)、0x83(高16位);比較寄存器也要分兩次寫入,其命令字分別為:0x00(低16位),0x01(高16位);讀狀態(tài)字和寫控制字的命令字分別為:0x84和0x04。需要注意的是:在讀計數(shù)器時,當前供電狀態(tài)決定了計數(shù)器中的數(shù)值是充電還是放電計數(shù)值。而且,更為重要的一點:在讀計數(shù)器時兩個命令必須連續(xù)執(zhí)行且必須先讀低位后讀高位,如果中間夾有其他命令或順序顛倒,在執(zhí)行這個命令時Max1660就會當作讀高16位的命令已執(zhí)行而將計數(shù)器清零。
3. MAX1660的最大充電和放電電流
MAX1660本身不能控制電池充電電流,只能控制最大充電電流值和最放電電流值。它可以通過以下方法設(shè)定設(shè)定:
設(shè)定最大充電電流值:如圖所示,
式中 ICHG,MAX即是最大充電電流值 VREF=2.0V。R5選擇1MΩ左右的電阻。
1) 設(shè)定最大放電電流值:如圖所示,
式中IDISCHG,MAX 為最大放電電流值,R3選擇1MΩ左右的電阻。
4.應(yīng)用MAX1660設(shè)計電量指示監(jiān)控充電電路
本電路是作為一個便攜式嵌入系統(tǒng)的附屬電源模塊設(shè)計的,由于系統(tǒng)成本限制,采用用了鎳氫電池。Mam1660即可監(jiān)控鋰電池又可監(jiān)控鎳基電池,而其他類電池監(jiān)控芯片大所為鋰電池監(jiān)控芯片,因此本系統(tǒng)采用Max1660來搭建系統(tǒng)。系統(tǒng)軟件采用查詢機制,其程序框圖如圖5。
系統(tǒng)力求精簡,用51單片機控制。單片機通過SDA、SCA、INT三根線與MAX1660通訊線用于對發(fā)出中斷信號,SCA、SDA分別為的時鐘線和數(shù)據(jù)線。利用max1660的數(shù)字比較功能,程序設(shè)定一個電量值,每當電量計數(shù)器達到設(shè)定值時即對單片機發(fā)出中斷,從而把單片機解放出來。計數(shù)值與電量的關(guān)系與敏感元件微電阻有關(guān),微電阻越小則可測電流越小,但電流分辨率也越小,反之則可測電流值受限,而電流分辨率增大。
系統(tǒng)主要包括兩部分:首先是通訊部分,主要是SMBus總線的驅(qū)動程序。這里參考了文獻2中的I2C總線驅(qū)動程序,按照系統(tǒng)需求作了局部改動。程序包括啟動、停止、發(fā)送應(yīng)答、發(fā)送非應(yīng)答、應(yīng)答位檢查、發(fā)送和接收等共9個函數(shù)。最后組成兩個函數(shù):SMBusReadWord和SMBusWriteWord。通過這兩個函數(shù)即可實現(xiàn)SMBus總線的全部讀寫操作,實現(xiàn)對任何SMBus總線器件的控制。這兩個函數(shù)的參數(shù)依次為:器件地址,命令字,讀/寫內(nèi)容。
其次為主程序部分。如圖5所示,當中斷條件滿足時,由max1660向單片機發(fā)出中斷請求,單片機則讀取max1660的狀態(tài)字判斷為何種中斷,各狀態(tài)字的定義如表1,部分中斷功能可通過控制字關(guān)閉。然后對各種中斷作相應(yīng)處理。其中當前的供電方式可通過CHARGESTATUS讀出。該位為1時為充電狀態(tài),為0時為放電狀態(tài)。
文獻1提供了一個簡單的系統(tǒng)硬件原理圖,只需在這個原理圖上作簡單的拓展即可使用。限于篇幅,無法將本系統(tǒng)的原理圖詳細列出,這里只作簡單介紹:Max1660本身帶有3.3V電源輸出,但由于這里使用了51單片機必須采用5V電源,因此這一電源沒有使用,而是在pack+和pack-之間接入7805來得到5伏的電源,而在用于整個系統(tǒng)時,其電源也應(yīng)從這兩端輸出。
電量的顯示最好通過LCD,調(diào)試階段用LED較好,比較直觀,同時易于排除問題。本系統(tǒng)在調(diào)試階段用P1口輸出電量狀態(tài)指示,LED亮?xí)r表示充電已到該位,各燈逐次點亮,充滿時全亮,放電時正相反。
結(jié)束語
本文介紹的基于SMBus的智能電池檢測系統(tǒng)既可用于鋰電池,也可用于鎳基電池,對電池的要求較低,系統(tǒng)作為便攜式儀器的電源解決方案在實際應(yīng)用中已得到驗證。系統(tǒng)運行可靠,功能強大顯示直觀,能夠與其他功能協(xié)調(diào)工作。隨著各種便攜式電子產(chǎn)品的廣泛應(yīng)用,電池的智能化已成為一種必不可少的功能。因此本文所介紹的智能電池系統(tǒng)具有較強的實用性。