summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniel Friesel <daniel.friesel@uos.de>2023-01-24 20:18:22 +0100
committerDaniel Friesel <daniel.friesel@uos.de>2023-01-24 20:18:22 +0100
commit33d07ed6276687f8fd0181b3c743481609323cce (patch)
tree19c14db4b273b5461e2cd9ad287125929e83a67b /src
parent3828a9b13774c0efaa90e61fd129bbf80bd12a5c (diff)
add plot-ads1115 helper script
Diffstat (limited to 'src')
-rwxr-xr-xsrc/app/ads111x/plot-ads111577
1 files changed, 77 insertions, 0 deletions
diff --git a/src/app/ads111x/plot-ads1115 b/src/app/ads111x/plot-ads1115
new file mode 100755
index 0000000..d8ce07e
--- /dev/null
+++ b/src/app/ads111x/plot-ads1115
@@ -0,0 +1,77 @@
+#!/usr/bin/env python3
+# vim:tabstop=4 softtabstop=4 shiftwidth=4 textwidth=160 smarttab expandtab colorcolumn=160
+#
+# Copyright (C) 2023 Daniel Friesel
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+from matplotlib import cm
+import matplotlib.pyplot as plt
+import numpy as np
+import sys
+
+matplotlib_theme = "fast"
+
+
+def parse_file(filename, in_channel, out_channel):
+ readings = list()
+ with open(filename, "r") as f:
+ for line in f:
+ if line.startswith("#"):
+ continue
+ timestamp, channel, voltage = line.split()
+ timestamp = float(timestamp)
+ channel = int(channel)
+ voltage = float(voltage)
+ if abs(voltage) > 1:
+ readings.append((timestamp, channel, voltage))
+ vin_t = list()
+ vout_t = list()
+ vout_vin = list()
+
+ last_vin = None
+ last_vout = None
+ for timestamp, channel, voltage in readings:
+ if channel == in_channel:
+ vin_t.append((timestamp, voltage))
+ if last_vin is not None and last_vout is not None:
+ vout_vin.append((np.mean((last_vin, voltage)), last_vout))
+ last_vin = voltage
+ elif channel == out_channel:
+ vout_t.append((timestamp, voltage))
+ if last_vin is not None and last_vout is not None:
+ vout_vin.append((last_vin, np.mean((last_vout, voltage))))
+ last_vout = voltage
+
+ return np.array(vin_t), np.array(vout_t), np.array(vout_vin)
+
+
+def main(files):
+ plt.style.use(matplotlib_theme)
+ handles = list()
+ cmap = cm.get_cmap("winter")
+ in_channel = int(files.pop(0))
+ out_channel = int(files.pop(0))
+ for i, pair in enumerate(files):
+ current, filename = pair.split("=")
+ vin_t, vout_t, vout_vin = parse_file(filename, in_channel, out_channel)
+ (handle,) = plt.plot(
+ vout_vin[:, 0],
+ vout_vin[:, 1],
+ linestyle="none",
+ marker="s",
+ color=cmap(i / len(files)),
+ markersize=2,
+ label=current,
+ )
+ handles.append(handle)
+
+ plt.legend(handles=handles, title="Output Current [mA]")
+ plt.title("MT3608 Output Voltage Stability")
+ plt.xlabel("Input Voltage [V]")
+ plt.ylabel("Output Voltage [V]")
+ plt.show()
+
+
+if __name__ == "__main__":
+ main(sys.argv[1:])