概覽
近年來(lái),筆記本電腦等移動(dòng)設備已實(shí)現可高達100W充電,采用可使充電連接器通用化的USb PD的應用已經(jīng)越來(lái)越多。另外,同時(shí)采用有線(xiàn)充電加無(wú)線(xiàn)充電(無(wú)線(xiàn)供電)兩種充電方式的趨勢也有增無(wú)減。然而,要滿(mǎn)足USB PD這類(lèi)的大范圍功率需求,例如要想從5V的充電器向2節電池(=8.4V)充電,系統必須添加升壓功能。另外,同時(shí)采用兩種充電方式,需要再增加充電IC和外置部件,并通過(guò)微控制器來(lái)控制充電切換,這些在工程實(shí)踐中復雜度與成本都會(huì )帶來(lái)不小的壓力。
應對這些問(wèn)題,ROHM新推出了一款電池充電IC:BD99954GW/MWV。該芯片以1-4節電池為對象,利用升降壓控制生成3.07-19.2V的充電電壓,同時(shí)支持最先進(jìn)的USB PD系統的電池充電IC。實(shí)現ROHM獨創(chuàng )、業(yè)界首發(fā)的充電系統雙輸入功能,且搭載充電適配器判定功能,無(wú)需微控制器控制即可進(jìn)行充電切換。另外,不僅支持USB PD標準,還支持當今最普及的USB BC1.2充電標準?奢p松實(shí)現USB充電、無(wú)線(xiàn)供電、AC適配器充電等充電方式,非常有助于創(chuàng )建更便捷的充電環(huán)境。
隨著(zhù)無(wú)線(xiàn)充電技術(shù)漸漸普及,大多數現代的充電器需要兼容有線(xiàn)無(wú)線(xiàn)兩種輸入源。這樣的電路使用BD99954來(lái)搭建,可以省去傳統設計方法中的切換電路:

圖 使用BD99954來(lái)設計雙輸入電源
BD99954GW、BD99954MWV具有以下兩個(gè)特點(diǎn),非常有助于創(chuàng )建更便捷的充電環(huán)境:
(1)業(yè)界首創(chuàng )支持雙系統充電。雙輸入方式,使兩種充電方式的導入更容易。而且還搭載充電適配器判定功能,無(wú)需微控制器即可進(jìn)行充電切換。雙輸入充電系統無(wú)需搭載并調整(充電路徑切換、防止電流逆流)單獨處理時(shí)所需的外置部件、晶體管和電阻器,不僅安裝面積更小,還有利于大大減輕設計負擔。
(2)升降壓控制,支持最先進(jìn)的USB PD系統。利用升降壓控制,從5-20V(USB PD的最大電壓)中的任意電壓均可生成電池充電所需的充電電壓。例如,進(jìn)行2節電池(=8.4V)的充電時(shí),20V輸入時(shí)可降壓后進(jìn)行8.4V充電,5V輸入時(shí)可升壓后進(jìn)行8.4V充電。
另外,關(guān)于USB充電標準,不僅支持USB PD,還支持當前最普及的USB BC1.2,因此可支持從以往的USB充電到USB PD充電的多種充電方式。本文利用ROHM公司為該芯片開(kāi)發(fā)的評測板: BD99954MWV Evaluation Kit對這個(gè)芯片的功能做一個(gè)評測,探索一下其使用方法與功能上的一些特色。
首先看看該BD99954開(kāi)發(fā)板:

圖 開(kāi)發(fā)板及其主要組成部分
注意,拿到的BD99954開(kāi)發(fā)板為工程樣品,所以有飛線(xiàn)的情況,實(shí)際上不影響對該芯片的功能評測。
硬件
原理圖

圖 原理圖1(主要電路)

圖 原理圖2(USB轉i2C部分)
因為分辨率的問(wèn)題,原理圖在頁(yè)面上顯示的不是很清楚,感興趣的同學(xué)可以在文末的參考資源中找pdf格式文件進(jìn)行查看。
整個(gè)原理圖比較簡(jiǎn)單,沒(méi)有什么好說(shuō)的。主要組成部分就是兩個(gè)芯片(BD99954+FT232HL)和一些無(wú)源器件。其中FT232HL是用來(lái)跟PC上的軟件通信用的,所以整個(gè)開(kāi)發(fā)板主要就是BD99954與無(wú)源器件。由此也可以看出BD99954集成度較高。
芯片
下面從芯片方面來(lái)分析一下此芯片,先看典型應用圖:

圖 BD99954典型應用圖
再看芯片內部框圖:

圖 BD99954內部框圖
從以上兩圖可見(jiàn)該芯片集成了電源管理電路中的一些常用單元,使最終的電路大大簡(jiǎn)化。
雙輸入自動(dòng)切換
比如兩個(gè)輸入源如果要切換,以往的設計:

