電動汽車、無人機和物聯(lián)網(wǎng)設(shè)備等其他移動電子產(chǎn)品的進步似乎對未來充滿希望。所有這些中的一個共同點是它們都由電池供電。按照摩爾定律,電子設(shè)備趨于變得更小、更便攜,這些便攜式設(shè)備應該有自己的電源來運行。當今便攜式電子產(chǎn)品最常見的電池選擇是鋰離子或鋰聚合物電池。雖然這些電池具有非常好的電荷密度,但它們在惡劣條件下化學性質(zhì)不穩(wěn)定,因此在充電和使用時應小心。
在這個項目中,我們將構(gòu)建一個兩級電池充電器(CC 和 CV),可用于為鋰離子或鋰聚合物電池充電。電池充電器電路專為我在大多數(shù)機器人項目中常用的 7.4V 鋰電池組(兩個 18650 串聯(lián))而設(shè)計,但可以輕松修改電路以適應較低或稍高的電池組,例如構(gòu)建3.7 鋰電池充電器或12v鋰離子電池充電器。正如您可能知道的那樣,這些電池有現(xiàn)成的充電器,但便宜的充電器非常慢,而快速的充電器非常昂貴。所以在這個電路中,我決定用具有 CC 和 CV 模式的 LM317 IC 構(gòu)建一個簡單的粗充電器。 此外,還有什么比構(gòu)建自己的小工具并在其過程中學習更有趣的事情。
電池充電器的 CC 和 CV 模式:
我們打算在這里構(gòu)建的充電器是兩步充電器,這意味著它將具有兩種充電模式,即恒定充電 (CC) 和恒定電壓 (CV)。通過結(jié)合這兩種模式,我們將能夠比平時更快地為電池充電。
恒定電荷 (CC):
第一個開始運行的模式將是 CC 模式。這里應該進入電池的充電電流量是固定的。為了保持該電流,電壓將相應變化。
恒壓(CV):
一旦 CC 模式完成,CV 模式將啟動。這里的電壓將保持固定,電流將根據(jù)電池的充電要求而變化。
在我們的例子中,我們有一個 7.4V 鋰電池組,它只不過是兩個 3.7V 的 18650 電池串聯(lián)(3.7V + 3.7V = 7.4V)。此電池組應在電壓降至 6.4V(每節(jié) 3.2V)時充電,最高可充電至 8.4V(每節(jié) 4.2V)。因此,這些值已經(jīng)為我們的電池組固定。
接下來我們決定了CC模式下的充電電流,這通常可以在電池的數(shù)據(jù)表中找到,該值取決于電池的Ah額定值。在我們的例子中,我決定將800mA 的值作為恒定充電電流。因此,最初當連接電池進行充電時,充電器應進入 CC 模式并通過改變充電電壓將 800mA 推入電池。這將為電池充電,電池電壓將開始緩慢增加。
由于我們將大電流推入具有較高電壓值的電池,因此在電池充滿電之前,我們不能將其留在 CC 中。當電池電壓達到相當大的值時,我們必須將充電器從 CC 模式切換到 CV 模式。我們的電池組在充滿電后應該是 8.4V,因此我們可以將其從 CC 模式切換到 8.2V 的 CV 模式。
一旦充電器切換到 CV 模式,我們應該保持恒定電壓,在我們的例子中,恒定電壓的值為 8.6V。與 CC 模式相比,電池在 CV 模式下消耗的電流要少得多,因為電池本身在 CC 模式下幾乎已充電。因此,在固定的 8.6V 下,電池將消耗更少的電流,并且隨著電池充電,該電流將減少。因此,當電流達到非常低的值(例如小于 50mA)時,我們必須監(jiān)控電流,我們假設(shè)電池已充滿電,并使用繼電器自動斷開電池與充電器的連接。
總結(jié)一下,我們可以列出電池充電過程如下
進入 CC 模式并以固定的 800mA 穩(wěn)壓電流為電池充電。
監(jiān)控電池電壓,當它達到 8.2V 時切換到 CV 模式。
在 CV 模式下,使用固定的 8.6V 穩(wěn)壓電壓為電池充電。
監(jiān)控充電電流,因為它降低了。
當電流達到 50mA 時,自動斷開電池與充電器的連接。
800mA、8.2V 和 8.6V 的值是固定的,因為我們有一個 7.4V 鋰電池組。您可以根據(jù)電池組的要求輕松更改這些值。另請注意,存在許多階段充電器。像這樣的兩級充電器是最常用的一種。在三階段充電器中,階段將是 CC、CV 和浮動。在四級或六級充電器中,將考慮內(nèi)部電阻、溫度等?,F(xiàn)在,我們對兩步充電器的實際工作方式有了一個簡要的了解,讓我們進入電路圖。
電路原理圖
這個鋰離子電池充電器的完整電路圖可以在下面找到。該電路是使用 EasyEDA 制作的,PCB 也將使用相同的制作。

如您所見,電路非常簡單。我們使用了兩個LM317 可變電壓調(diào)節(jié)器 IC,一個用于調(diào)節(jié)電流,另一個用于調(diào)節(jié)電壓。第一個繼電器用于在 CC 和 CV 模式之間切換,第二個繼電器用于連接或斷開電池與充電器的連接。讓我們將電路分成幾段并了解其設(shè)計。
LM317 電流調(diào)節(jié)器
LM317 IC 可在單個電阻器的幫助下充當電流調(diào)節(jié)器。相同的電路如下所示

對于我們的充電器,我們需要如上所述調(diào)節(jié) 800mA 的電流。數(shù)據(jù)表中給出了計算所需電流的電阻值的公式:
電阻器(歐姆)= 1.25 / 電流(安培)
在我們的例子中,電流值為 0.8A,為此我們得到 1.56 歐姆的電阻值。但是我們可以使用的最接近的值是上面電路圖中提到的 1.5 歐姆。
LM317 穩(wěn)壓器
對于鋰電池充電器的 CV 模式,我們必須將電壓調(diào)節(jié)到 8.6V,如前所述。同樣,LM317 只需兩個電阻即可做到這一點。相同的電路如下所示。

計算 LM317 穩(wěn)壓器輸出電壓的公式為

在我們的例子中,輸出電壓 (Vout) 應為 8.6V,R1(此處為 R2)的值應小于 1000 歐姆,因此我選擇了 560 歐姆的值。有了這個,如果我們計算 R2 的值,我們得到它是 3.3k 歐姆?;蛘撸梢允褂萌魏沃档碾娮杵鹘M合,只要您獲得 8.6V 的輸出電壓。
用于在 CC 和 CV 模式之間切換的繼電器布置
我們有兩個 12V 繼電器,每個都由 Arduino 通過BC547 NPN 晶體管驅(qū)動。兩者的繼電器布置如下圖所示

第一個繼電器用于在充電器的 CC 和 CV 模式之間切換,該繼電器由標記為“模式”的 Arduino 引腳觸發(fā)。默認情況下,繼電器在觸發(fā)時處于 CC 模式,它會從 CC 模式變?yōu)?CV 模式。
同樣,第二個繼電器用于連接或斷開充電器與電池的連接;該繼電器由標記為“充電”的 Arduino 引腳觸發(fā)。默認情況下,繼電器會斷開電池與充電器的連接,當觸發(fā)時,它會將充電器連接到電池。除此之外,兩個二極管 D1 和 D2 用于保護電路免受反向電流的影響,而 1K 電阻器 R4 和 R5 用于限制流過晶體管基極的電流。
測量鋰電池電壓
為了監(jiān)控充電過程,我們必須測量電池電壓,然后我們才能在電池電壓達到 8.2V 時將充電器從 CC 模式切換到 CV 模式,如上所述。使用 Arduino 等微控制器測量電壓的最常用技術(shù)是使用分壓器電路。這里使用的一個如下所示。

