summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2022-11-26 22:02:54 +0100
committerDaniel Friesel <derf@finalrewind.org>2022-11-26 22:02:54 +0100
commitfaa17cdfd3da9c7a4a1a90f81327d2a8e86a4a45 (patch)
treeb0766df76e831f78f36ac28fb175e5849aac3d6d
parent77ddd2c8f1b620d9c4a6442a9593b25b725b715e (diff)
log current/voltage limits in --current-range/--voltage-range mode
-rwxr-xr-xbin/korad-logger39
1 files changed, 31 insertions, 8 deletions
diff --git a/bin/korad-logger b/bin/korad-logger
index e3944a3..dcc9e54 100755
--- a/bin/korad-logger
+++ b/bin/korad-logger
@@ -344,10 +344,19 @@ def measure_data(
else:
print(f"Starting data acquisition. Press Ctrl+C to stop.")
+ max_voltage_now = korad.get_max_voltage()
+ max_current_now = korad.get_max_current()
+
print("# Device: " + korad.get_id(), file=output_handle)
- print(f"# Vmax: {korad.get_max_voltage():5.2f}", file=output_handle)
- print(f"# Imax: {korad.get_max_current():5.3f}", file=output_handle)
- print("# Timestamp[s] Voltage[V] Current[A]", file=output_handle)
+ print(f"# Vmax: {max_voltage_now:5.2f}", file=output_handle)
+ print(f"# Imax: {max_current_now:5.3f}", file=output_handle)
+ if voltage_step or current_step:
+ print(
+ "# Timestamp[s] Voltage[V] Current[A] MaxVoltage[V] MaxCurrent[A]",
+ file=output_handle,
+ )
+ else:
+ print("# Timestamp[s] Voltage[V] Current[A]", file=output_handle)
start_ts = time.time()
while not terminate_measurement:
ts = time.time()
@@ -380,14 +389,22 @@ def measure_data(
max_y = voltage
plt.ylim([0, max_y + 0.1])
plt.show()
+
+ if voltage_step or current_step:
+ suffix = f" {max_voltage_now:5.2f} {max_current_now:5.3f}"
+ else:
+ suffix = ""
+
if voltage is not None and current is not None:
- print(f"{ts:.3f} {voltage:5.2f} {current:5.3f}", file=output_handle)
+ print(
+ f"{ts:.3f} {voltage:5.2f} {current:5.3f}{suffix:s}", file=output_handle
+ )
elif voltage is not None:
- print(f"{ts:.3f} {voltage:5.2f} NaN", file=output_handle)
+ print(f"{ts:.3f} {voltage:5.2f} NaN{suffix:s}", file=output_handle)
elif current is not None:
- print(f"{ts:.3f} NaN {current:5.3f}", file=output_handle)
+ print(f"{ts:.3f} NaN {current:5.3f}{suffix:s}", file=output_handle)
else:
- print(f"{ts:.3f} NaN NaN", file=output_handle)
+ print(f"{ts:.3f} NaN NaN{suffix:s}", file=output_handle)
if int(ts - start_ts) > last_range_step + (step_time - 1):
last_range_step = int(ts - start_ts)
@@ -400,13 +417,17 @@ def measure_data(
):
print(f"Setting voltage limit to {max_voltage:5.2f} V")
korad.set_max_voltage(max_voltage)
+ max_voltage_now = max_voltage
if current_step:
- max_current = current_start + last_range_step * current_step
+ max_current = (
+ current_start + (last_range_step // step_time) * current_step
+ )
if (current_step > 0 and max_current <= current_stop) or (
current_step < 0 and max_current >= current_stop
):
print(f"Setting current limit to {max_current:5.3f} A")
korad.set_max_current(max_current)
+ max_current_now = max_current
if duration and ts - start_ts > duration:
terminate_measurement = True
@@ -512,6 +533,8 @@ def parse_data(log_data, skip=None, limit=None):
fields = line.split()
if len(fields) == 3:
timestamp, voltage, current = map(float, fields)
+ elif len(fields) == 5:
+ timestamp, voltage, current, max_voltage, max_current = map(float, fields)
else:
raise RuntimeError('cannot parse line "{}"'.format(line))