圖 以往的雙輸入切換需要增加額外的切換電路
如果同樣的功能使用BD99954來(lái)設計,則可大大簡(jiǎn)化,上圖中的切換FET與電組可以省去:

圖 使用BD99954設計的雙輸入切換
充電曲線(xiàn)

圖 充電曲線(xiàn)
其中System Voltage為系統工作電壓,如果電池電壓低于該電壓那么首先要使用涓流與預充模式將電池充到該電壓。之后增加充電電流進(jìn)入快充恒流模式,將電池充到預設的滿(mǎn)充電壓。此時(shí)電池并未充滿(mǎn),此時(shí)進(jìn)入快充恒壓模式直至電池電壓是設置的VBAT的1.15倍即停止充電。此時(shí)電池可以認為被充滿(mǎn)。上述的這些參數都可以通過(guò)I2C總線(xiàn)進(jìn)行設置。此外為防止電池過(guò)熱,芯片還可以通過(guò)電池的溫度檢測端對電池進(jìn)行溫度監控.溫度過(guò)高時(shí)電流減半,電壓按照三檔設置的電壓進(jìn)行按溫度輸出。


圖 恒流與恒壓參數根據溫度監控減小
GUI配置軟件
廠(chǎng)家為此開(kāi)發(fā)板專(zhuān)門(mén)配了GUI軟件以方便迅速評估其功能,下載地址在文末的連接中。如何安裝就不多說(shuō)了,軟件分三個(gè)界面:

圖 充放電控制界面

圖 直接控制寄存器界面

圖 擴展控制界面
功能演示1:兩路電源自動(dòng)切換充電與放電
充電連接:

圖 充電連接
放電連接與上類(lèi)似,只是不接電池,由VSYS向外輸出電壓。
首先來(lái)觀(guān)察雙電源切換,斷開(kāi)VCC的5V輸入,不接電池,僅僅在VBUS上接入20.5V的筆記本電源(經(jīng)過(guò)改造),配置使其輸出19.2V,軟件配置如下:

圖 實(shí)驗一配置UI
注意幾點(diǎn):首先將模式調整成4S,也就是4節串聯(lián)模式,否則芯片不允許輸出這么高電壓。其次輸出電壓那里理論上可以配置32752mV,但是芯片最高只能輸出19200mV,所以配置高了會(huì )自動(dòng)被軟件設置上限。最后3,4所指之處分別為VBUS,VCC的監測指示燈,綠燈表示檢測到輸入。圖中所示為僅僅有VBUS輸入。

圖 實(shí)驗一結果
這里注意本人的這個(gè)萬(wàn)用表的精度欠佳,以下不另外解釋。
現在將5V的VCC也接入,兩個(gè)輸入同時(shí)接入的情況下默認使用VBUS,這個(gè)也可以通過(guò)寄存器更改偏向使用哪個(gè)輸入。

圖 兩個(gè)輸入同時(shí)接入

圖 此時(shí)依舊輸出19200mV,意料之中
關(guān)掉VBUS,只接入VCC:

圖 僅僅接入VCC(5V)
此時(shí)依舊輸出19200mV,注意此時(shí)為boost模式。

圖 VCC(5V)升壓至19200mV輸出
再來(lái)看看充電模式,該芯片可以對1-4級串聯(lián)鋰離子電池進(jìn)行充電,作者分別做了實(shí)驗,但是由于拍照較為麻煩,此處僅僅展示單節電池充電。

圖 接入電池
注意如果該電池有溫度電阻,可以接入上圖中的綠色軍品座子已利用溫度電阻來(lái)防止過(guò)熱情況,但作者手邊沒(méi)有這樣的電池,暫且不實(shí)驗這個(gè)功能。
對于充電,需要配置如下幾個(gè)參數:

圖 充電參數
1.涓充電壓:小于此電壓的電池要么是被保護了要么是過(guò)放了,在此電壓之前需要涓流充電
2.預充電壓:小于此電壓需要預充
3.預充電流
4.快充電流
5.快充電壓:到達此電壓即可進(jìn)入正常充電模式
6.涓流電流
7.終止電流,某些電池需要一定終止電流以防止漏電
8.配置好之后,按下此按鈕,其轉為綠色時(shí)即開(kāi)始充電,同時(shí)右邊的界面開(kāi)始顯示實(shí)際的充電曲線(xiàn)。
以上內容可以與上文的充電曲線(xiàn)一節配合參考。
功能演示2:電池反向供電
反向供電連接:

圖 電池向外供電
當兩個(gè)外接電源都關(guān)閉掉,這時(shí)需要電池向外反向供電。先關(guān)閉掉兩個(gè)輸入,注意此時(shí)要保持電池接入且高于3.8V,否則整個(gè)板子沒(méi)有電源就無(wú)所謂控制或者供電了。