我們知道 Arduino 模擬引腳可以測量的最大電壓為 5V,但我們的電池在 CV 模式下可能高達 8.6V,因此我們需要將其降壓到較低的電壓。這完全由分壓器電路完成。您可以使用此在線分壓器計算器計算電阻器的值并了解有關(guān)分壓器的更多信息。在這里,我們將輸出電壓減去原始輸入電壓的一半,然后通過“ B_Voltage ”標簽將該輸出電壓發(fā)送到 Arduino 模擬引腳。我們稍后可以在對 Arduino 進行編程時檢索原始值。
測量充電電流
另一個要測量的重要參數(shù)是充電電流。在 CV 模式下,當充電電流低于 50mA 時,電池將與充電器斷開連接,表示充電完成。測量電流的方法有很多,最常用的方法是使用分流電阻。相同的電路如下所示

它背后的概念是簡單的歐姆定律。使流向電池的全部電流流過分流電阻器2.2R。然后根據(jù)歐姆定律(V = IR),我們知道該電阻器上的電壓降將與流過它的電流成正比。由于我們知道可以使用 Arduino 模擬引腳測量電阻的值和其兩端的電壓,因此可以輕松計算出電流值。電阻上的電壓降值通過標簽“B_Current ”發(fā)送到 Arduino。我們知道最大充電電流為 800mA,因此通過使用公式 V=IR 和 P=I 2 R 我們可以計算電阻器的電阻值和功率值。
Arduino和液晶顯示器
最后,在 Arduino 方面,我們必須將LCD 與 Arduino連接,以向用戶顯示充電過程,并通過測量電壓、電流并相應地觸發(fā)繼電器來控制充電。

