diff --git a/MainCode/adalm1000_logger.py b/MainCode/adalm1000_logger.py index ae11f60..d42b30d 100644 --- a/MainCode/adalm1000_logger.py +++ b/MainCode/adalm1000_logger.py @@ -47,9 +47,9 @@ class BatteryTester: # Battery test parameters self.capacity = tk.DoubleVar(value=0.2) # Battery capacity in Ah - self.charge_cutoff = tk.DoubleVar(value=1.45) # Charge cutoff voltage + self.charge_cutoff = tk.DoubleVar(value=1.43) # Charge cutoff voltage self.discharge_cutoff = tk.DoubleVar(value=0.9) # Discharge cutoff voltage - self.rest_time = tk.DoubleVar(value=0.1) # Rest time in hours + self.rest_time = tk.DoubleVar(value=0.25) # Rest time in hours self.c_rate = tk.DoubleVar(value=0.1) # C-rate for test (default C/5 = 0.2) # Test progress tracking @@ -642,17 +642,32 @@ class BatteryTester: self.last_update_time = now self.capacity_ah.set(self.capacity_ah.get() + current_current * delta_t / 3600) - self.status_var.set( - f"Discharging: {current_voltage:.3f}V / {self.discharge_cutoff.get()}V | " - f"Current: {current_current:.3f}A | " - f"Capacity: {self.capacity_ah.get():.4f}Ah" - ) + if not self.continuous_var.get() and self.continuous_mode: # Only update if it was previously enabled + self.continuous_mode = False # Ensure we don't start a new cycle + self.status_var.set( + f"Continuous Mode disabled | " + f"Discharging to {self.discharge_cutoff.get()}V (will stop after this cycle) | " + f"Current: {current_current:.3f}A | " + f"Capacity: {self.capacity_ah.get():.4f}Ah" + ) + self.root.update() # Force UI update + + else: + # Default status message + self.status_var.set( + f"Discharging: {current_voltage:.3f}V / {self.discharge_cutoff.get()}V | " + f"Current: {current_current:.3f}A | " + f"Capacity: {self.capacity_ah.get():.4f}Ah" + ) + self.root.update() if current_voltage <= self.discharge_cutoff.get() or self.request_stop: break - time.sleep(0.1) # More frequent checks + if not self.continuous_var.get(): + self.test_running = False + break # Exit the main test loop # 4. Rest period after discharge (only if not stopping) if self.test_running and not self.request_stop: @@ -688,19 +703,6 @@ class BatteryTester: # Write cycle summary to log file self.write_cycle_summary() - # Short rest between cycles (only in continuous mode) - if self.continuous_mode and self.test_running and not self.request_stop: - rest_end_time = time.time() + (self.rest_time.get() * 3600) - while time.time() < rest_end_time and self.test_running and not self.request_stop: - time_left = max(0, rest_end_time - time.time()) - self.test_phase.set("Resting Between Cycles") - self.status_var.set( - f"Resting between cycles | " - f"Time left: {time_left/60:.1f} min" - ) - self.root.update() - time.sleep(1) - # Finalize test if stopped or completed self.safe_after(0, self.finalize_test)