Commit 33de86bd authored by Daniel Friesel's avatar Daniel Friesel
Browse files

switch to integer energytrace-util output

parent bac87679
Loading
Loading
Loading
Loading
+15 −12
Original line number Diff line number Diff line
@@ -180,19 +180,21 @@ if __name__ == '__main__':
            timestamp, current, voltage, total_energy = map(float, line.split(' '))
            data[i - opt['skip']] = [timestamp, current, voltage, total_energy]

    m_duration = data[-1, 0] - data[0, 0]
    m_energy = data[-1, 3] - data[0, 3]
    m_calc_energy = np.sum(data[1:, 1] * data[1:, 2] * (data[1:, 0] - data[:-1, 0]))
    m_energy_deviation = np.abs(m_energy - m_calc_energy) / np.max([m_energy, m_calc_energy])
    m_duration_us = data[-1, 0] - data[0, 0]
    m_energy_nj = data[-1, 3] - data[0, 3]
    # mV * nA * us = aJ (1e-18 J) -> use factor 1e-6 to get pJ (1e-12 J)
    m_calc_energy_pj = np.sum(data[1:, 1] * data[1:, 2] * 1e-6 * (data[1:, 0] - data[:-1, 0]))
    m_energy_nj_deviation = np.abs(m_energy_nj - m_calc_energy_pj * 1e-3) / np.max([m_energy_nj, m_calc_energy_pj * 1e-3])

    print('{:d} measurements in {:.2f} s = {:.0f} Hz sample rate'.format(
        data_count, m_duration, data_count / m_duration))
        data_count, m_duration_us * 1e-6, data_count / (m_duration_us * 1e-6)))

    print('Reported energy: E = {:f} J'.format(m_energy))
    print('Calculated energy: U*I*t = {:f} J'.format(m_calc_energy))
    print('Energy deviation: {:.1f}%'.format(m_energy_deviation * 100))
    print('Reported energy: E = {:f} J'.format(m_energy_nj * 1e-9))
    print('Calculated energy: U*I*t = {:f} J'.format(m_calc_energy_pj * 1e-12))
    print('Energy deviation: {:.1f}%'.format(m_energy_nj_deviation * 100))

    power = data[:, 1] * data[:, 2]
    # nA * mV = pW
    power = data[:, 1] * data[:, 2] * 1e-12

    if 'threshold-peakcount' in opt:
        bs_mean = np.mean(power)
@@ -273,11 +275,12 @@ if __name__ == '__main__':
        print('Mean voltage: {:.2f} V       : {:.9f}'.format(mean_voltage, mean_voltage))
        print('Mean current: {:.0f} µA       : {:.9f}'.format(mean_current * 1e6, mean_current))
        print('Mean power: {:.0f} µW       : {:.9f}'.format(mean_power * 1e6, mean_power))
        print('Total energy: {:f} J       : {:.9f}'.format(m_energy, m_energy))
        print('Total energy: {:f} J       : {:.9f}'.format(m_energy_nj, m_energy_nj))

    if 'plot' in opt:
        pwrhandle, = plt.plot(data[:, 0], data[:, 1] * data[:, 2], 'b-', label='U*I', markersize=1)
        #energyhandle, = plt.plot(data[1:, 0], (data[1:, 3] - data[:-1, 3]) / (data[1:, 0] - data[:-1, 0]), 'r-', label='E/Δt', markersize=1)
        # nA * mV = pW
        pwrhandle, = plt.plot(data[:, 0], data[:, 1] * data[:, 2] * 1e-12, 'b-', label='U*I', markersize=1)
        energyhandle, = plt.plot(data[1:, 0], ((data[1:, 3] - data[:-1, 3]) * 1e-9) / ((data[1:, 0] - data[:-1, 0]) * 1e-6), 'r-', label='E/Δt', markersize=1)
        plt.legend(handles=[pwrhandle])
        plt.xlabel('Time [s]')
        plt.ylabel('Power [W]')