乾電池の電圧が新品から寿命までどのように低下するのか確認してみました。
アルカリ・マンガン両方の電池でグラフ化、また測定したデータも公開しています。
電池の寿命を確認・検討している人におすすめな記事です。
乾電池の寿命まで電圧測定!使い切るまでグラフ化してみた
乾電池の電圧を新品から寿命まで測定してみました。
抵抗を付けて一定の電流を流した放電特性をグラフ化しています。
乾電池は寿命の付近で電圧が一気に落ちます。
測定とグラフ化に関してはラズベリーパイとArduinoで自動化しています。
Pythonで測定データをCSV出力まで実施しています。
接続方法からプログラムまで紹介していますので、誰でも同様に対応可能です。
アルカリ・マンガンで測定したデータも置いてありますので、ご自由にお使いください。
乾電池の寿命までの電圧について詳細に紹介していきます。
また乾電池の新品から終止電圧の約0.9Vまでの測定動画としては下記です。
プログラム開始してから放電カーブのグラフがプロットされていくのが良く分かります。
乾電池の寿命
(この記事での)乾電池の寿命の電圧値に関しては、一般的な終止電圧の「0.9V」としています。
※市販の電気機器では0.9V以下でも使用できるものも多くありますが、今回は省略します。
今回は「新品」から「使用中の電圧値が0.9V」までの時間を乾電池の寿命としています。
無負荷だと乾電池の電圧が変わります
「使用中」と、使用していない「無負荷」で乾電池の電圧値は大きく異なるのでご注意ください。
例えば、テストで使い切った「使用中」の電圧値をテスターで測定すると0.1V程度でした。
その後1週間「無負荷」で放置した電圧を測定すると1.3Vとなっています。
アルカリ・マンガン電池は使用後、無負荷で放置すると電圧値が回復します。
放置した乾電池がどのように復活(回復)するのかも下記記事で確認しています。
是非一緒にご覧ください。(リンク先はこちら)
乾電池の容量(mAh)
乾電池の容量については使い方で大きく変わります。
今回のテストでは「大き目の電流(約700mA)」で「休憩無し」と厳しい条件で使用しています。
※「乾電池(1.5V)」に「2.2Ωの抵抗」を接続しています。(1.5V/2.2Ω≒682mA)
市販の単3電池の容量として2000mAh~3000mAh程度の記載している製品もあります。
但し、この値は一般的な電子機器を接続した想定だと思われます。
(恐らく数十mA~100mA程度の負荷条件ぐらいかと)
乾電池の容量(mAh)としての概算は下記で計算式で出ます。
今回(放電電流682mA)のテスト結果では電池容量(mAh)は低めの値となっています。
- アルカリ電池が1188mAh [放電電流_682(mA)×放電時間_1.74(h)]
- マンガン電池が275mAh [放電電流_682(mA)×放電時間_0.40(h)]
下記パナソニック様のHPにも詳しく記載されています。
非常に参考にさせていただきました。この場を借りてお礼申し上げます。
[アルカリ・マンガン] 乾電池の電池容量はどれ位? PZ29060
乾電池を放電する回路を作る
乾電池を放電する(電池を寿命まで使い切る)回路の作り方は簡単です。
乾電池に「乗数が小さく」「容量が大きい」抵抗を接続すればOKです。
今回は2.2Ωの5W品のセメント抵抗を繋げています。
大きい抵抗の100Ωや1kΩを接続した方が消費電流も減り、現実的な値に近くなります。
但し、消費電流を小さくすると電池を使い切るまでの時間が一気に増えますのでご注意ください。
今回の2.2Ωの抵抗でも3~4時間ほど掛かっています。
100Ωや1kΩの場合、電池を使い切るまでに恐らく数十時間~数百時間かかります。
※グラフ上の横軸の表記は1/10されています。
電力容量(W)が大きめの抵抗を選びます
乾電池の電圧は1.5Vですが、電流を多く流すので電力容量(W)が大きめの抵抗を接続します。
電力容量(W)が大きい抵抗としてはセメント抵抗が市販でも販売されています。
例えば、乾電池1.5Vに2.2Ωの抵抗を使うとすると単純計算で1Wを超えます。
W(電力) = V(電圧)×I(電流) = V(電圧)^2/R(抵抗) = 1.5(V)^2/2.2(Ω) = 1.02(W)
今回選んだセメント抵抗は5W品のため、十分に電力容量に余裕があります。
電力容量(W)に余裕があるセメント抵抗でも結構発熱します。
普通の金属皮膜抵抗だと1/4W程度のため、NGです。最悪燃えます。
最初は筆者もセメント抵抗を持っていなくて、金属皮膜を複数並列で接続しようと思いました。
ただ一回試したところ発熱がかなり大きかったので、結局セメント抵抗を購入しました。
長時間放電させるので余裕持った電力容量(W)の抵抗をおすすめします。
乾電池の内部抵抗による電圧低下が発生します
今回のような2.2Ωなど小さい抵抗を使う場合は、内部抵抗による電圧降下が発生します。
無負荷と負荷時(2.2Ω抵抗接続)では測定電圧が異なるため注意が必要です。
下記記事で詳細をまとめています。(リンク先はこちら)
乾電池の放電特性を自動でプロット・CSV化させる
今回は乾電池の寿命がどのように減っていくかを確認したいので、電圧値をグラフ化します。
下記記事のようにテスターで乾電池の電圧は測定して読み取れます。
但し、数時間の放電時間を人が視て対応するのは難しいです。
そのため今回はArduinoのアナログ入力を使って自動的に電圧値を測定させます。
Arduinoをラズベリーパイと連携させることで自動でグラフ化までさせます。
また後でデータとして使えるようにcsv出力まで対応していきます。
実際の回路図イメージとしては下記形です。
乾電池の放電回路にArduinoのアナログ入力ピン(A0)とGNDを接続した形です。
特にはんだ付けなどは必要なく、ジャンパー線などで配線・接続すればOKです。
電池BOXやICクリップ-ワニ口があると接続が楽だと思います。
下記記事でラズベリーパイとArduinoとの連携方法に関して紹介しています。
その際も可変抵抗使ったアナログ電圧を読み取りグラフ化しています。(リンク先はこちら)
ラズベリーパイとArduinoを連携!アナログ入力を応用してみた
ArduinoでAD変換してラズパイにデータを送る
Arduinoには予め、AD変換+USB経由でラズパイにデータを送るプログラムを書き込んでおきます。
Arduinoの開発環境のインストール方法や、プログラムの書き込み方法も特に難しくありません。
下記記事で紹介しています。(リンク先はこちら)
ArduinoでAD変換!分解能10bitで電圧測定してみた
Arduinoにはアナログ入力があり、AD変換することが可能です。(ラズパイには無い機能です)
電池の電圧値をArduinoで読み取らせます。実際のプログラムは下記です。
0.5秒周期でArduinoのアナログ0ピンの電圧値を読み取り、ラズパイにデータを送信します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
void setup() { // put your setup code here, to run once: Serial.begin(115200); } void loop() { // put your main code here, to run repeatedly: float analog_0 = analogRead(0); float voltage_0 = (analog_0*5)/1024; Serial.print("ADC="); Serial.print(analog_0); Serial.print("\t"); Serial.print("V="); Serial.print(voltage_0); Serial.println(""); delay(500); } |
ラズベリーパイとPythonでプロット・CSV化する
ラズパイにはデフォルトでPythonがインストールされており、誰でも簡単に使用できます。
初心者の方でも大丈夫です。下記記事で使い方を紹介しています。(リンク先はこちら)
ラズベリーパイでプログラミング入門!Pythonの簡単な始め方
PythonでArduinoとUSBシリアル通信
今回のプログラムは下記記事でラズパイのCPU温度をリアルタイムでプロットした応用版です。
ラズベリーパイのヒートシンクの効果は?ファンまで必要かを検証!
今回はCPU温度ではなく、USB接続されているArduinoのデータをPythonでグラフ化します。
Pythonで1秒間隔でUSBシリアル通信をReadして、電圧を表示・プロットします。
そして指定の時間(今回は4時間後)に測定したデータをcsvで出力しています。
出力したcsvはプログラムの同フォルダに作成されます。
実際に使用したプログラムは下記です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
#!/usr/bin/env python # -*- coding: utf-8 -*- import itertools import math import numpy as np import serial ser = serial.Serial('/dev/ttyUSB0', 115200) from matplotlib import pyplot as plt from matplotlib import animation from subprocess import getoutput def _update(frame, x, y): """グラフを更新するための関数""" # 現在のグラフを消去する plt.cla() # データを更新 (追加) する x.append(frame) # Arduino*の電圧を取得する a="" a=ser.readline() while ser.in_waiting: a= a + ser.readline() a2= a.split(b'V=') a3= a2[1].split(b'\r') y.append(float(a3[0])) # 折れ線グラフを再描画する plt.plot(x, y) # 指定の時間(s)にファイル出力する if int(x[-1]*10)== 3600*4: np.savetxt('logger_bat.csv', y) # グラフのタイトルに電圧を表示する plt.title("CH* = "+ str(y[-1]) +" V") # グラフに終止電圧の0.9Vに補助線(赤点線)を引く p = plt.plot([0, x[-1]],[0.9, 0.9], "red", linestyle='dashed') # グラフの縦軸_電圧の範囲を指定する plt.ylim(0,2.0) def main(): # 描画領域 fig = plt.figure(figsize=(10, 6)) # 描画するデータ x = [] y = [] params = { 'fig': fig, 'func': _update, # グラフを更新する関数 'fargs': (x, y), # 関数の引数 (フレーム番号を除く) 'interval': 1000, # 更新間隔 (ミリ秒) 'frames': itertools.count(0, 0.1), # フレーム番号を無限に生成するイテレータ } anime = animation.FuncAnimation(**params) # グラフを表示する plt.show() if __name__ == '__main__': main() |
乾電池の放電曲線(カーブ)の結果
実際に測定した乾電池はアルカリ電池とマンガン電池です。
アルカリ電池は「三菱電機」製で、マンガン電池は「富士通」製です。
冒頭でも紹介しましたが、実際の測定動画が下記となっています。
プログラム開始してから放電カーブのグラフがプロットされていくのが良く分かります。
アルカリ乾電池の放電カーブ
三菱電機製のアルカリ乾電池の放電カーブは下記結果となりました。
2.2Ωの抵抗に接続した瞬間に、乾電池の内部抵抗分の電圧低下が発生しています。
そのため約1.27V程度からスタートとなっています。
暫くは若干の傾きで放電していますが、約3時間後ぐらいに一気に電圧が低下します。
アルカリ乾電池の測定データのcsvは下記となります。ご自由にお使いください。
CSVでは1秒置きのデータで4時間分(14400秒)の電圧値が保存されています
mitsubishi-alkaline-battery.csv
終止電圧までの時間
終止電圧の0.9Vに到達するまでは1.74時間でした。
途中で紹介しましたが、電池容量としては1188(mAh)となります。
※放電電流_682(mA)×放電時間_1.74(h)=電池容量_1188(mAh)
マンガン乾電池の放電カーブ
富士通製のマンガン乾電池の放電カーブは下記結果となりました。
アルカリ電池と同様に、乾電池の内部抵抗分の電圧低下が発生しています。
そのため約1.2V程度からスタートとなっています。
またテスト開始してすぐに電圧低下が低下していることが分かります。
マンガン乾電池の測定データのcsvは下記となります。ご自由にお使いください。
CSVでは1秒置きのデータで4時間分(14400秒)の電圧値が保存されています
終止電圧までの時間
終止電圧の0.9Vに到達するまでは0.40時間でした。
途中で紹介しましたが、電池容量としては275(mAh)となります。
※放電電流_682(mA)×放電時間_0.40(h)=電池容量_275(mAh)
アルカリ電池とマンガン電池の比較
最後に出力したCSVからアルカリとマンガンの放電カーブを並べて比較してみました。
アルカリ電池の方が電圧値が高く、終止電圧(寿命)までの時間も長い結果となりました。
単一電池と単三電池の容量の比較
別の記事となりますが、単一電池と単三電池の容量も比較しました。
100均の単一電池と単三電池を同様に測定しています。
下記記事で紹介しています。是非一緒にご覧ください。(リンク先はこちら)
エボルタ電池との容量の比較
別の記事となりますが、エボルタ電池の容量も確認しました。
100均からエボルタまでを比較をしています。
下記記事で紹介しています。是非一緒にご覧ください。(リンク先はこちら)
まとめ
今回は乾電池の寿命と電圧に関して紹介させていただきました。
記事をまとめますと下記になります。
ラズベリーパイ(raspberry pi)とPythonは今回のようなデータ取集に非常に便利なツールです。
ハードウェアの勉強や趣味・工作にも十分に使えます。是非皆さまも試してみて下さい。
コメント