kopia lustrzana https://github.com/NanoVNA-Saver/nanovna-saver
Merge branch 'pr/gaionim/20' into development
commit
62958d31c3
|
|
@ -52,6 +52,7 @@ from .SweepWorker import SweepWorker
|
|||
from .Settings import BandsModel
|
||||
from .Touchstone import Touchstone
|
||||
from .about import version as ver
|
||||
from NanoVNASaver.RFTools import corrAttData
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
|
@ -65,6 +66,7 @@ class NanoVNASaver(QtWidgets.QWidget):
|
|||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.s21att = 0.0
|
||||
if getattr(sys, 'frozen', False):
|
||||
logger.debug("Running from pyinstaller bundle")
|
||||
self.icon = QtGui.QIcon(f"{sys._MEIPASS}/icon_48x48.png") # pylint: disable=no-member
|
||||
|
|
@ -692,7 +694,11 @@ class NanoVNASaver(QtWidgets.QWidget):
|
|||
def saveData(self, data, data12, source=None):
|
||||
if self.dataLock.acquire(blocking=True):
|
||||
self.data = data
|
||||
self.data21 = data12
|
||||
if self.s21att > 0:
|
||||
corData12 = corrAttData(data12, self.s21att)
|
||||
self.data21 = corData12
|
||||
else:
|
||||
self.data21 = data12
|
||||
else:
|
||||
logger.error("Failed acquiring data lock while saving.")
|
||||
self.dataLock.release()
|
||||
|
|
|
|||
|
|
@ -144,3 +144,21 @@ def groupDelay(data: List[Datapoint], index: int) -> float:
|
|||
delta_angle = -1 * (delta_angle % math.tau)
|
||||
val = -delta_angle / math.tau / delta_freq
|
||||
return val
|
||||
|
||||
|
||||
def corrAttData(data: Datapoint, att: float):
|
||||
"""Correct the ratio for a given attenuation on s21 input"""
|
||||
|
||||
if att <= 0:
|
||||
return data
|
||||
else:
|
||||
att = 10**(att/20)
|
||||
|
||||
ndata = []
|
||||
for i in range(len(data)):
|
||||
freq, re, im = data[i]
|
||||
orig = complex(re, im)
|
||||
corrected = orig * att
|
||||
ndata.append(Datapoint(freq, corrected.real, corrected.imag))
|
||||
|
||||
return ndata
|
||||
|
|
|
|||
|
|
@ -75,14 +75,22 @@ class SweepSettingsWindow(QtWidgets.QWidget):
|
|||
"Averaging allows discarding outlying samples to get better averages."))
|
||||
settings_layout.addRow(
|
||||
QtWidgets.QLabel("Common values are 3/0, 5/2, 9/4 and 25/6."))
|
||||
|
||||
self.s21att = QtWidgets.QLineEdit("0")
|
||||
|
||||
settings_layout.addRow(QtWidgets.QLabel(""))
|
||||
settings_layout.addRow(QtWidgets.QLabel("Some times when you measure amplifiers you need to use an attenuator"))
|
||||
settings_layout.addRow(QtWidgets.QLabel("in line with the S21 input (CH1) here you can specify it."))
|
||||
|
||||
settings_layout.addRow("Attenuator in port CH1 (s21) in dB", self.s21att)
|
||||
settings_layout.addRow(QtWidgets.QLabel("Common values with un-un are 16.9 (49:1 2450) 9.54 (9:1 450)"))
|
||||
self.continuous_sweep_radiobutton.toggled.connect(
|
||||
lambda: self.app.worker.setContinuousSweep(
|
||||
self.continuous_sweep_radiobutton.isChecked()))
|
||||
self.averaged_sweep_radiobutton.toggled.connect(self.updateAveraging)
|
||||
self.averages.textEdited.connect(self.updateAveraging)
|
||||
self.truncates.textEdited.connect(self.updateAveraging)
|
||||
|
||||
self.s21att.textEdited.connect(self.setS21Attenuator)
|
||||
layout.addWidget(settings_box)
|
||||
|
||||
band_sweep_box = QtWidgets.QGroupBox("Sweep band")
|
||||
|
|
@ -147,6 +155,22 @@ class SweepSettingsWindow(QtWidgets.QWidget):
|
|||
f"Sweep span: {format_frequency_short(start)}"
|
||||
f" to {format_frequency_short(stop)}")
|
||||
|
||||
def setS21Attenuator(self):
|
||||
|
||||
try:
|
||||
s21att = float(self.s21att.text())
|
||||
except:
|
||||
s21att = 0
|
||||
|
||||
if (s21att < 0):
|
||||
logger.warning("Values for attenuator are absolute and with no minus sign, resetting.")
|
||||
self.s21att.setText("0")
|
||||
else:
|
||||
logger.info("Setting an attenuator of %.2f dB inline with the CH1/S21 input", s21att)
|
||||
self.app.s21att = s21att
|
||||
|
||||
|
||||
|
||||
def setBandSweep(self):
|
||||
index_start = self.band_list.model().index(self.band_list.currentIndex(), 1)
|
||||
index_stop = self.band_list.model().index(self.band_list.currentIndex(), 2)
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue