spejsiot-sonoff_pow/doc/cse7759.py

31 lines
861 B
Python

#!/usr/bin/python3
import math
f_osc = 3.549e+6
v_ref = 2.43
r_i = 1e-3
x_c = 1 / (2 * math.pi * 50 * 100e-9) # excess
r1 = 5*470e+3
r2 = 1/(1/1e+3 + 1/x_c)
v_2 = r2 / (r1 + r2) * 230
f_cf_max = v_2 * (16*r_i) * 48 / (v_ref**2) * f_osc / 128
f_cfi_max = (16*r_i) * 24 / v_ref * f_osc / 512
f_cfv_max = v_2 * 2 / v_ref * f_osc / 512
joul_to_period = 128 * (v_ref**2) * (r1+r2)/r2 / r_i / (48 * f_osc)
joul_to_input_change = joul_to_period/2
wh_per_input_change = joul_to_input_change / (60 * 60)
w_per_changes_per_second = joul_to_input_change
samples_per_second = 4000
w_per_changes_per_sample = joul_to_input_change * 4000
print("power_factor: {:0.15f}".format(w_per_changes_per_sample))
print("energy_factor: {:0.15f}".format(wh_per_input_change))
f_max = max([f_cf_max, f_cfi_max, f_cfv_max])
f_sample_min = f_max * 2 * 1.2
t_sample = 1/f_sample_min