-
Notifications
You must be signed in to change notification settings - Fork 50
Open
Description
Hello i am using the API for an automated production script, one of the steps is measuring power consumption, the API works as intended maybe 50% of the time, the other times it returns values that are very low (0.03 - 0.08 mA) compared to what it should be (around 2.7mA) when the same pcb is measured with nrf connect the correct value is disaplayed, this is the code that is used:
def connect_ppk2_mp():
stem.usb.setPortEnable(USBHubPort.PPK2)
ppk2s_connected = PPK2_API.list_devices()
global ppk2_test
if len(ppk2s_connected) == 1:
ppk2_port = ppk2s_connected[0][0]
ppk2_serial = ppk2s_connected[0][1]
else:
print(f"error: none.or.too.many.connected.PPK2: {ppk2s_connected}")
sys.exit(1)
ppk2_test = PPK2_API(ppk2_port, exclusive=True)
ppk2_test.ser.reset_input_buffer()
ppk2_test.ser.reset_output_buffer()
sleep(0.1)
ppk2_test.get_modifiers()
ppk2_test.use_source_meter()
ppk2_test.set_source_voltage(3000)
ppk2_test.toggle_DUT_power('ON')
sleep(0.1)
ppk2_ready_event.set()
def measure_current_ppk2_mp(seconds):
all_samples = []
start_time = time.time()
# Clear buffer to ensure fresh data
ppk2_test.get_data()
sleep(0.1)
# Start measuring and allow stabilization
ppk2_test.start_measuring()
time.sleep(0.2)
end_time = start_time + float(seconds)
while time.time() < end_time:
read_data = ppk2_test.get_data()
if read_data:
samples, _ = ppk2_test.get_samples(read_data)
all_samples.extend(samples) # Keep all data (no [::100] filtering)
ppk2_test.stop_measuring()
if all_samples:
average = sum(all_samples) / len(all_samples)
print(len(all_samples))
print(f"{average:.6f} mA")
return f"{average:.6f}"
print("error: current measuring failed")
return "0.000000"
For the record, i am using the PPK2_MP version
Metadata
Metadata
Assignees
Labels
No labels