圖 兩個(gè)輸出都斷掉
反向供電的時(shí)候一定要確認兩個(gè)輸入都關(guān)閉了,否則就短路了,會(huì )燒壞器件的。
反向供電的配置在第二個(gè)界面,默認是關(guān)閉的,VCC,VBUS兩個(gè)接口都可以配置輸出。

圖 反向輸出配置

圖 反向buck boost輸出
功能演示3:自定義控制
根據上文所貼的原理圖可知,官方的配置軟件是通過(guò)USB轉I2C接口來(lái)對BD99954芯片進(jìn)行控制的。既然這樣,如果要進(jìn)行自定義的控制,用戶(hù)可以另外使用主控芯片來(lái)通過(guò)I2C總線(xiàn)來(lái)進(jìn)行。當然大多數應用不需要這種自定義通信,因為該芯片本身就具備常用檢測與切換功能。本文只是展示一種可能,以供有高級自定義控制需求的用戶(hù)參考。
另外提一下子,其實(shí)官方提供的GUI軟件有腳本編程進(jìn)行自定義控制的功能。但是可能是工程測試版本的原因,在本人電腦上一直不能成功運行。不過(guò)這也不是大問(wèn)題,因為實(shí)際應用中要么完全不控制按照默認配置來(lái)工作,要么會(huì )通過(guò)外接的主控來(lái)通過(guò)I2C來(lái)控制。

圖 MCR運行異常
BD99954的I2C設備地址為0x09,速率為10KHz到400KHz,其讀寫(xiě)格式、波形分別如下圖:

圖 讀word格式

圖 寫(xiě)word格式

圖 通信波形圖
由此可見(jiàn)其通信跟一般的I2C器件沒(méi)有什么不同,只要按照其命令格式即可通過(guò)I2C總線(xiàn)與之通信。該芯片命令集有三套:基本/擴展/調試,通過(guò)MAP_SET命令進(jìn)行切換:

圖 命令集切換圖
具體的命令請查閱數據手冊,此處不一一列出。
這里使用arduino Uno開(kāi)發(fā)板與之通信。連接信號在J47上:

圖 J47上的SCL/SDA信號

圖 BD99954+Arduino Uno
這里以配置反向輸出為7V為例,代碼如下:
//Arduino Uno control the BD99954 chip.
//Author: zhanzr@foxmAIl.com
#include
#define BD_ADDR 0x09
//Bit 14 Trigger vrBOOST
#define VIN_CTRL_SET 0x0A
#define VRBOOST_SET 0x19
#define CHIP_ID 0x38
#define CHIP_REV 0x39
#define MAP_SET 0x3F
void setup() {
Wire.begin(); // join i2c bus (address optional for master)
PInMode(LED_BUILTIN, OUTPUT);
pinMode(7, INPUT);
Serial.begin(115200);
}
void wr16(uint8_t cmd, uint16_t d16)
{
uint8_t dl = (uint8_t)d16;
uint8_t dh = (uint8_t)(d16>>8);
Wire.beginTransMIssion(BD_ADDR); // transmit to device
Wire.write(cmd);
Wire.write(dl);
Wire.write(dh);
Wire.endTransmission(); // stop transmitting]
}
uint16_t rd16(uint8_t cmd)
{
uint16_t ret16 = 0;
Wire.beginTransmission(BD_ADDR); // transmit to device
Wire.write(cmd);
Wire.endTransmission(); // stop transmitting]
Wire.requestFROM(BD_ADDR, 2);
while (2 != Wire.available())
{
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}
uint8_t dl = Wire.read();
uint8_t dh = Wire.read();
ret16 = ((uint16_t)dh << 8) + dl;
return ret16;
}
void loop() {
uint16_t map_set = rd16(MAP_SET);
Serial.println("MAP_SET:");
Serial.println(map_set, HEX);
uint16_t tmp = rd16(CHIP_ID);
Serial.println("CHIP_ID:");
Serial.println(tmp, HEX);
tmp = rd16(CHIP_REV);
Serial.println("CHIP_REV:");
Serial.println(tmp, HEX);
tmp = rd16(VRBOOST_SET);
Serial.println("VRBOOST_SET:");
Serial.println(tmp, HEX);
wr16(VRBOOST_SET, 7000);
tmp = rd16(VRBOOST_SET);
Serial.println("VRBOOST_SET:");
Serial.println(tmp, HEX);
tmp = rd16(VIN_CTRL_SET);
Serial.println("VIN_CTRL_SET:");
Serial.println(tmp, HEX);
delay(50000);
}
輸出:

圖 通過(guò)I2C控制開(kāi)發(fā)板輸出
結論總結
BD99954集成度高,幾乎囊括了筆記本/平板/智能手機等應用的電源管理的絕大多數功能,使工程師的設計負擔大大減輕,產(chǎn)品穩定性也能隨之提高。 |