Skip to content

Unaccurate measurments vs nrf connect #53

Open

Description

@klaudiawro

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

Activity

  1. furhadjidda commented on Jun 26, 2025

    @furhadjidda

    you might want to toggle_DUT_power("ON") before starting the measurement. I had missed this in my script before i could get it to work.

  2. MrKevinWeiss commented on Mar 13, 2026

    @MrKevinWeiss
    Collaborator

    Did this solve your issue? @furhadjidda if not I would maybe look at #50 in case it is something with the corrupted metadata readings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions