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