mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
fix(puresignal): цель feedback 22 для Orion MkII + outlier-фильтр calcc
Разбор «IMD3 хуже, чем в Thetis»: юзерская плата (Orion MkII/Anvelina PRO3) при стоковой цели feedback 152 перегружает входные каскады ADC2208+кодека — фидбек сам интермодулирует, PS корректирует по искажённому наблюдению. Замеры eu2av (Thetis-Enhanced): оптимум FB≈22 при ATT≈10 дБ. - PSFBTarget: цель уровня feedback, авто по плате (board 5 → 22, иначе 152), настройка ps_fb_target (0 = авто) - авто-ATT: пороги от цели (FB > 1.5×цели / FB < 0.7×цели при ATT>0), ddB = 20*log10(FB/цель). Заодно чинит «ATT всегда 0»: старый порог >181 на этой плате никогда не достигался - PSOutlierSigmaEff → SetPSOutlierSigma (новый экспорт libwdsp): MAD- фильтр выбросов перед фитом calcc, авто σ=5.0 для Orion MkII, настройка ps_outlier_sigma (-1 = авто) - лампа FB в поповере: зоны от цели (0.7–1.3× зелёная), подпись «FB: тек/цель» Требует libwdsp с патчами eu2av (форк wdsp, коммит d27684c). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -234,6 +234,12 @@ type
|
||||
PSHWPeak: Double; // SetPk (0.2899 для P2, 0.6121 Saturn)
|
||||
PSTTFreq1: Integer; // Гц — тон 1 двухтональника (700)
|
||||
PSTTFreq2: Integer; // Гц — тон 2 двухтональника (1900)
|
||||
// Калибровка фидбек-тракта (Thetis-Enhanced eu2av): на Orion MkII цель 152
|
||||
// перегружает входные каскады ADC → IMD-«юбка», оптимум FB≈22 при ATT≈10дБ.
|
||||
PSFBTarget: Integer; // цель уровня feedback info[4]; 0 = авто по плате
|
||||
// (Orion MkII → 22, иначе 152)
|
||||
PSOutlierSigma: Double; // σ outlier-фильтра calcc; <0 = авто по плате
|
||||
// (Orion MkII → 5.0, иначе выкл.), 0 = выкл.
|
||||
end;
|
||||
|
||||
// Web-сервер — глобальные настройки (не привязаны к устройству, секция "web").
|
||||
@@ -1214,6 +1220,8 @@ begin
|
||||
T.PSHWPeak := 0.2899;
|
||||
T.PSTTFreq1 := 700;
|
||||
T.PSTTFreq2 := 1900;
|
||||
T.PSFBTarget := 0; // авто по плате
|
||||
T.PSOutlierSigma := -1.0; // авто по плате
|
||||
end;
|
||||
|
||||
function TSettingsManager.LoadTX(const MAC: array of Byte;
|
||||
@@ -1293,6 +1301,8 @@ begin
|
||||
T.PSHWPeak := JD(O,'ps_hw_peak', T.PSHWPeak);
|
||||
T.PSTTFreq1 := JI(O,'ps_tt_freq1', T.PSTTFreq1);
|
||||
T.PSTTFreq2 := JI(O,'ps_tt_freq2', T.PSTTFreq2);
|
||||
T.PSFBTarget := EnsureRange(JI(O,'ps_fb_target', T.PSFBTarget), 0, 256);
|
||||
T.PSOutlierSigma := JD(O,'ps_outlier_sigma', T.PSOutlierSigma);
|
||||
end;
|
||||
|
||||
procedure TSettingsManager.SaveTX(const MAC: array of Byte;
|
||||
@@ -1364,6 +1374,8 @@ begin
|
||||
JW(O,'ps_hw_peak', T.PSHWPeak);
|
||||
JW(O,'ps_tt_freq1', T.PSTTFreq1);
|
||||
JW(O,'ps_tt_freq2', T.PSTTFreq2);
|
||||
JW(O,'ps_fb_target', T.PSFBTarget);
|
||||
JW(O,'ps_outlier_sigma',T.PSOutlierSigma);
|
||||
end;
|
||||
|
||||
class procedure TSettingsManager.DefaultAlex(out A: TAlexSettings);
|
||||
|
||||
Reference in New Issue
Block a user