frequency avoidance - work in progress

This commit is contained in:
Gertjan Koolen 2026-03-17 09:48:12 +01:00
parent 1bfefa94bb
commit 877915ae38

View file

@ -27,6 +27,8 @@ PATTERN = re.compile(
r"(?P<adc_vmax>[0-9a-fA-F]+)\s+" # Second hex
r"(?P<adc_imin>[0-9a-fA-F]+)-" # Third hex
r"(?P<adc_imax>[0-9a-fA-F]+)" # Fourth hex
r"nv=(?P<nv>-?\d+\.?\d*)\s+" # voltage noise/interference
r"ni=(?P<ni>-?\d+\.?\d*)\s+" # current noise/interference
)
config_path = '/home/bart/python-scanner/config.yaml'
@ -63,12 +65,12 @@ def dump_into_database():
if state["noise_scan"]==False:
# regular scan data
formatted_rows = [
[sweep_insert_time, r[0], r[5], r[6], r[1], r[2], r[3], r[4]]
[sweep_insert_time, r[0], r[5], r[6], r[1], r[2], r[3], r[4], r[11], r[12]]
for r in data_rows
]
sql = """
INSERT INTO SequenceValues (StartTimeOfSweep, Freq, ZR, ZX, Vampl, Vphase, Iampl, Iphase)
VALUES (?, ?, ?, ?, ?, ?, ?, ?) \
INSERT INTO SequenceValues (StartTimeOfSweep, Freq, ZR, ZX, Vampl, Vphase, Iampl, Iphase, Vnoise, Inoise)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) \
"""
else:
# noise scan data
@ -97,7 +99,7 @@ def dump_into_database():
def dump_csv(filename="data.csv"):
df = pd.DataFrame(
data_rows,
columns=["Freq", "Va", "Vp", "Ia", "Ip", "ZR", "ZX", "adc_vmin", "adc_vmax", "adc_imin", "adc_imax"]
columns=["Freq", "Va", "Vp", "Ia", "Ip", "ZR", "ZX", "adc_vmin", "adc_vmax", "adc_imin", "adc_imax", "nv", "ni"]
)
df.to_csv(filename, index=False)
@ -134,17 +136,19 @@ def extract_to_dataframe(line):
if not match:
return # silently ignore malformed lines
row = [
float(state["freq"]),
float(match.group("Va")),
float(match.group("Vp")),
float(match.group("Ia")),
float(match.group("Ip")),
float(match.group("ZR")),
float(match.group("ZX")),
int(match.group("adc_vmin"), 16),
int(match.group("adc_vmax"), 16),
int(match.group("adc_imin"), 16),
int(match.group("adc_imax"), 16),
float(state["freq"]), # row 0
float(match.group("Va")), # row 1
float(match.group("Vp")), # row 2
float(match.group("Ia")), # row 3
float(match.group("Ip")), # row 4
float(match.group("ZR")), # row 5
float(match.group("ZX")), # row 6
int(match.group("adc_vmin"), 16), # row 7
int(match.group("adc_vmax"), 16), # row 8
int(match.group("adc_imin"), 16), # row 9
int(match.group("adc_imax"), 16), # row 10
float(match.group("nv")), # row 11
float(match.group("ni")), # row 12
]
row[1] = row[1]/(2*3.14159*row[0]*0.00005 + 1) # compensate Va for pole at 20kHz
row[5] = row[1]/row[3] * math.cos(0.01745*(row[2]-row[4]))
@ -160,7 +164,7 @@ def process_line(line):
def get_dataframe():
return pd.DataFrame(
data_rows,
columns=["Va", "Vp", "Ia", "Ip", "ZR", "ZX", "adc_vmin", "adc_vmax", "adc_imin", "adc_imax"]
columns=["Va", "Vp", "Ia", "Ip", "ZR", "ZX", "adc_vmin", "adc_vmax", "adc_imin", "adc_imax", "nv", "ni"]
)
class TelnetReader: