電池の回路モデルをPspice for TIで作ってみた

皆さん、お疲れ様です。前回OCV vs SOC特性をモデル化するという記事を作成しました。前回記事はこちらです。今回はそれを少しアップデートして充放電特性を表現する電池の回路モデルをPspice for TIで作成してみました。

電池の回路モデルを作ってみたい!!

という方の参考になれば幸いです。本記事では作成した回路とどういう考えで作成したかを記事にしたいと思います。では解説を始めます。

スポンサーリンク

まずは最終回路図とシミュレーション結果

まずは最終回路です。こんな感じですね。⑤と⑥の負荷抵抗と充電用電源は電池ではなく、その外側なので今回のモデル化の対象ではないです。電池の動作確認用に付けてます。

まず電池の動作をざっくり解説をすると

①で電池のSOC[%]を計算して、②と③でSOC[%]からOCV[V]へ変換して、⑦で充放電電流を検出して①へフィードバックしています。④は電池の内部抵抗を表現しています。ここにコンデンサやら抵抗やらを多段に接続することによって電池の周波数特性を表現することが出来ると思いますが、まぁそれはまた別のお話とさせて頂きます。

シミュレーションをやってみました。


上:SOC[%](表記は[V]ですが、[%]に読み替えて下さい。)
真ん中:OCV[V]
下:充放電電流[A]

シミュレーション開始後、充電せずに動かしています。負荷抵抗に電流が流れて、SOCが徐々に下がっています。放電している動きが見れていて想定通り。その後1.2ksec後に⑥の充電用電源の電圧を上昇させていくと、SOCが上がっています。想定通りに充電の動きをしていてOKかなと考えています。

各ブロックの説明

以降では電池のどういった特性をどうやって表現しているか解説します。

SOC[%]->OCV[V]変換部

先ほどの回路の②部分です。電池はSOC(=State Of Charge=充電率)が下がってきたら、OCV(Open Circuit Voltage=電池の出力電圧)が下がります。それをルックアップテーブルで実現しています。

今回以下のSOC-OCV特性をモデル化しています。

SOC[%]OCV[V]SOC[%]OCV[V]
0.10.1203.9
0.241.6303.905
0.373.22403.912
0.523.36503.925
0.753.48603.945
0.983.6703.973
1.33.7804
1.853.785904.03
2.93.841004.06
4.03.861104.094
6.03.885
103.893

SOCが100%なら4.06Vが出力するみたいな感じですね。より詳しい回路図への落とし込み方法は以下の記事で詳しく解説しておりますので、ご参照ください。

SOC計算部

①の部分ですね。さきほどの回路図を以下に表示しときます。

電池の充電率は以下の式で計算することが出来ます。

$$SOC(t)=SOC(t_0)+\frac{1}{FCC}\int_{t0}^{t} i(τ)dτ$$

FCC:Full Charge Capacity 最大電池容量[Ah]
SOC:State Of Charge 充電率[%]

この式の意味を超平たく言うと、電池に電流が出たり入ったりした量を積算すると充電率がわかるよ!ってことです。

上記の式をC2のコンデンサで表現しています。「なんでコンデンサ1個で表現できるんだよ。」と思われるかもしれませんが、出来ます。それを理解するにはコンデンサの公式を知らないといけません。コンデンサの公式は以下です。

$$Q=CV$$

高校物理でやったかな?のクーロンの法則ですね。Qというのは電荷なので電流を使って表現すると以下のようになります。

$$CV=\int_{0}^{t}i(τ)dτ$$

これをV=の形に変換すると、、、

$$V=\frac{1}{C}\int_{0}^{t}i(τ)dτ$$

となります。この式と最初のSOC式を見比べるとほぼ同じであることが分かります。初期値を用意してあげれば、V[V]をSOC[%]と読み替えて、C[F]をFCC[Ah]と変換するだけでSOCが計算できるじゃあないですか。

CをFCCに変えるのも簡単です。1Ahは何Fですか?を考えたら変換できます。

1Ahが何Fかわからない場合はまずはコンデンサの基本として「1Fに1Aを1sec流すと1Vの電圧になる。」と脳ミソに叩き込みましょう。以下の公式をちょっと積分してあげるだけで証明できます。

$$V=\frac{1}{C}\int_{0}^{t}i(τ)dτ$$

$$V=\frac{1}{1F}\int_{0}^{1sec}1Adτ$$

$$V=\frac{1}{1F}1A*1sec=1[V]$$

まず「1Fに1Aを1sec流すと1Vの電圧になる。」です。少し言い換えると「1Fのコンデンサが1Vだと、1Aを1sec流すことが出来る。」となります。最終的には1VはSOC100%と読み替えます。

じゃあ、次にAhってどういう意味かを考えます。例えば1Ah。これは「1Aを1時間流すことが出来る。」という意味です。1時間=60分=3600秒なので、「1Aを3600秒流すことが出来る。」となります。この能力を発揮するには「3600Fのコンデンサに1Vの電圧が必要」となります。

つまり、1Ah=3600Asec=3600Fのコンデンサに1Vの電圧が溜まっている状態なので、FCCは3600Fを用意したら良いということになります。

上記回路では360Fを用意しており、フル充電SOC=100%(SOC=1)のとき3600sec間0.1Aを流すことが出来ます。つまり0.1Ah=100mAhということになります。

んで、D1とV1はSOCノードの電圧を1V(SOC=100%)以上にならないようにクランプする回路です。0.15VはD1のON電圧をシミュレーション回しながらいい感じに1Vでクランプするよう調整した値です。1Vを超えるとダイオードがONしてV1に電流が流れて、SOCノード電圧が1V以上になることを防いでいます。

抵抗R2はシミュレーション安定化のために付けてます。これ無かったらシミュレーションがエラーになったりしました。

充放電電流検知回路

⑦の部分ですね。

これはE1から引かれる電流(放電電流)と入ってくる電流(充電電流)をF1で検知して、SOCノードから同じ電流を流します。SOCノードから引っ張ると結局どこから電流を引くかというと、C2から引くことになります。結局C2に充電電流を流したり、放電電流を引いたりして、SOCを計算しているという回路ですね。

最後に

こんな感じで電池の回路モデルを作ってみました。実際は過充電したらどうなるんだーとか、温特がどうだーとかめんどくさい考慮しないといけない要素はたくさんあると思います。が、ちょっとそこは勉強不足な面もあり、ここが現在の限界です。まぁ一応は充放電回路を考察するうえでは使えんことはないんじゃないかなぁと考えとります。

はい、以上です。誰かの何かの参考になれば幸いです。最後までお読みいただきありがとうございました。