Arduino Nano 有一個板載電壓調(diào)節(jié)器,因此電源電壓提供給 Vin,調(diào)節(jié)后的 5V 用于運行 Arduino 和16x2 LCD 顯示器。電壓和電流可以通過模擬引腳 A0 和 A1 分別使用標簽“B_Voltage”和“B_Current”測量。繼電器可以通過切換通過標簽“模式”和“充電”連接的 GPIO 引腳 D8 和 D9 來觸發(fā)。一旦原理圖準備好,我們就可以繼續(xù)進行PCB制造。
為 Arduino 編程進行兩步鋰電池充電
硬件準備好后,我們可以繼續(xù)為 Arduino Nano 編寫代碼。該項目的完整程序在頁面底部提供,您可以將其直接上傳到您的 Arduino。現(xiàn)在,讓我們將程序分解成小片段并了解代碼的實際作用。
與往常一樣,我們通過初始化 I/O 引腳開始程序。從我們的硬件中我們知道,引腳 A0 和 A2 分別用于測量電壓和電流,引腳 D8 和 D9 用于控制模式繼電器和充電繼電器。定義相同的代碼如下所示
?
常量 int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; //注明LCD連接的管腳號 LiquidCrystal lcd(rs, en, d4, d5, d6, d7); 整數(shù)電荷 = 9;//引腳連接或斷開電池到電路 int Mode = 8; //引腳在 CC 模式和 CV 模式之間切換 int Voltage_divider = A0; //測量電池電壓 int Shunt_resistor = A1; //測量充電電流 float Charge_Voltage; 浮動 Charge_current;
?
在setup函數(shù)中,我們初始化 LCD 函數(shù)并在屏幕上顯示介紹消息。我們還將繼電器引腳定義為輸出引腳。然后觸發(fā)充電繼電器將電池連接到充電器,默認情況下充電器保持在 CC 模式。
?
無效 setup() {
lcd.begin(16, 2); //初始化16*2 LCD
lcd.print("7.4V Li+充電器"); //介紹消息行 1
lcd.setCursor(0, 1);
lcd.print("-CircuitDigest"); //介紹消息行 2
lcd.clear();
pinMode(充電,輸出);
pinMode(模式,輸出);
數(shù)字寫入(充電,高);//開始充電 最初通過連接電池
digitalWrite(Mode,LOW); // CV 模式為 HIGH,CC 模式為 LOW,初始 CC 模式
延遲(1000);
}
?
接下來,在無限循環(huán)函數(shù)中,我們通過測量電池電壓和充電電流來開始程序。數(shù)值 0.0095 和 1.78 乘以模擬值,將 0 到 1024 轉(zhuǎn)換為實際電壓和電流值,您可以使用萬用表和鉗形表測量實際值,然后計算乘數(shù)值。理論上,它也是根據(jù)我們使用的電阻器計算乘數(shù)值,但它并不像我預期的那么準確。
?
//最初測量電壓和電流 Charge_Voltage = analogRead(Voltage_divider) * 0.0092; //測量電池電壓 Charge_current = analogRead(Shunt_resistor) * 1.78; //測量充電電流
?
如果充電電壓低于 8.2V,我們進入 CC 模式,如果高于 8.2V,我們進入 CV 模式。每種模式都有自己的while循環(huán)。在 CC 模式循環(huán)內(nèi),我們將 Mode 引腳保持為低電平以保持 CC 模式,然后繼續(xù)監(jiān)控電壓和電流。如果電壓超過 8.2V 閾值電壓,我們使用 break 語句斷開 CC 回路。充電電壓的狀態(tài)也顯示在 CC 回路內(nèi)的 LCD 上。
?
//如果電池電壓低于8.2V進入CC模式
while(Charge_Voltage<8.2) //CC MODE Loop
{
digitalWrite(Mode,LOW); //保持CC模式
//測量電壓和電流
Charge_Voltage = analogRead(Voltage_divider) * 0.0095; //測量電池電壓
Charge_current = analogRead(Shunt_resistor) * 1.78; //測量充電電流
//在 LCD 上打印細節(jié)lcd.print ("V="); lcd.print(Charge_Voltage); lcd.setCursor(0, 1); lcd.print("在抄送模式"); 延遲(1000); lcd.clear(); //檢查我們是否必須退出 CC 模式 if(Charge_Voltage>=8.2) // 如果是 { digitalWrite(Mode,HIGH); //更改為CV模式 break; } }
?
CV 模式也可以采用相同的技術(shù)。如果電壓超過 8.2V,充電器通過將 Mode 引腳設(shè)為高電平進入 CV 模式。這會在電池上施加一個恒定的 8.6V,并且允許充電電流根據(jù)電池要求而變化。然后監(jiān)控這個充電電流,當它低于 50mA 時,我們可以通過斷開電池與充電器的連接來終止充電過程。為此,我們只需關(guān)閉充電繼電器,如下面的代碼所示
?
//如果電池電壓大于8.2V進入CV模式
while (Charge_Voltage>=8.2) //CV MODE Loop
{
digitalWrite(Mode,HIGH); //保持 CV 模式
//測量電壓和電流
Charge_Voltage = analogRead(Voltage_divider) * 0.0092; //測量電池電壓
Charge_current = analogRead(Shunt_resistor) * 1.78; //測量充電電流
//在 LCD 中向用戶顯示詳細信息 lcd.print("V="); lcd.print(Charge_Voltage); lcd.print("我="); lcd.print(Charge_current); lcd.setCursor(0, 1); lcd.print("在 CV 模式下"); 延遲(1000); lcd.clear(); //通過監(jiān)控充電電流檢查電池是否充電 if(Charge_current<50) //如果是 { digitalWrite(Charge,LOW); //關(guān)閉充電
while(1) //保持充電器關(guān)閉直到重啟
{
lcd.setCursor(0, 1);
lcd.print("充電完成。");
延遲(1000);
lcd.clear();
}
}
}
}
?
7.4V兩步鋰電池充電器的工作原理
硬件準備好后,將代碼上傳到 Arduino 板。然后將電池連接到板子的充電端。確保以正確的極性連接它們,顛倒極性會對電池和電路板造成嚴重損壞。連接電池電源后,使用 12V 適配器連接充電器。您將收到介紹性文字,充電器將根據(jù)電池狀態(tài)進入 CC 模式或 CV 模式。如果在充電時電池完全放電,它將進入 CC 模式,您的 LCD 將顯示如下內(nèi)容。

