隠居エンジニアのものづくり

自転車 電子工作 ラジコン ロボカップジュニア CAD レーザー加工機

Li-Feバッテリーの保護回路

プリント基板自作の次なので、エッチングで基板を自作している方向けです。

 

リチウムイオン二次電池はたった一度の過放電で電池としての性能を失ってしまいます。

この性質はLi-Feバッテリーでも同じです。

Li-Feバッテリーの過放電は失活するだけで、Li-Poバッテリーの様に発火・爆発の危険には繋がりませんが、大会当日にバッテリーが使えなくなる事態は避けたいですし、そもそも財布に優しくないです。

最低限、過放電保護回路はロボットに搭載したいですね。

と言うことで参考までに(実際にロボットに搭載している保護回路ですが、あくまで参考と言う扱いでお願い致します)Li-Feバッテリーの保護回路のご紹介。

ちなみに6セル7.2VNi-MHバッテリーにも使えます(終止電圧が近似できるので)。

 

 

界隈は”マイコン得意”、”アナログ不得意”と言う方が多いと勝手に思って、電圧監視にはPIC12F683(PICライターは出前授業させて頂いている学校さんには必ずあったのでメジャーなのでは・・・)を用いる事を軸に構成しました。

次に部品は秋月電子通商さんで一括調達できるように選定しました。

仕様

● Li-Fe 2セル6.6V専用

● 短絡保護 ヒューズ

●起動時電圧確認

● 低電圧検知による負荷回路切断 自動復帰なし

● LEDによる状態表示 電圧不足:0.5s間隔点滅 正常:暗い連続点灯 低電圧:0.1s点滅

 

回路

定格電流5Aとなる様にヒューズホルダー、トグルSW、負荷カット用FETを選定

トグルSWは5Aを2回路並列接続として安全率を稼いでいます。

電圧監視には

●過放電電圧より充分に低い電圧でのマイコン駆動の為のレギュレータ

●バッテリー電圧の分圧抵抗

が必要です。

この部品の公差を見込んだ電圧を設定する必要があります。

抵抗値許容差を小さくする工夫として4素子集合抵抗を用いて分圧比4:1を得ています。

集合抵抗内の誤差傾向が同じなので分圧比としての誤差は圧縮されます。

入手した秋月電子通商の10kΩ4素子の集合抵抗で分圧誤差0.4%でした。

(Eagle9.6.2をFusion360に更新したので貼り直しました。2023/12/5更新)

 

 

f:id:Blackbox_crusher:20210722231218p:plain

f:id:Blackbox_crusher:20210722231640p:plain

f:id:Blackbox_crusher:20210307232529j:plain

 

DXFファイル

 

プログラム

デバッグ不要なほどシンプルなプログラムにするのも重要です。

流れとしては

●POR直後に電圧を読んでバッテリが使用可能な電圧かを判断

●ひたすら電圧監視・モータ、ソレノイドなどの瞬間的負荷・ノイズで誤動作しない仕組みをカウンタ方式で実現

●カウンターがオーバーしたら負荷をカット

 

ソース  (突入電流など内部インピーダンスによる電圧降下を考慮した変更追加)

 

 

/**************************************
12F683 HI-TECH C
2セル6.6V Li-FeバッテリーBMS (6セル7.2V Ni-MH使用可)
低電圧検知 = 6.0V
分圧比4:1 = 1.5V
電圧監視 = GP0/AN0 1.5V = 466
シャットダウンFET制御 = GP1
LED = GP2
**************************************/

#include <htc.h>
__CONFIG(FOSC_INTOSCIO & WDTE_OFF & PWRTE_ON & BOREN_ON & MCLRE_OFF & CP_OFF & IESO_OFF & FCMEN_OFF);
#define _XTAL_FREQ 1000000 // クロック = 1MHz
#define P_ON 490 // 初期バッテリー電圧閾値 6.3V
#define SH_H 466 // 低電圧検知閾値 6.0V
#define SH_M 458 // 低電圧検知閾値 5.9V
#define SH_L 450 // 低電圧検知閾値 5.8V
#define shatdn_H 300 // シャットダウン カウント閾値
#define shatdn_M 100 // シャットダウン カウント閾値
#define shatdn_L 30 // シャットダウン カウント閾値

unsigned int adconv();
unsigned int tmp;
unsigned int count_H;
unsigned int count_M;
unsigned int count_L;

void main(void)
{
OSCCON = 0b1000000; // 内蔵OSC 1MHz
ANSEL = 0b00000001; // - ADCS2 ADCS1 ADCS0 ANS3 ANS2 ANS1 ANS0 GP0/AN0 ADC,GP1-5 D
CMCON0 = 0b00000111; // コンパレータ不使用
TRISIO = 0b00000001; // - - TRISIO5 TRISIO4 TRISIO3 TRISIO2 TRISIO1 TRISIO0 GP0/AN0 IN,GP1-5 OUT
PR2 = 255; // 16msec周期
TMR2 = 0; // TMR2プリスケーラ
CCP1CON= 0b101100; // PWMモード起動
CCPR1L = 12; // Duty 5%
T2CON = 0b110; // TMR2ON | プリスケーラ x16

count_H = 0;
count_M = 0;
count_L = 0;

GP1 = 0,GP2 = 0; // FET_OFF,LED_OFF

tmp = adconv(); // 電源投入時 起動判定
if(tmp < P_ON)
{
CCP1CON= 0b100000;
while (1)
{
GP2 = 1;
__delay_ms(10);

GP2 = 0;
__delay_ms(500);
}
}

GP1 = 1,GP2 = 1; // FET_ON,LED_ON

while (1) // 低電圧監視
{
tmp = adconv();
__delay_ms(10);
if(tmp < SH_H)
{
count_H = count_H + 1;
}
else
{
count_H = 0;
}

tmp = adconv();
__delay_ms(10);
if(tmp < SH_M)
{
count_M = count_M + 1;
}
else
{
count_M = 0;
}

tmp = adconv();
__delay_ms(10);
if(tmp < SH_L)
{
count_L = count_L + 1;
}
else
{
count_L = 0;
}


if(count_H > shatdn_H) // シャットダウン処理
{
GP1 = 0,GP2 = 0; // FET_OFF,LED_OFF
CCP1CON= 0b100000;
while (1)
{
GP2 = 1;
__delay_ms(10);

GP2 = 0;
__delay_ms(100);
}
}

if(count_M > shatdn_M) // シャットダウン処理
{
GP1 = 0,GP2 = 0; // FET_OFF,LED_OFF
CCP1CON= 0b100000;
while (1)
{
GP2 = 1;
__delay_ms(10);

GP2 = 0;
__delay_ms(100);
}
}

if(count_L > shatdn_L) // シャットダウン処理
{
GP1 = 0,GP2 = 0; // FET_OFF,LED_OFF
CCP1CON= 0b100000;
while (1)
{
GP2 = 1;
__delay_ms(10);

GP2 = 0;
__delay_ms(100);
}
}
}
}

unsigned int adconv() // A/D変換
{
ADCON0 = 0b10000001; // ADFM VCFG - - CHS1 CHS0 GO/DONE ADON Vref=VDD,GP0/AN0 ADC
__delay_us(25);
GO=1;
while(GO);
return (ADRESH<<8)+ADRESL;

}

 

 HI-TECH Cが現在のIDEにないとの事なので、HEXファイル置いておきます。

 

秋月電子通商さんの部品(購入単位の都合上余ります)

6Pトグルスイッチ 2回路2接点 [1MD1-T1-B1-M2-Q-N]

ヒューズホルダー 基板用 標準タイプ    ※左右2個対で使用するので1セット当たり2個発注
[FUC-04]

PchMOSFET μPA2815T1S
[ uPA2815T1S-E2-AT]

NchMOSFET IRLML6344TRPBFTR (10個入)
[IRLML6344TRPBFTR]

チップ積層セラミックコンデンサー 10μF35V X5R 1608 (10個入)

[GRM188R6YA106MA73]

 

チップ積層セラミックコンデンサー 0.1μF50V F 1608 (40個入)
[GRM188F11H104ZA01]

 

カーボン抵抗(炭素皮膜抵抗) 1/4W100Ω (100本入)
[CF25J100RB]


超精密級 金属皮膜チップ抵抗器 1608 1/10W100Ω±0.1% (5個入)
[RG1608N-101-B-T5]

 

超精密級 金属皮膜チップ抵抗器 1608 1/10W10kΩ0.1% (5個入)
[RG1608N-103-B-T5]


集合抵抗 4素子 10kΩ
[RKC4BD103J]

低損失レギュレーター 3.3V100mA NJW4183U3-33B
[NJW4183U3-33B]

PICマイコン PIC12F683-I/P
[PIC12F683-I/P]

丸ピンICソケット ( 8P)
[2227MC-08-03]

3mm赤色LED 625nm 70度 OSR5JA3Z74A
[OSR5JA3Z74A]

ガラス管ヒューズはロボットの仕様に合わせて選んで下さい。

 

5Aの電流容量とFETの放熱の為、サーマルOFFにしてあります。

80W以上の半田ゴテでないと実装は難しいので、御注意下さい。