Elsys CO2 sensor power consumption analysis¶

In [4]:
import pandas as pd
import plotly.express as px
csv_file = "elsysco2-timebase-10s.csv"
SKIP_ROWS = 8
df = pd.read_csv(csv_file, skiprows=SKIP_ROWS, usecols=["Relative Time", "Reading"])
df = df[df["Reading"] >= 0] # Filter negative values in the beginning
print(df.head())
labels = {"Relative Time": "Relative Time (s)", "Reading": "Reading (A)"}
fig = px.line(
df, x="Relative Time", y="Reading", title="Current Readings", labels=labels
)
fig.show()
Reading Relative Time 464 2.821717e-10 11.390767 468 2.414176e-11 11.493313 480 4.509976e-11 11.779001 481 3.326465e-11 11.821093 483 1.216581e-10 11.861416
In [5]:
df = df[df["Relative Time"] >= 600]
fig2 = px.line(
df,
x="Relative Time",
y="Reading",
title="Current Readings after initialization",
labels=labels,
)
fig2.show()
In [6]:
df["baseline"] = df["Reading"].rolling(window=102, center=True).min()
fig2 = px.line(
df,
x="Relative Time",
y="baseline",
title="Current Readings after initialization — baseline",
labels=labels
)
fig2.show()
In [7]:
df["current_peaks"] = df["Reading"] - df["baseline"]
fig3 = px.line(
df,
x="Relative Time",
y="current_peaks",
title="Current Readings after initialization — without baseline",
labels=labels
)
fig3.show()
In [8]:
import numpy as np
charge = np.trapezoid(df["current_peaks"], df["Relative Time"])
df = df.dropna(subset=["current_peaks", "Relative Time"])
## CONTINUE HERE
print(charge)
VOLTAGE = 3.6
voltage = VOLTAGE
energy = charge * voltage
time_elapsed = df["Relative Time"].iloc[-1] - df["Relative Time"].iloc[0]
power = energy / time_elapsed
print(f"Charge (Coulombs): {charge:.6f}")
print(f"Energy (Joules): {energy:.6f}")
print(f"Elapsed time (s): {time_elapsed:.3f}")
print(f"Average Power (Watts): {power:.6f}")
print(f"Energy per 10 seconds (Joules): {power*10:.6f}")
nan Charge (Coulombs): nan Energy (Joules): nan Elapsed time (s): 802.322 Average Power (Watts): nan Energy per 10 seconds (Joules): nan
In [9]:
CAPACITY = 2.7 # Ah
capacity_coulombs = CAPACITY * 3600 # Convert Ah to Coulombs
import os
#TODO
# also analyze 60s csv file