隨著電池充電,電壓將增加,如下面的視頻所示。當此電壓達到 8.2V 時,充電器將從 CC 模式進入 CV 模式,現(xiàn)在它將同時顯示電壓和電流,如下所示。

從這里開始,電池的電流消耗會隨著充電而慢慢下降。當電流達到 50mA 或更低時,充電器假定電池已充滿電,然后使用繼電器斷開電池與充電器的連接,并顯示以下屏幕。之后,您可以斷開電池與充電器的連接并在您的應用程序中使用它。

希望您了解該項目并喜歡構(gòu)建它,這個完整的電路板可以用作方便的鋰離子電池充電模塊。
/*
* 7.4V 鋰電池兩步充電器代碼
* 作者:Aswinth Raj
* 適用于:www.circuitdigest.com
* 日期:2019 年 11 月1 日
*/
#include
常量 int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; //注明LCD連接的管腳號
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
整數(shù)電荷 = 9;//引腳連接或斷開電池到電路
int Mode = 8; //引腳在 CC 模式和 CV 模式之間切換
int Voltage_divider = A0; //測量電池電壓
int Shunt_resistor = A1; //測量充電電流
float Charge_Voltage;
浮動 Charge_current;
無效 setup() {
lcd.begin(16, 2); //初始化16*2 LCD
lcd.print("7.4V Li+充電器"); //介紹消息行 1
lcd.setCursor(0, 1);
lcd.print("-CircuitDigest"); //介紹消息行 2
lcd.clear();
pinMode(充電,輸出);
pinMode(模式,輸出);
數(shù)字寫入(充電,高);//開始充電 最初通過連接電池
digitalWrite(Mode,LOW); // CV 模式為 HIGH,CC 模式為 LOW,初始為 CC 模式
延遲(1000);
}
無效循環(huán)(){
//最初測量電壓和電流
Charge_Voltage = analogRead(Voltage_divider) * 0.0092; //測量電池電壓
Charge_current = analogRead(Shunt_resistor) * 1.78; //測量充電電流
//如果電池電壓低于8.2V進入CC模式
while(Charge_Voltage<8.2) //CC MODE Loop
{
digitalWrite(Mode,LOW); //保持CC模式
//測量電壓和電流
Charge_Voltage = analogRead(Voltage_divider) * 0.0095; //測量電池電壓
Charge_current = analogRead(Shunt_resistor) * 1.78; //測量充電電流
//在 LCD 上打印
細節(jié) lcd.print("V="); lcd.print(Charge_Voltage);
lcd.setCursor(0, 1);
lcd.print("在抄送模式");
延遲(1000);
lcd.clear();
//檢查我們是否必須退出 CC 模式
if(Charge_Voltage>=8.2) // 如果是
{
digitalWrite(Mode,HIGH); //更改為CV模式
break;
}
}
//如果電池電壓大于8.2V進入CV模式
while (Charge_Voltage>=8.2) //CV MODE Loop
{
digitalWrite(Mode,HIGH); //保持CV模式
//測量電壓和電流
Charge_Voltage = analogRead(Voltage_divider) * 0.0092; //測量電池電壓
Charge_current = analogRead(Shunt_resistor) * 1.78; //測量充電電流
//在 LCD 中向用戶顯示詳細信息
lcd.print("V="); lcd.print(Charge_Voltage);
lcd.print("我="); lcd.print(Charge_current);
lcd.setCursor(0, 1);
lcd.print("在 CV 模式下");
延遲(1000);
lcd.clear();
//通過監(jiān)控充電電流檢查電池是否充電
if(Charge_current<50) //如果是
{
digitalWrite(Charge,LOW); //關(guān)閉充電
while(1) //保持充電器關(guān)閉直到重啟
{
lcd.setCursor(0, 1);
lcd.print("充電完成。");
延遲(1000);
lcd.clear();
}
}
}
}
//**快樂充電**//
?
電子發(fā)燒友App












































評論