バッテリ統計に基づいて消費電力を計算する方法

バッテリ統計に基づいて消費電力を計算する方法

arch新しいノートブックにLinuxをインストールしましたmsi prestige ps42。残念ながら、バッテリー寿命は急速に短縮されました。最初の2ヶ月間使用した後、バッテリーは約3時間しかラップトップに電力を供給できません。

当然、実際の消費電力がいくらかを計算したかったのです。これを行うには、/sys/class/power_supply/BAT1Pythonデーモンを使用してバッテリ統計を記録しました。メインループは次のとおりです。

with open('/sys/class/power_supply/BAT1/current_now', 'r') as curFile:
    current = float(curFile.read().replace('\n', ''))
with open('/sys/class/power_supply/BAT1/voltage_now', 'r') as volFile:
    voltage = float(volFile.read().replace('\n', ''))
with open('/sys/class/power_supply/BAT1/charge_now', 'r') as charNowFile:
    chargeNow = float(charNowFile.read().replace('\n', ''))
timeNow = time.time()
# time|power|energy
print(timeNow - startTime, current*voltage*1e-12, chargeNow*voltage*1e-12)
time.sleep(1)

電力は次のように計算されvoltage*currentpower_nowフォルダにファイルがない)、1e-12そのデータが必要な単位を掛けますmicro。エネルギーは次のように計算されてvoltage*charge乗算されます1e-12。時間はに記録されますseconds

その結果、次のような結果が得られました(time | power | energy):

0.0001957416534423828 7.868766 38.895102
1.1173264980316162 9.038664 38.895102
2.2340087890625 9.039228 38.897529
3.350689172744751 8.526364 38.897529
4.46724009513855 8.522639999999999 38.880539999999996
5.583956003189087 8.535461999999999 38.865978
6.69666862487793 10.040778 38.865978
7.810216903686523 9.999395999999999 38.705796
8.811989784240723 9.999395999999999 38.705796
9.81338357925415 8.591463 38.829572999999996
10.815097093582153 8.591463 38.829572999999996
...

次に、電力のエネルギー依存性を計算した。

calcEArray = np.empty(0, float)
calcEArray = np.append(calcEArray, array[0,2])
for prevStat, nextStat in zip(array[:-1], array[1:]):
    calcEArray = np.append(calcEArray, calcEArray[-1] - (nextStat[0]-prevStat[0])*prevStat[1])

コードが示すように:E_i = E_(i-1) - (time_i - time_(i-1))*power_(i-1)

計算されたエネルギーを記録されたエネルギーと比較すると、まったく異なる曲線が表示されます。 ここに画像の説明を入力してください。

最初の考えは当然、ユニットが間違っていたということでしたが、10eX単位で電力とエネルギーのすべての組み合わせを試しましたが、曲線が一致しませんでした。

第二の考えは、時間範囲が大きすぎて電力ピークが記録されないことである。

このようにバッテリー電源を記録したことがありますか?

関連情報