概覽
近年來,筆記本電腦等移動設(shè)備已實現(xiàn)可高達(dá)100W充電,采用可使充電連接器通用化的USb PD的應(yīng)用已經(jīng)越來越多。另外,同時采用有線充電加無線充電(無線供電)兩種充電方式的趨勢也有增無減。然而,要滿足USB PD這類的大范圍功率需求,例如要想從5V的充電器向2節(jié)電池(=8.4V)充電,系統(tǒng)必須添加升壓功能。另外,同時采用兩種充電方式,需要再增加充電IC和外置部件,并通過微控制器來控制充電切換,這些在工程實踐中復(fù)雜度與成本都會帶來不小的壓力。
應(yīng)對這些問題,ROHM新推出了一款電池充電IC:BD99954GW/MWV。該芯片以1-4節(jié)電池為對象,利用升降壓控制生成3.07-19.2V的充電電壓,同時支持最先進(jìn)的USB PD系統(tǒng)的電池充電IC。實現(xiàn)ROHM獨創(chuàng)、業(yè)界首發(fā)的充電系統(tǒng)雙輸入功能,且搭載充電適配器判定功能,無需微控制器控制即可進(jìn)行充電切換。另外,不僅支持USB PD標(biāo)準(zhǔn),還支持當(dāng)今最普及的USB BC1.2充電標(biāo)準(zhǔn)?奢p松實現(xiàn)USB充電、無線供電、AC適配器充電等充電方式,非常有助于創(chuàng)建更便捷的充電環(huán)境。
隨著無線充電技術(shù)漸漸普及,大多數(shù)現(xiàn)代的充電器需要兼容有線無線兩種輸入源。這樣的電路使用BD99954來搭建,可以省去傳統(tǒng)設(shè)計方法中的切換電路:
圖 使用BD99954來設(shè)計雙輸入電源
BD99954GW、BD99954MWV具有以下兩個特點,非常有助于創(chuàng)建更便捷的充電環(huán)境:
(1)業(yè)界首創(chuàng)支持雙系統(tǒng)充電。雙輸入方式,使兩種充電方式的導(dǎo)入更容易。而且還搭載充電適配器判定功能,無需微控制器即可進(jìn)行充電切換。雙輸入充電系統(tǒng)無需搭載并調(diào)整(充電路徑切換、防止電流逆流)單獨處理時所需的外置部件、晶體管和電阻器,不僅安裝面積更小,還有利于大大減輕設(shè)計負(fù)擔(dān)。
(2)升降壓控制,支持最先進(jìn)的USB PD系統(tǒng)。利用升降壓控制,從5-20V(USB PD的最大電壓)中的任意電壓均可生成電池充電所需的充電電壓。例如,進(jìn)行2節(jié)電池(=8.4V)的充電時,20V輸入時可降壓后進(jìn)行8.4V充電,5V輸入時可升壓后進(jìn)行8.4V充電。
另外,關(guān)于USB充電標(biāo)準(zhǔn),不僅支持USB PD,還支持當(dāng)前最普及的USB BC1.2,因此可支持從以往的USB充電到USB PD充電的多種充電方式。本文利用ROHM公司為該芯片開發(fā)的評測板: BD99954MWV Evaluation Kit對這個芯片的功能做一個評測,探索一下其使用方法與功能上的一些特色。
首先看看該BD99954開發(fā)板:
圖 開發(fā)板及其主要組成部分
注意,拿到的BD99954開發(fā)板為工程樣品,所以有飛線的情況,實際上不影響對該芯片的功能評測。
硬件
原理圖
圖 原理圖1(主要電路)
圖 原理圖2(USB轉(zhuǎn)i2C部分)
因為分辨率的問題,原理圖在頁面上顯示的不是很清楚,感興趣的同學(xué)可以在文末的參考資源中找pdf格式文件進(jìn)行查看。
整個原理圖比較簡單,沒有什么好說的。主要組成部分就是兩個芯片(BD99954+FT232HL)和一些無源器件。其中FT232HL是用來跟PC上的軟件通信用的,所以整個開發(fā)板主要就是BD99954與無源器件。由此也可以看出BD99954集成度較高。
芯片
下面從芯片方面來分析一下此芯片,先看典型應(yīng)用圖:
圖 BD99954典型應(yīng)用圖
再看芯片內(nèi)部框圖:
圖 BD99954內(nèi)部框圖
從以上兩圖可見該芯片集成了電源管理電路中的一些常用單元,使最終的電路大大簡化。
雙輸入自動切換
比如兩個輸入源如果要切換,以往的設(shè)計:
圖 以往的雙輸入切換需要增加額外的切換電路
如果同樣的功能使用BD99954來設(shè)計,則可大大簡化,上圖中的切換FET與電組可以省去:
圖 使用BD99954設(shè)計的雙輸入切換
充電曲線
圖 充電曲線
其中System Voltage為系統(tǒng)工作電壓,如果電池電壓低于該電壓那么首先要使用涓流與預(yù)充模式將電池充到該電壓。之后增加充電電流進(jìn)入快充恒流模式,將電池充到預(yù)設(shè)的滿充電壓。此時電池并未充滿,此時進(jìn)入快充恒壓模式直至電池電壓是設(shè)置的VBAT的1.15倍即停止充電。此時電池可以認(rèn)為被充滿。上述的這些參數(shù)都可以通過I2C總線進(jìn)行設(shè)置。此外為防止電池過熱,芯片還可以通過電池的溫度檢測端對電池進(jìn)行溫度監(jiān)控.溫度過高時電流減半,電壓按照三檔設(shè)置的電壓進(jìn)行按溫度輸出。
圖 恒流與恒壓參數(shù)根據(jù)溫度監(jiān)控減小
GUI配置軟件
廠家為此開發(fā)板專門配了GUI軟件以方便迅速評估其功能,下載地址在文末的連接中。如何安裝就不多說了,軟件分三個界面:
圖 充放電控制界面
圖 直接控制寄存器界面
圖 擴(kuò)展控制界面
功能演示1:兩路電源自動切換充電與放電
充電連接:
圖 充電連接
放電連接與上類似,只是不接電池,由VSYS向外輸出電壓。
首先來觀察雙電源切換,斷開VCC的5V輸入,不接電池,僅僅在VBUS上接入20.5V的筆記本電源(經(jīng)過改造),配置使其輸出19.2V,軟件配置如下:
圖 實驗一配置UI
注意幾點:首先將模式調(diào)整成4S,也就是4節(jié)串聯(lián)模式,否則芯片不允許輸出這么高電壓。其次輸出電壓那里理論上可以配置32752mV,但是芯片最高只能輸出19200mV,所以配置高了會自動被軟件設(shè)置上限。最后3,4所指之處分別為VBUS,VCC的監(jiān)測指示燈,綠燈表示檢測到輸入。圖中所示為僅僅有VBUS輸入。
圖 實驗一結(jié)果
這里注意本人的這個萬用表的精度欠佳,以下不另外解釋。
現(xiàn)在將5V的VCC也接入,兩個輸入同時接入的情況下默認(rèn)使用VBUS,這個也可以通過寄存器更改偏向使用哪個輸入。
圖 兩個輸入同時接入
圖 此時依舊輸出19200mV,意料之中
關(guān)掉VBUS,只接入VCC:
圖 僅僅接入VCC(5V)
此時依舊輸出19200mV,注意此時為boost模式。
圖 VCC(5V)升壓至19200mV輸出
再來看看充電模式,該芯片可以對1-4級串聯(lián)鋰離子電池進(jìn)行充電,作者分別做了實驗,但是由于拍照較為麻煩,此處僅僅展示單節(jié)電池充電。
圖 接入電池
注意如果該電池有溫度電阻,可以接入上圖中的綠色軍品座子已利用溫度電阻來防止過熱情況,但作者手邊沒有這樣的電池,暫且不實驗這個功能。
對于充電,需要配置如下幾個參數(shù):
圖 充電參數(shù)
1.涓充電壓:小于此電壓的電池要么是被保護(hù)了要么是過放了,在此電壓之前需要涓流充電
2.預(yù)充電壓:小于此電壓需要預(yù)充
3.預(yù)充電流
4.快充電流
5.快充電壓:到達(dá)此電壓即可進(jìn)入正常充電模式
6.涓流電流
7.終止電流,某些電池需要一定終止電流以防止漏電
8.配置好之后,按下此按鈕,其轉(zhuǎn)為綠色時即開始充電,同時右邊的界面開始顯示實際的充電曲線。
以上內(nèi)容可以與上文的充電曲線一節(jié)配合參考。
功能演示2:電池反向供電
反向供電連接:
圖 電池向外供電
當(dāng)兩個外接電源都關(guān)閉掉,這時需要電池向外反向供電。先關(guān)閉掉兩個輸入,注意此時要保持電池接入且高于3.8V,否則整個板子沒有電源就無所謂控制或者供電了。
圖 兩個輸出都斷掉
反向供電的時候一定要確認(rèn)兩個輸入都關(guān)閉了,否則就短路了,會燒壞器件的。
反向供電的配置在第二個界面,默認(rèn)是關(guān)閉的,VCC,VBUS兩個接口都可以配置輸出。
圖 反向輸出配置
圖 反向buck boost輸出
功能演示3:自定義控制
根據(jù)上文所貼的原理圖可知,官方的配置軟件是通過USB轉(zhuǎn)I2C接口來對BD99954芯片進(jìn)行控制的。既然這樣,如果要進(jìn)行自定義的控制,用戶可以另外使用主控芯片來通過I2C總線來進(jìn)行。當(dāng)然大多數(shù)應(yīng)用不需要這種自定義通信,因為該芯片本身就具備常用檢測與切換功能。本文只是展示一種可能,以供有高級自定義控制需求的用戶參考。
另外提一下子,其實官方提供的GUI軟件有腳本編程進(jìn)行自定義控制的功能。但是可能是工程測試版本的原因,在本人電腦上一直不能成功運行。不過這也不是大問題,因為實際應(yīng)用中要么完全不控制按照默認(rèn)配置來工作,要么會通過外接的主控來通過I2C來控制。
圖 MCR運行異常
BD99954的I2C設(shè)備地址為0x09,速率為10KHz到400KHz,其讀寫格式、波形分別如下圖:
圖 讀word格式
圖 寫word格式
圖 通信波形圖
由此可見其通信跟一般的I2C器件沒有什么不同,只要按照其命令格式即可通過I2C總線與之通信。該芯片命令集有三套:基本/擴(kuò)展/調(diào)試,通過MAP_SET命令進(jìn)行切換:
圖 命令集切換圖
具體的命令請查閱數(shù)據(jù)手冊,此處不一一列出。
這里使用arduino Uno開發(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);
}
輸出:
圖 通過I2C控制開發(fā)板輸出
結(jié)論總結(jié)
BD99954集成度高,幾乎囊括了筆記本/平板/智能手機(jī)等應(yīng)用的電源管理的絕大多數(shù)功能,使工程師的設(shè)計負(fù)擔(dān)大大減輕,產(chǎn)品穩(wěn)定性也能隨之提高。 |